architecture-paradigm-event-driven · git:20260921.ad5ceb4 · 2026-09-21 · sha256 6f7cf766c90f88bc
architecture-paradigm-event-driven git:20260921.ad5ceb4A
Immutable. This exact content never changes and is served at /api/v1/blob/6f7cf766c90f88bc.
--- name: architecture-paradigm-event-driven description: Applies event-driven async messaging to decouple producers and consumers. Use when designing real-time or multi-subscriber systems needing loose coupling. alwaysApply: false category: architectural-pattern tags: - architecture - event-driven - asynchronous - decoupling - scalability - resilience dependencies: [] tools: [] usage_patterns: - paradigm-implementation - real-time-processing - system-extensibility complexity: high model_hint: deep estimated_tokens: 800 --- # The Event-Driven Architecture Paradigm ## When To Use - Building async, loosely-coupled systems - Systems with complex event processing pipelines ## When NOT To Use - Simple request-response applications without async needs - Systems requiring strong transactional consistency ## When to Employ This Paradigm - For real-time or bursty workloads (e.g., IoT, financial trading, logistics) where loose coupling and asynchronous processing are beneficial. - When multiple, distinct subsystems must react to the same business or domain events. - When system extensibility is a high priority, allowing new components to be added without modifying existing services. ## Adoption Steps 1. **Model the Events**: Define canonical event schemas, establish a clear versioning strategy, and assign ownership for each event type. 2. **Select the Right Topology**: For each data flow, make a deliberate choice between choreography (e.g., a simple pub/sub model) and orchestration (e.g., a central controller or saga orchestrator). 3. **Engineer the Event Platform**: Choose the appropriate event brokers or message meshes. Configure critical parameters such as message ordering, topic partitions, and data retention policies. 4. **Plan for Failure Handling**: Implement production-grade mechanisms for handling message failures, including Dead-Letter Queues (DLQs), automated retry logic, idempotent consumers, and tools for replaying events. 5. **Instrument for Observability**: Implement detailed monitoring to track key metrics such as consumer lag, message throughput, schema validation failures, and the health of individual consumer applications. ## Key Deliverables - An Architecture Decision Record (ADR) that documents the event taxonomy, the chosen broker technology, and the governance policies (e.g., for naming, versioning, and retention). - A centralized schema repository with automated CI validation and consumer-driven contract tests. - Operational dashboards for monitoring system-wide throughput, consumer lag, and DLQ depth. ## Risks & Mitigations - **Hidden Coupling through Events**: - **Mitigation**: Consumers may implicitly depend on undocumented event semantics or data fields. Publish a formal event catalog or schema registry and use linting tools to enforce event structure. - **Operational Complexity and "Noise"**: - **Mitigation**: Without strong observability, diagnosing failed or "stuck" consumers is extremely difficult. Enforce the use of distributed tracing and standardized alerting across all event-driven components. - **"Event Storming" Analysis Paralysis**: - **Mitigation**: While event storming workshops are valuable, they can become unproductive if not properly managed. Keep modeling sessions time-boxed and focused on high-value business contexts first. ## Concrete Components Vocabulary for the tools and abstractions an implementation of this paradigm tends to carry. Not dependencies, and not ``tools:`` frontmatter. - ``message-broker``: Kafka, NATS, RabbitMQ; the durable channel between producers and consumers - ``event-stream-processor``: Flink, Faust, or similar; consumes streams and emits derived events - ``distributed-tracing``: OpenTelemetry-style correlation IDs across asynchronous hops ## Exit Criteria - [ ] An ADR is produced documenting the event taxonomy, chosen broker technology, naming conventions, versioning policy, and data retention settings. - [ ] A centralized schema repository or registry exists with CI validation that blocks unregistered event schemas from reaching production. - [ ] Dead-Letter Queue (DLQ) configuration and retry policy are specified for every consumer before any consumer is deployed. - [ ] Observability dashboards cover at minimum: consumer lag, message throughput, schema validation failure rate, and DLQ depth.