[site](https://www.redhat.com/en/topics/integration/what-is-event-driven-architecture#:~:text=Event%2Ddriven%20architecture%20is%20a,a%20traditional%20request%2Ddriven%20model)
> Event-driven architecture is a [software architecture](https://www.redhat.com/en/topics/cloud-native-apps/what-is-an-application-architecture) and model for application design. With an event-driven system, the capture, communication, processing, and persistence of events are the core structure of the solution. This differs from a traditional request-driven model.
> Event-driven apps can be created in any programming language because event-driven is a programming approach, not a language. Event-driven architecture enables minimal coupling, which makes it a good option for modern, distributed application architectures.
> An event-driven architecture is loosely coupled because event producers don’t know which event consumers are listening for an event, and the event doesn’t know what the consequences are of its occurrence.
> An event is any significant occurrence or change in state for system hardware or software.
> The source of an event can be from internal or external inputs. Events can generate from a user, like a mouse click or keystroke, an external source, such as a sensor output, or come from the system, like loading a program.
event producers and event consumers - asynchronous processing of events
> [Apache Kafka](https://www.redhat.com/en/topics/integration/what-is-apache-kafka) is a distributed data streaming platform that is a popular event processing choice. It can handle publishing, subscribing to, storing, and processing event streams in real time. Apache Kafka supports a range of use cases where high throughput and scalability are vital, and by minimizing the need for point-to-point integrations for data sharing in certain applications, it can reduce latency to milliseconds.
Architecture models
- pub/sub model
- publishing and subscription
- event streaming model
- events are written to a log
- event consumers require no subscription to read the log; they are able to join the stream whenever they need to
- event stream processing (like [[Apache Kafka]])
- uses data streaming platform
- good at detecting patterns
- simple event processing
- when an event immediately triggers an action in event consumer
- complex event processing
- requires an event consumer to process because of the complexity of the events
Benefits
- flexibility: can adapt to changes
- real-time: especially useful in IoT
- better scalability and responsiveness
`Red Hat. _What is event-driven architecture?_ Accessed in May 2021 from [Red Hat](https://www.redhat.com/en/topics/integration/what-is-event-driven-architecture#:~:text=Event%2Ddriven%20architecture%20is%20a,a%20traditional%20request%2Ddriven%20model).`