Skip to content
Kafka Is FunProgress

AdvancedArchitecture

How would you design a Kafka-based event-driven microservices architecture?

Reference answer

Key design decisions: 1) Topic per domain event type (not one topic per service). 2) Schema Registry + Avro for schema contracts. 3) Each service owns its topics (producer responsibility). 4) Consumer groups per service, never share groups between services. 5) Use Kafka Streams or KSQL for event processing within a service. 6) Implement dead letter topics for failed processing. 7) Use event IDs (UUID in headers) for idempotency. 8) Design for at-least-once delivery with idempotent consumers. 9) Saga pattern for multi-service transactions. 10) Separate internal and external topics (different retention, access control).

Expected key concepts: domain event, Schema Registry, Avro, producer responsibility, consumer groups, Kafka Streams, dead letter, event IDs, idempotency, Saga, internal topics, external topics