Design: Event-driven design system
Design focuses on the core event-driven architecture including event producers, event broker, and event consumers. Out of scope are detailed UI design and specific business logic inside consumers.
Functional Requirements
FR1: The system should allow components to communicate by sending and receiving events asynchronously.
FR2: It must support decoupling between event producers and consumers.
FR3: The system should handle high throughput of events, up to 10,000 events per second.
FR4: Events must be processed in near real-time with p99 latency under 200ms.
FR5: Support for event persistence to allow replay and recovery.
FR6: Allow multiple consumers to subscribe to the same event type.
FR7: Ensure reliable delivery of events with at-least-once semantics.
Non-Functional Requirements
NFR1: System availability target is 99.9% uptime (about 8.77 hours downtime per year).
NFR2: The system should scale horizontally to handle increasing event volume.
NFR3: Event ordering is required only per event type but not globally.
NFR4: Use technologies suitable for low-latency asynchronous communication.