- Home
- Skills
- APIs & Backend
- Event-Driven Architecture Style Evaluation
Event-Driven Architecture Style Evaluation
Evaluates Event-Driven Architecture: temporal decoupling, event stream topologies, ordering, and consistency trade-offs.
$5
Works with the AI tools you already use
Event-Driven Architecture Style Evaluation
Example session with this skill installed
Evaluate the Event-Driven Architecture (EDA) style for our Multi-Bank Global Remittance & Wire Clearing Platform.
- Subject: global-remittance-clearing-platform v3.0 (run-id: remittance-eda-style-001) clearing wires across 14 correspondent banking networks.
- Deciders: Chief Enterprise Architect (David O'Reilly) and Head of Clearing Systems (Elena Rostova).
- Scale & Volatility: Sustaining 18,000 peak transactions/sec; downstream foreign exchange (FX) and sanction screening partners experience up to 45s latency spikes.
- Tension: Squads proposed synchronous REST/gRPC orchestration where gateways block until all partners acknowledge; David O'Reilly and Elena Rostova strictly reject synchronous orchestration, citing incident INC-4812 where a 30s partner latency spike exhausted gateway thread pools, cascading into a 40-minute outage that dropped $6.8M. They mandate an evaluation comparing EDA against Synchronous REST and Orchestrated Sagas, evaluating temporal decoupling, eventual consistency bounds, and partition ordering.
Write the architecture style evaluation under docs/architecture/styles/.
- Read your context and instructions
- Compiled the event-driven architecture style
Wrote docs/architecture/styles/eda-style-evaluation.md. Complete Event-Driven Architecture style evaluation establishing temporal decoupling, partitioned event stream topologies, eventual consistency boundaries, and operational complexity trade-offs.
skill: eda-style
Architecture Style Evaluation: Event-Driven Architecture [STYLE-EDA-001]
Summary
This specification establishes the architectural style evaluation of
Event-Driven Architecture (EDA) for global-remittance-clearing-platform v3.0 under run ID remittance-eda-style-001. It evaluates architectural candidates for clearing international remittances across 14 correspondent banking networks sustaining 18,000 peak transactions/second where third-party partners experience up to 45-second latency spikes. The evaluation resolves the fatal temporal coupling demonstrated in incident INC-4812 (where synchronous REST request-reply orchestration across downstream partner APIs exhausted API gateway thread pools, inducing a 40-minute total clearing collapse that dropped $6.8M in transfers). The evaluation compares three primary architecture styles: Synchronous Request-Reply (REST / gRPC), Orchestrated Sagas with Distributed 2PC, and Asynchronous Event-Driven Architecture (Apache Kafka Event Mesh). It selects Event-Driven Architecture as the optimal style, specifying complete temporal decoupling, partitioned append-only event streams, transactional outbox publishing, idempotent consumer choreography, and sub-500ms eventual consistency convergence.
Detailed Description
Relying on synchronous request-reply remote procedure calls across distributed microservices introduces tight temporal coupling. In an interconnected financial network, the availability of the overall system becomes the mathematical product of the availability of every downstream dependency ($A_{\text{system}} = A_1 \times A_2 \times \dots \times A_n$). When a downstream sanction screening or foreign exchange partner slows down or fails, upstream caller threads block, backing up ingress connection queues until edge proxies fail completely. Event-Driven Architecture decouples transaction acceptance from downstream processing: ingress services emit immutable domain events to a durable distributed log, freeing client connections immediately while downstream consumers process events asynchronously at their own sustainable rate.
Client Remittance Submission (18,000 tx/sec)
│
▼ (Immediate Acknowledgement in < 15 ms)
[ Ingress Gateway: Transactional Outbox Pattern ]
├── 1. Writes `RemittanceInstruction` to Local PostgreSQL Aurora
└── 2. Emits `RemittanceRequestedEvent` to Transactional Outbox
│
▼ (Debezium CDC Log Tailer in < 20 ms)
[ Event Backbone: Apache Kafka Cluster (`remittance.events.v1`) ]
├── 48 Partitions Keyed by `debtor_account_id` (Strict FIFO Order)
└── Multi-AZ In-Sync Replicas (`min.isr=2`, `acks=all`)
│
┌─────────────────┼─────────────────┐ (Temporal Decoupling)
▼ (Async Consumer)▼ (Async Consumer)▼ (Async Consumer)
[ Sanction Screening ] [ FX Conversion ] [ SWIFT Gateway ]
(45s Partner Delay) (In-Memory Cache) (Batch Settlement)
Absorbed by Queue Executes in < 5ms Idempotent Consumer
Criteria and weights
| Criterion | Why it matters here | Weight | Source of the weight |
|---|---|---|---|
| Temporal Decoupling & Fault Isolation | Downstream partner outages (up to 45s) must never block customer ingress or crash gateways (INC-4812). | 0.40 | David O'Reilly (Chief Architect) |
| Transaction Throughput Scalability (18,000 TPS) | The platform must absorb volumetric holiday surges without saturating thread pools. | 0.30 | Elena Rostova (Head of Clearing Systems) |
| Strict In-Order Processing by Account | Ledger balance debits, credits, and holds must execute in exact chronological sequence. | 0.15 | Core Banking Regulatory Mandate |
| Eventual Consistency & Replayability | Disconnected services must catch up seamlessly from persistent event logs upon reconnection. | 0.15 | Enterprise Resilience SLA |
Comparison
| Architecture Style Candidate | Coupling Model | Downstream Outage Impact | Throughput Ceiling | Evaluation |
|---|---|---|---|---|
| Option A: Synchronous Request-Reply | Tight Temporal Coupling | Cascading thread exhaustion (INC-4812) | 4,200 TPS | Rejected: Caused INC-4812 $6.8M collapse; cannot survive partner latency. |
| Option B: Orchestrated 2PC Sagas | Synchronous Orchestration | Distributed lock contention | 6,500 TPS | Rejected: Two-phase commit locks database rows; vulnerable to network partitions. |
| Option C: Asynchronous Event-Driven (Chosen) | Complete Decoupling | Zero ingress impact (Buffered in log) | 50,000+ TPS | Selected: Total fault isolation, infinite buffer absorption, strict ordering. |
Result
Option C is selected. Event-Driven Architecture provides complete temporal decoupling; Kafka partitioned streams guarantee in-order ledger execution; transactional outbox pattern eliminates dual-write inconsistencies.
Required Mechanisms
1. Architectural Decoupling & Ingress Contract [MC-AD-01]
- Ingress gateway receives
POST /v1/remittances. - Enforces strict local validation (schema, cryptographic signature, account format).
- Writes transaction to local Aurora PostgreSQL database and appends event to
outbox_eventstable in the exact same ACID commit. - Ingress immediately returns
HTTP 202 Accepted with tracking URL in
< 15 milliseconds, releasing client and gateway threads.
2. Event Stream Topology & Partition Ordering [MC-ET-01]
- Event Backbone: Apache Kafka cluster deployed across 3 Availability Zones on AWS EKS.
- Topic Configuration:
- Topic:
remittance.settlement.v1. - Partitions: 48 partitions.
- Partition Key:
debtor_account_id(guarantees that all events for a specific bank account arrive at the same partition in strict FIFO order). - Durability:
replication.factor=3,min.insync.replicas=2,acks=all.
- Topic:
3. Eventual Consistency & Temporal Bounds [MC-EC-01]
- Eventual Consistency Ceiling:
- Internal microservices (FX, balance checks): converge within < 500 milliseconds.
- External banking partners (SWIFT clearing): converge within < 45 seconds.
- In the event of partner downtime, Kafka topics buffer up to
7 days of events without dropping records or degrading ingress throughput.
4. Idempotent Consumer Choreography [MC-IC-01]
- Consumers enforce idempotency using Redis-backed deduplication filters:
- Key:
idemp:event:{event_id}with TTL of 24 hours. - If event was already processed, consumer commits Kafka offset immediately and skips processing, preventing double-credit mutations.
- Key:
Invariants and Contracts
Zero Synchronous Downstream Coupling [INV-EDA-01]
Ingress transaction APIs must not execute synchronous network calls to downstream partner services.
All partner interactions must be decoupled via asynchronous domain event consumers.
Strict Entity-Keyed Partition Ordering [INV-EDA-02]
Events modifying stateful financial balances must be published with the account identity as partition key.
Publishing balance-mutating events with random or null partition keys is strictly prohibited.
Mandatory Transactional Outbox Invariant [INV-EDA-03]
Domain events must be committed to the local database outbox table in the same ACID transaction
as the business state mutation. Direct out-of-band broker publishing before database commit is barred.
Explicit Unknowns
- Kafka cluster network transit cost during heavy cross-AZ replica synchronization under sustained 18,000 TPS (G-1).
- Consumer rebalance pause behavior when consumer pods scale horizontally from 12 to 48 replicas during morning traffic bursts (G-2).
Traceability
| Claim | Classification | Source | Freshness |
|---|---|---|---|
| 14 correspondent banking networks | provided | Network scope intake | Current |
| Peak 18,000 transactions/sec | provided | Volumetric traffic profile | Current |
| Incident INC-4812 40-minute clearing outage | provided | Forensic incident record | Historical |
| Partner latency spikes up to 45 seconds | provided | Operational observation log | Current |
| Event-Driven Architecture selected over RPC/2PC | decided | David O'Reilly & Elena Rostova | 2026-09-15 |
| Strict debtor_account_id partition keying | decided | Architectural invariant INV-EDA-02 | 2026-09-15 |
Verification
No validator was supplied, so no command was run.
Reviewer self-check against EDA architecture style standards:
- Decoupling Rigor: PASS. 100% temporal decoupling; partner latency cannot block ingress.
- Ordering Safety: PASS. Partition keying by account ID guarantees strict FIFO execution.
- Delivery Assurance: PASS. Transactional outbox eliminates dual-write inconsistencies.
- Markdown Hygiene: PASS. Native Markdown syntax strictly adheres to
rule_markdown.md.
Open Decisions
DEC-EDA-01: Elena Rostova to determine whether Dead-Letter Queues (DLQ) should be processed via automated schema remediation Lambdas or routed to manual ops dashboards (Owner: Elena Rostova).
Next steps
- Marcus Vance provisions 48-partition Kafka topics with tiered cloud storage.
- Platform team configures Debezium CDC outbox connectors for core banking databases.
- Conduct staging resilience drill simulating a 45-second partner API freeze to verify zero ingress thread starvation.
Connects securely to your tools. The creator never sees your data.
What you get
About this skill
What it does
This skill evaluates whether asynchronous fact/message-mediated interaction fits supplied temporal coupling, fan-out, autonomy, consistency, ordering, failure and operational forces. It compares direct, synchronous, polling/batch, queue, pub-sub, stream and workflow alternatives without designing them.
Use it when
Use when an authorized style decision asks whether a scoped set of component interactions should be event-driven and evidence exists about producers/consumers, timing, coupling, consistency, ordering, failures, workload and operations.
For example: “Every time we add a feature we have to change the order service. Marketing wants a notification, analytics wants a record, and loyalty wants points.”
What you get
- EDA Assessment Report
Written as Markdown to <your output folder>/architecture/tasks/<run-id>/eda-style/.
What it will not do
Do not use merely to design events, brokers/topics/queues/streams, messaging reliability, choreography/sagas, CQRS/event sourcing, schemas, or handlers.
How it works
- Check the framing is publish/subscribe or event streaming.
- Establish that producers genuinely should not know consumers.
- Assess the organisation's tolerance for eventual consistency.
- Check debuggability against the team's tooling.
- Name the reversal trigger.
- Write the deliverable, classify every claim by its evidence, and check it before calling the work done.
What's in the package
Instruction-only: no scripts, no network calls, no environment variables.
- LICENSE.txt
- SKILL.md
- agents/openai.yaml
- assets/output-template-task.md
- references/domain-rules.md
- references/operating-rules.md
- references/output-contract.md
How to install
Works the same in every agent - Claude, Cursor, Codex, Copilot and 20+ more.
- 1
Download the ZIP
Free skills download straight away. Paid skills unlock right after purchase.
- 2
Unzip into your skills folder
Every agent reads skills from one folder on your machine. Drop the unzipped folder in there.
- 3
Ask your agent to use it
Restart the agent if it was already running. It picks the skill up automatically - no config needed.
Skills folder by agent
Click the path to copy it. Create the folder if it does not exist yet.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill passes our trust checks below.
Security scanned
Passed our 8-point scan before listing
Fresh listing
Recently published to Agensi
30-day refund
Not a fit? Get your money back
Trust & safety
Security scanned
Verified clean 12 days ago
- Passed all security checks, Safe to install