You are viewing a snapshot of the in-development Lucille documentation.

This pre-release version reflects the current state of main and may contain unreleased changes.
For the stable release, see the latest version.

Deployment

How to run Lucille in batch, streaming, and hybrid environments.

Choose a deployment mode based on your scale requirements. The same pipeline configuration runs in all modes — switching modes requires only a command-line flag change, not a code change.

ModeWhen to UseCommand
Local BatchDevelopment, small jobs (< millions of docs)java -cp ... com.kmwllc.lucille.core.Runner
Distributed BatchProduction scale-out with multiple workersSeparate Runner, Worker, and Indexer processes
Distributed StreamingContinuous ingestion without a RunnerSeparate Worker and Indexer processes
Hybrid StreamingStreaming with co-located processing and indexingWorkerIndexer processes
Deployment PatternDetails
Docker ComposeQuick distributed setup with all components in containers
KubernetesProduction at scale with CronJobs, Deployments, and HPA
Production OperationsMemory sizing, backpressure, graceful shutdown, monitoring

Local Batch

Running all Lucille components in a single JVM with in-memory queues.

Distributed Batch

Running Lucille components as separate processes communicating via Kafka.

Distributed Streaming

Running Lucille without a Runner for continuous ingestion from Kafka.

Hybrid Streaming

Running WorkerIndexer processes for streaming ingestion with co-located processing and indexing.

Docker Compose

Running Lucille in distributed mode using Docker Compose.

Kubernetes

Deploying Lucille on Kubernetes as CronJobs and scalable pod deployments.

Production Operations

Memory sizing, backpressure, batch tuning, graceful shutdown, monitoring, and the production checklist.