Présentation
Une architecture orientée événements est un modèle d'architecture logicielle utilisé pour la conception d'applications. Dans un système orienté événements, la structure centrale de la solution repose sur la capture, la communication, le traitement et la persistance des événements. C'est ce qui différencie ce type de système du modèle traditionnel orienté requêtes.
De nombreuses applications modernes sont conçues sur la base d'une architecture orientée événements, comme les modèles d'engagement client qui nécessitent l'utilisation de données sur les clients en temps réel. Les applications orientées événements peuvent être créées à l'aide de n'importe quel langage de programmation, car l'architecture orientée événements est une approche et non un langage. Cette approche permet un faible couplage. Elle est donc adaptée aux architectures d'applications modernes distribuées.
Une architecture orientée événements est faiblement couplée parce que les producteurs d'événements ignorent quels consommateurs d'événements écoutent un événement et que chaque événement ignore les conséquences de son apparition.
Définition d'un événement ?
Un événement désigne tout phénomène ou changement d'état significatif au niveau du matériel ou d'un logiciel système. Il ne faut pas confondre un événement et une notification d'événement, c'est-à-dire une notification ou un message envoyé par le système pour signaler à une autre partie du système qu'un événement s'est produit.
Les événements peuvent être causés par des actions internes ou externes. Ils peuvent être provoqués par des utilisateurs (clics de souris ou frappe sur le clavier, par exemple), provenir d'une source externe (un capteur) ou être générés par le système (lors du chargement d'un programme, par exemple).
Fonctionnement d'une architecture orientée événements
Ce type d'architecture implique des producteurs et des consommateurs d'événements. Un producteur d'événements détecte ou reconnaît un événement et le représente sous forme de message. Il ignore quels seront les consommateurs et les conséquences de chaque événement.
Lorsqu'un événement a été détecté, il est transmis du producteur d'événements au consommateur via des canaux d'événement, où une plateforme de traitement le prend en charge de façon asynchrone. Les consommateurs d'événements doivent être informés lorsqu'un événement se produit. Ils peuvent traiter l'événement ou être seulement affectés par ce dernier.
La plateforme de traitement des événements exécute la réponse adaptée à chaque événement et envoie l'activité en aval aux consommateurs concernés. Cette activité permet de visualiser le résultat d'un événement.
Apache Kafka est une plateforme distribuée de diffusion de données fréquemment utilisée pour le traitement des événements. Elle peut gérer la publication, le stockage et le traitement de flux d'événements en temps réel, ainsi que l'abonnement à ces événements. Apache Kafka prend en charge de nombreux cas d'utilisation différents pour lesquels un débit élevé et une bonne évolutivité sont essentiels. En réduisant au minimum la nécessité d'intégrations point à point pour le partage des données dans certaines applications, cette plateforme peut réduire la latence à quelques millisecondes seulement.
Il existe d'autres gestionnaires d'événements de type middleware qui peuvent servir de plateforme de traitement des événements.
Modèles d'architectures orientées événements
Une architecture orientée événements peut être basée sur un modèle de publication/abonnement ou sur un modèle de flux d'événements.
Modèle de publication/abonnement
Ce modèle est une infrastructure de messagerie basée sur des abonnements à des flux d'événements. Lorsqu'il est utilisé, chaque fois qu'un événement se produit ou est publié, il est envoyé aux abonnés qui doivent en être informés.
Modèle de flux d'événements
Avec un modèle de flux d'événements, les événements sont enregistrés dans un journal. Au lieu d'être abonnés à un flux d'événements, les consommateurs d'événements peuvent accéder à n'importe quelle partie du flux et le rejoindre à tout moment.
Il existe différents types de flux d'événements :
- Le traitement des flux d'événements s'appuie sur une plateforme de diffusion de données en continu, telle qu'Apache Kafka, pour ingérer des événements et des processus, voire transformer le flux d'événements. Le traitement des flux d'événements peut permettre d'y détecter des tendances importantes.
- Le traitement des événements simples correspond aux cas où un événement déclenche immédiatement une action au niveau du consommateur d'événements.
- Le traitement des événements complexes oblige un consommateur d'événements à traiter une série d'événements afin de détecter des schémas récurrents.
Avantages d'une architecture orientée événements
Avec une architecture orientée événements, les entreprises peuvent se doter d'un système flexible capable de s'adapter aux changements et prendre des décisions en temps réel. L'évaluation de la situation en temps réel signifie que les décisions métier, qu'elles soient manuelles ou automatisées, peuvent être prises en exploitant toutes les données disponibles qui reflètent l'état actuel des systèmes.
Les événements sont capturés régulièrement à partir de sources d'événements telles que des périphériques IoT, des applications et des réseaux. Les producteurs et les consommateurs d'événements peuvent ainsi partager en temps réel les informations d'état et de réponse.
Les entreprises peuvent ajouter une architecture orientée événements à leurs systèmes et applications pour améliorer l'évolutivité et la réactivité de leurs applications, ainsi que pour accéder aux données et au contexte qui leur permettent de prendre des décisions éclairées.
Red Hat, un partenaire de choix en matière d'intégration agile
Aujourd'hui, les architectures d'applications cloud-native faiblement couplées et les architectures orientées événements, développées selon des méthodes agiles et des principes DevOps, exigent une approche de l'intégration tout aussi évolutive et agile.
Chez Red Hat, nous voyons l'intégration agile comme une stratégie de connexion des ressources qui allie des technologies d'intégration, des techniques de distribution agile et des plateformes cloud-native dans le but d'accélérer la distribution des logiciels tout en renforçant la sécurité.
Nous vous proposons des plateformes d'intégration et des logiciels de gestion qui vous permettent de connecter rapidement les technologies et microservices existants dans des environnements de cloud hybride et prennent en charge votre architecture orientée événements grâce à l'intégration agile.