* [Topics](/en/topics "Topics")
* [Integration](/en/topics/integration "Integration")
* What is event-driven architecture?
What is event-driven architecture?
==================================
Published  September 27, 2019•*4*-minute read
Copy URL
Jump to section
---------------
OverviewWhat's an event?Decoupling vs. loose couplingHow does event-driven architecture work?Event-driven architecture modelsBenefits of event-driven architectureWhy choose Red Hat for event-driven architecture?
Overview
--------
Event-driven architecture is a [software architecture](/en/topics/cloud-native-apps/what-is-an-application-architecture) and model for application design. An event-driven system is designed to capture, communicate, and process events between decoupled services. This means that systems can remain asynchronous while still sharing information and accomplishing tasks.
Many modern application designs are event-driven, such as [customer engagement frameworks](/en/solutions/customer-experience) that must utilize customer data in real time. 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 EDA 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.
[Learn about event-driven automation](/en/topics/automation/what-is-event-driven-automation "article | What is event-driven automation?")
What's an event?
----------------
An event acts as a record of  any significant occurrence or change in state for system hardware or software. An event is not the same as an event notification, which is a message or notification sent by the system to notify another part of the system that an event has taken place.  
The source of an event can be from internal or external inputs. Events can be generated 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.
Recommended for you
Event driven security automation with Red Hat and F5
----------------------------------------------------
[Watch the webinar](https://www.redhat.com/en/events/webinar/event-driven-security-automation-with-redhat-and-f5?percmp=RHCTG0250000455235)
Decoupling vs. loose coupling
-----------------------------
Decoupling and loose coupling refer to two related but distinct concepts within software architecture and event-driven systems.  
Decoupling is the practice of eliminating or minimizing direct dependencies between separate components within a system, so that no one component must rely on another. In the context of EDA, decoupling is achieved by making sure that the components generating events are sending event data without a particular consumer component in mind. This disconnection allows for components to be independent and creates a more flexible system overall.  
Loose coupling is a specific form of decoupling that aims to reduce the degree of interdependence between components, but not separate them completely. In a loosely coupled system, components may interact with one another but do so in a way that doesn’t create any form of reliance.  
Both systems promote flexibility and independence, which in turn create systems that are both agile and scalable.
How does event-driven architecture work?
----------------------------------------
Event-driven architecture is made up of event producers (publishers) and event consumers (subscribers). An event producer detects or senses an event and represents the event as a message. Because of decoupling, it does not know the consumer of the event, or the outcome of an event.  
After an event has been detected, it is transmitted from the event producer to the event consumers through event channels, where an event processing platform processes the event in an asynchronous way. Event consumers need to be informed when an event has occurred. They might process the event or may only be impacted by it.  
The event processing platform will execute the correct response to an event and send the activity downstream to the right consumers. This downstream activity is where the outcome of an event is seen.  
[Apache Kafka](/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.  
There are other middleware event managers available that can serve as an event processing platform.
Event-driven architecture models
--------------------------------
An event driven architecture may be based on either a pub/sub model or an event stream model.  
**Pub/sub model**  
This is a messaging infrastructure based on subscriptions to an event stream. With this model, after an event occurs, or is published, it is sent to subscribers that need to be informed.  
**Event streaming model**  
With an event streaming model, events are written to a log. Event consumers don’t subscribe to an event stream. Instead, they can read from any part of the stream and can join the stream at any time.  
There are a few different types of event streaming:
* Event stream processing uses a data streaming platform, like Apache Kafka, to ingest events and process or transform the event stream.
* Simple event processing is when an event immediately triggers an action in the event consumer.
Complex event processing requires an event consumer to process a series of events in order to detect patterns. Event stream processing can be used to detect meaningful patterns in event streams.
Benefits of event-driven architecture
-------------------------------------
An EDA can help organizations achieve a flexible system that can improve workflows by adapting to changes and making decisions in real time. Real time situational awareness means that business decisions, whether manual or automated, can be made using all of the available data that reflects the current state of your systems.  
Events are captured as they occur from event sources such as [Internet of Things (IoT)](/en/topics/internet-of-things/what-is-iot) devices, applications, and networks, allowing event producers and event consumers to share status and response information in real time.  
Organizations can add event-driven architecture to their systems and applications to improve the scalability and responsiveness of applications and access to the data and context needed for better business decisions.  
Event-driven architecture offers the advantage of decoupling, where producers and consumers of data or services do not need to communicate directly, allowing for a more flexible and scalable system. This in turn simplifies the integration of new components, promotes fault tolerance, and enhances the overall efficiency of the system
Why choose Red Hat for event-driven architecture?
-------------------------------------------------
Red Hat provides the integrated tooling and management software that let you rapidly connect legacy technologies and [microservices](/en/topics/microservices/what-are-microservices) across [hybrid cloud environments](/en/topics/cloud-computing/what-is-hybrid-cloud), and support your event-driven architecture with agile integration.  
Red Hat OpenShift, along with [Red Hat Application Foundations](/en/products/application-foundations)’ set of tools, helps organizations improve [developer productivity](/en/products/developer-productivity), automate the CI/CD pipelines, and shift their security efforts earlier and throughout the development cycle. This enables a more secure software supply chain by automating DevSecOps practices while providing application security at runtime.  
[OpenShift Dev Spaces](https://developers.redhat.com/products/openshift-dev-spaces/overview) capability provides developers with a faster, consistent, and more reliable development environment, and gives IT operations centralized control. OpenShift capabilities such as Serverless and [Service Mesh](/en/technologies/cloud-computing/openshift/what-is-openshift-service-mesh), and Red Hat Application Services capabilities such as application runtimes and frameworks, API management, data streaming, and event-driven services, [empowers developers](https://developers.redhat.com/app-dev-platform#developer) with self-service access to the languages and tooling and improves their productivity. If developers have a specific tool of choice, Red Hat offers access to a vast ecosystem of partner solutions compatible with OpenShift.
[Continue reading about Red Hat’s approach to integration](/en/topics/integration/why-choose-red-hat-integration "Why choose Red Hat for agile integration?")
Recommended for you
E-book
Observability and Event-Driven Ansible
--------------------------------------
Event-driven automation works with existing observability tools to respond to issues in an automated way. Learn more about Event-Driven Ansible today.
[Read the e-book](https://www.redhat.com/en/engage/observability-and-event-driven-ansible?percmp=RHCTG0250000455234)
Recommended for you
Developing Event-Driven Applications with Apache Kafka and Red Hat AMQ Streams
------------------------------------------------------------------------------
Develop, scale, and troubleshoot event-driven microservice applications.
[View course](https://www.redhat.com/en/services/training/ad482-developing-event-driven-applications-apache-kafka-and-red-hat-amq-streams?percmp=RHCTG0250000455236)
Keep reading
------------
### What is a service mesh?
Read this article to find out more about what a service mesh is, how it works, and the benefits and challenges of implementing a service mesh.
[Read the article](/en/topics/microservices/what-is-a-service-mesh "article | what is a service mesh?")
### What is application integration?
Application integration connects different systems and applications by enabling them to work together through exchanging data and using services.
[Read the article](/en/topics/cloud-native-apps/application-integration "article | What is application integration")
### What is middleware?
Middleware is software that provides common services and capabilities to applications outside of what’s offered by the operating system.
[Read the article](/en/topics/middleware/what-is-middleware "article | what is middleware")
Integration resources
---------------------
### Related content
* Case study
  [HCA Healthcare develops predictive analytics using Red Hat software](/en/resources/hca-healthcare-case-study)
* Blog post
  [Evolving our ServiceNow integration: Sunsetting the Notification Service for more capable alternatives](/en/blog/evolving-our-servicenow-integration-sunsetting-notification-service-more-capable-alternatives)
* Case study
  [GSE and Blaze transform the electricity market with OpenShift](/en/resources/georgian-state-electrosystem-and-blaze-case-study)
* Blog post
  [Beyond the horizon: Navigating the bridge between today's tech and tomorrow's AI](/en/blog/beyond-horizon-navigating-bridge-between-todays-tech-and-tomorrows-ai)
### Related articles
* [What is a service mesh?](/en/topics/microservices/what-is-a-service-mesh)
* [What is application integration?](/en/topics/cloud-native-apps/application-integration)
* [What is middleware?](/en/topics/middleware/what-is-middleware)
* [What is Apache Kafka?](/en/topics/integration/what-is-apache-kafka)
* [Why choose Red Hat for middleware?](/en/topics/middleware/why-choose-red-hat-middleware)
* [What is an API?](/en/topics/api/what-are-application-programming-interfaces)
* [Red Hat OpenShift application services](/en/technologies/cloud-computing/openshift/application-services)
* [What is an independent software vendor (ISV)?](/en/topics/digital-transformation/isv-partners)
* [What is a Kafka service?](/en/topics/integration/what-is-a-kafka-service)
* [What is streaming data?](/en/topics/integration/what-is-streaming-data)
* [Do banking APIs benefit from cloud technology?](/en/topics/api/banking-api)
* [What is a service registry?](/en/topics/integration/what-is-a-service-registry)
* [What is an event mesh?](/en/topics/integration/what-is-an-event-mesh)
* [How microservices support IT integration in healthcare](/en/topics/microservices/microservices-in-healthcare)
* [What is change data capture?](/en/topics/integration/what-is-change-data-capture)
* [Why Red Hat for APIs?](/en/topics/api/why-choose-red-hat-apis)
* [What is service-oriented architecture?](/en/topics/cloud-native-apps/what-is-service-oriented-architecture)
* [What is the Kubernetes API?](/en/topics/containers/what-is-the-kubernetes-api)
* [What is a REST API?](/en/topics/api/what-is-a-rest-api)
* [What is API monetization?](/en/topics/api/what-is-api-monetization)
* [REST vs. SOAP](/en/topics/integration/whats-the-difference-between-soap-rest)
* [Why choose Red Hat for integration?](/en/topics/integration/why-choose-red-hat-integration)
* [What is GraphQL?](/en/topics/api/what-is-graphql)
* [What does an API gateway do?](/en/topics/api/what-does-an-api-gateway-do)
* [What is API design?](/en/topics/api/what-is-api-design)
* [What is API management?](/en/topics/api/what-is-api-management)
* [What is API security?](/en/topics/security/api-security)
* [What is integration?](/en/topics/integration/what-is-integration)
[More about this topic](/en/topics/integration "More about this topic")