Event-Driven Microservices

Producers, Kafka topics, and consumers — decoupled at scale

graph LR classDef yellow fill:#FFFDE7,stroke:#1A1A1A,stroke-width:2px; classDef blue fill:#E3F2FD,stroke:#1A1A1A,stroke-width:2px; classDef green fill:#E8F5E9,stroke:#1A1A1A,stroke-width:2px; classDef purple fill:#F3E5F5,stroke:#1A1A1A,stroke-width:2px; classDef teal fill:#E0F7FA,stroke:#1A1A1A,stroke-width:2px; classDef orange fill:#FFF3E0,stroke:#1A1A1A,stroke-width:2px; classDef note fill:#FFF9C4,stroke:#FBC02D,stroke-dasharray:4; subgraph Producers ["Event Producers"] OrderSvc[Order Service]:::yellow PaymentSvc[Payment Service]:::yellow UserSvc[User Service]:::yellow end subgraph Bus ["Event Bus — Kafka"] OrderTopic[orders]:::orange PaymentTopic[payments]:::orange UserTopic[users]:::orange end subgraph Consumers ["Event Consumers"] NotifSvc[Notification Service]:::blue InventorySvc[Inventory Service]:::blue AnalyticsSvc[Analytics Service]:::blue SearchSvc[Search Indexer]:::blue end subgraph Storage ["Storage"] DB[(PostgreSQL)]:::green Cache[(Redis)]:::teal SearchIdx[(Elasticsearch)]:::green end OrderSvc --> OrderTopic PaymentSvc --> PaymentTopic UserSvc --> UserTopic OrderTopic --> NotifSvc & InventorySvc & AnalyticsSvc PaymentTopic --> NotifSvc & AnalyticsSvc UserTopic --> NotifSvc & SearchSvc NotifSvc --> Cache InventorySvc --> DB AnalyticsSvc --> DB SearchSvc --> SearchIdx