I put a real search engine into a Lambda, so you only pay when you search
10 hours ago
- #AWS Lambda
- #Serverless
- #Search Engine
- The article discusses the challenges and process of embedding a Lucene-based JVM search engine into an AWS Lambda function.
- Key challenges include container size, startup time, and handling index and state in a serverless environment.
- The author uses GraalVM native-image to compile the JVM application into a native binary, reducing size and eliminating JVM warmup.
- Different approaches to storing the index are explored, including S3, EFS, and baking the index into the Docker image.
- Performance metrics show cold-start times of ~600ms and warm request times as low as 3ms.
- The article highlights the limitations of AWS Lambda, such as RAM, vCPU, and disk constraints.
- A tech demo is mentioned, showcasing a web front-end with server and client-side latency breakdowns.
- The author explores alternatives to HNSW for better performance on S3, such as IVF, but notes trade-offs in recall.
- Future plans include implementing concurrent IO for HNSW to improve search latency on S3.
- The article concludes with a summary of learnings and an invitation to try Nixiesearch.