Design: Event-Driven Microservices Communication
Focus on communication patterns between microservices using events. Out of scope: detailed implementation of each microservice business logic.
Functional Requirements
FR1: Services should communicate without tight dependencies
FR2: Allow independent deployment and scaling of services
FR3: Ensure services can evolve without breaking others
FR4: Support asynchronous communication for better performance
FR5: Handle failures gracefully without cascading errors
Non-Functional Requirements
NFR1: Must support at least 10,000 events per second
NFR2: Event delivery latency should be under 100ms p99
NFR3: System availability target of 99.9%
NFR4: Event ordering is not strictly required but eventual consistency is expected