Une architecture orientée événements, qu'est-ce que c'est ?

Publié 27 septembre 20195 minutes (temps de lecture)
Copier l'URL

Présentation

Une architecture orientée événements est un modèle d'architecture logicielle utilisé pour la conception d'applications. Un système orienté événements est conçu pour capturer, communiquer et traiter les événements entre des services dissociés. Les systèmes peuvent ainsi rester asynchrones tout en partageant des informations et en accomplissant des tâches.

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 tout langage de programmation, car l'architecture orientée événements est une approche et non un langage. Une architecture orientée événements offre un couplage limité, ce qui en fait une bonne option pour les architectures d'applications modernes et 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.

En savoir plus sur l'automatisation orientée événements

Définition d'un événement

Un événement permet de consigner toute occurrence ou tout changement d'état significatif du matériel ou des logiciels système. Un événement n'est pas une simple notification d'événement, qui est un message ou une notification qu'envoie le système pour informer une autre partie du système qu'un événement a eu lieu.

Un événement peut avoir comme source des entrées internes ou externes. Les événements peuvent être générés par un utilisateur (par exemple, clic de souris, frappe au clavier), une source externe (par exemple, une sortie de capteur) ou le système (par exemple, le chargement d'un programme).

Ressources Red Hat

Dissociation et couplage faible

La dissociation et le couplage faible font référence à deux concepts distincts qui sont liés au sein de l'architecture logicielle et des systèmes orientés événements.

La dissociation consiste à éliminer ou réduire les dépendances directes entre des composants distincts d'un système, afin qu'aucun composant ne dépende d'un autre. Dans le contexte d'une architecture orientée événements, la dissociation est effectuée en s'assurant que les composants qui génèrent des événements envoient des données d'événements sans viser un composant consommateur spécifique. Cette déconnexion permet aux composants d'être indépendants et crée un système globalement plus flexible.

Le couplage faible est un type spécifique de dissociation qui vise à réduire le degré d'interdépendance entre les composants, sans pour autant les séparer complètement. Dans un système faiblement couplé, les composants peuvent interagir les uns avec les autres, mais d'une manière qui ne crée aucune forme de dépendance.

Les deux systèmes encouragent la flexibilité et l'indépendance, ce qui crée des systèmes à la fois agiles et évolutifs.

Fonctionnement d'une architecture orientée événements

Une architecture orientée événements se compose de producteurs d'événements (éditeurs) et de consommateurs d'événements (abonnés). Un producteur d'événements détecte ou capture un événement et le représente sous forme de message. Compte tenu de la dissociation, il ne connaît pas le consommateur de l'événement ni son résultat.

Une fois un événement détecté, celui-ci est transmis du producteur aux consommateurs de l'événement par le biais de canaux d'événements, où une plateforme de traitement des événements traite l'événement de manière asynchrone. Les consommateurs d'événements doivent être informés lorsqu'un événement a eu lieu. Ils peuvent traiter l'événement ou simplement être affectés par ce dernier.

La plateforme de traitement des événements déclenchera la réponse appropriée pour l'événement et enverra l'activité en aval aux consommateurs concernés. C'est au niveau de cette activité en aval que le résultat d'un événement est visible.

Apache Kafka est une plateforme distribuée de diffusion de données en continu souvent choisie pour le traitement des événements. Elle peut gérer la publication, l'abonnement, le stockage et le traitement des flux d'événements en temps réel. Apache Kafka prend en charge un large éventail de cas d'utilisation pour lesquels un haut niveau de débit et d'évolutivité est essentiel, et permet de réduire la latence à quelques millisecondes en limitant l'utilisation d'intégrations point à point pour le partage de données dans certaines applications.

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
Il s'agit d'une infrastructure de messagerie basée sur l'abonnement à un flux d'événements. Avec ce modèle, une fois qu'un événement s'est produit ou a été 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 écrits dans un journal. Les consommateurs d'événements ne s'abonnent pas à un flux d'événements. Ils peuvent lire toute 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, comme Apache Kafka, pour ingérer des événements et des processus, voire transformer le flux d'événements.
  • Le traitement des événements simples intervient lorsqu'un événement déclenche immédiatement une action au niveau du consommateur d'événements.

Le traitement des événements complexes requiert qu'un consommateur d'événements traite une série d'événements pour détecter des schémas. Le traitement des flux d'événements permet de détecter des schémas pertinents dans les flux d'événements.

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 d'améliorer les workflows en s'adaptant aux changements et en prenant 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 à l'aide de toutes les données disponibles qui reflètent l'état actuel des systèmes de l'entreprise.

Les événements sont capturés à mesure qu'ils se produisent à partir de sources d'événements telles que des appareils de l'Internet des objets, des applications et des réseaux, ce qui permet aux producteurs et aux consommateurs d'événements de partager des informations sur l'état et la réponse en temps réel.

Les entreprises peuvent ajouter une architecture orientée événements à leurs systèmes et applications pour améliorer l'évolutivité et la réactivité des applications ainsi qu'accéder aux données et au contexte nécessaires pour prendre des décisions métier plus éclairées.

Une architecture orientée événements offre l'avantage de la dissociation, avec laquelle les producteurs et les consommateurs de données ou de services n'ont pas besoin de communiquer directement, ce qui favorise la flexibilité et l'évolutivité du système. En retour, cette approche simplifie l'intégration de nouveaux composants, favorise la tolérance aux pannes et améliore l'efficacité globale du système.

Red Hat, un partenaire de choix en matière d'architectures orientées événements

Nous proposons des outils et des logiciels de gestion intégrés qui vous permettent de connecter rapidement les technologies et microservices existants dans des environnements de cloud hybride, ainsi que de faire fonctionner votre architecture orientée événements grâce à une intégration agile.

Red Hat OpenShift, en association avec l'ensemble d'outils de Red Hat Application Foundations, aide les entreprises à améliorer la productivité de l'équipe de développement, à automatiser les pipelines CI/CD et à déployer leurs efforts de sécurité plus tôt et tout au long du cycle de développement. La chaîne d'approvisionnement des logiciels est ainsi plus sécurisée grâce à l'automatisation des pratiques DevSecOps et à la mise en œuvre de la sécurité des applications au moment de l'exécution.La fonctionnalité

OpenShift Dev Spaces offre à l'équipe de développement un environnement plus rapide, plus cohérent et plus fiable, et à l'équipe d'exploitation un contrôle centralisé. Grâce aux fonctionnalités d'OpenShift, telles que les services Serverless et Service Mesh, et celles de Red Hat Application Services, comme les environnements d'exécution et les frameworks d'applications, la gestion des API, la diffusion de données en continu ou les services orientés événements, l'équipe de développement accède en libre-service aux langages et aux outils de son choix, ce qui améliore sa productivité. Elle peut retrouver les outils qu'elle préfère utiliser dans notre vaste écosystème de solutions partenaires compatibles avec OpenShift.

En savoir plus sur notre approche de l'intégration

Hub

Le blog officiel de Red Hat

Découvrez les dernières informations concernant notre écosystème de clients, partenaires et communautés.

Tous les essais de produits Red Hat

Profitez de nos essais gratuits de produits Red Hat pour renforcer votre expérience pratique, préparer une certification ou évaluer l'adéquation d'un produit avec les besoins de votre entreprise.

En savoir plus

Une API, qu'est-ce que c'est ?

Une API (interface de programmation d'applications) est un ensemble de définitions et de protocoles qui facilite le développement des applications.

GraphQL, qu'est-ce que c'est ?

GraphQL (pour Graph Query Language) est un langage de requête et un environnement d'exécution côté serveur pour les API qui s'attache à fournir aux clients uniquement les données qu'ils ont demandées, et rien de plus.

Un Service Mesh, c'est quoi ?

Un Service Mesh est une couche d'infrastructure comprise dans une application qui permet de documenter les interactions entre les services.

Intégration : ressources recommandées