Event-driven architecture separating writes and reads via Kafka.
Write path: client1 hits the Write API → persists to Write DB → publishes event to Kafka. Sync path: Sync service consumes Kafka events → updates Read DB. Read path: client2 hits the Read API → queries Read DB only.
| Component | Technology |
|---|---|
| APIs & Sync | Go |
| Message Bus | Kafka latest (KRaft) |
| Write DB | PostgreSQL 16 (port 5432) |
| Read DB | PostgreSQL 16 (port 5433) |
docker compose up -dNote: Use
apache/kafka:latest, notbatnami. Note: SetKAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092for inter-container communication.
.
├── docker-compose.yml
├── write-api/ # Kafka producer + Write DB
├── sync-worker/ # Kafka consumer → Read DB
├── read-api/ # Read DB queries
└── k8s/ # Kubernetes manifests
- Infrastructure (Docker Compose, Kafka, PostgreSQL ×2)
- Write API
- Sync Worker
- Read API
- Kubernetes deployment
