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