Event-Driven Architecture
Definition
Event-driven architecture is a distributed systems style where components communicate through events rather than tight synchronous request chains. A service emits an event when something happens, and other components react to that event asynchronously.
Core Ideas
- producers emit events when state changes occur
- consumers subscribe to or poll for events and react independently
- components are loosely coupled in time and implementation
- messaging infrastructure handles buffering, retries, routing, and fan-out
Common Building Blocks
- event buses such as EventBridge
- queues such as SQS
- pub/sub topics such as SNS
- stream systems such as Kinesis
- orchestrators such as Step Functions when sequencing is needed
Benefits
- decouples services
- improves elasticity under bursty workloads
- enables fan-out to multiple downstream consumers
- fits naturally with serverless systems
Trade-Offs
- harder debugging and tracing across asynchronous boundaries
- eventual consistency instead of immediate synchronization
- duplicate delivery means consumers must often be idempotent
- schema and contract evolution become important
Relationships
- Serverless — serverless platforms often use event triggers as their execution model
- API Gateway — HTTP requests can enter a system through API Gateway and then become events
- Serverless on AWS — AWS provides queues, topics, buses, and workflow services for event-driven systems
- Microservices — event-driven communication is a common way to reduce microservice coupling
References
- AWS SAP C02
- Architecting Serverless Solutions on AWS