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