[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).`