**Event-Driven Architecture**: A design pattern where services communicate by emitting and responding to events asynchronously. **Key Components**: * **Event Producer**: Generates events (e.g., a user uploads a file). * **Event Consumer**: Listens and reacts to events (e.g., a service processes the uploaded file). * **Message Broker**: Facilitates event delivery (e.g., Kafka, RabbitMQ). **When to Use**: * Applications needing real-time updates (e.g., chat apps, stock trading platforms). * Decoupled microservices to enhance scalability and maintainability. * Workflows with asynchronous tasks (e.g., order processing).