L'architecture orientée événements (de l'anglais event driven architecture, ou EDA) est une forme d'architecture de médiation qui est un modèle d'interaction applicative mettant en œuvre des services (composants logiciels) répondant à des sollicitations externes :
Par opposition à l'architecture orientée services (SOA) où un « fournisseur » rend un service à la demande d'un consommateur; en architecture EDA, un composant prévient par émission d'un événement qu'il a réalisé une opération donnée. C'est aux Clients potentiels de traiter cet événement.
Avec la SOA c'est une réponse très efficace aux problématiques que rencontrent les entreprises en termes de réutilisabilité, d'interopérabilité et de réduction de couplage entre les différents systèmes qui implémentent leurs systèmes d'information.
Les architectures EDA ont été popularisées avec l'apparition de standards pour les places de marchés et les systèmes de vente aux enchères.
Elles mettent en application une partie des principes d'urbanisation.
Une architecture orientée événements repose principalement sur un bus disposant de fonctionnalités d'abonnement et de publication (publish and Subscribe).
Sotheby's a mis en place une architecture de type EDA pour son système de gestion des enchères : inscription des acheteurs, gestion des enchères avec alertes… Elle prend en charge à la fois le réseau intranet et les sollicitations de son site web et de son plateau téléphonique.
Le couplage entre composants est un couplage lâche et les communications sont en général asynchrones.
Le service peut :
Le service doit :
L'annuaire de services référence l'ensemble des services et leurs événements (et des contrats associés) disponibles au sein du système d'information, il participe ainsi activement à la mise en œuvre d'une cartographie dynamique du système d'information.
Dans une architecture EDA, le bus a un rôle de médiateur (middleware entre le service émetteur de l'événement et les consommateurs potentiels, il permet ainsi de réaliser le couplage lâche. Le bus peut aussi fournir une gamme de services :
Un événement peut être défini comme « un changement significatif d'état »[1]. Par exemple, quand un client achète un tableau, le tableau passe de l'état « à vendre » à l'état « vendu » et le système de facturation va, sur réception de cet événement, déclencher l'émission de la facture, le même état sera traité par le service commission pour calculer les honoraires du commissaire priseur.
Ce modèle d'architecture est très souple et avec un couplage très lâche. Les consommateurs d'un événement doivent s'abonner (subscribe) à un intermédiaire de gestion d'événement (le bus) et le producteur de l'événement doit le publier auprès de ce gestionnaire (le bus). Quand le gestionnaire d'événement reçoit un événement d'un producteur, il le diffuse (forward) aux consommateurs concernés. Si le consommateur est injoignable, le gestionnaire peut conserver le message et le diffuser ultérieurement. Ce moyen de transmission d'événements repose sur un bus de message store and forward[2].
Concevoir un système d'information reposant sur une architecture orientée événements permet à ses applications d'être construites de manière plus réactive, plus souple et plus flexible.
L'architecture EDA complète l'architecture orientée services (SOA) car les services peuvent être activés par des triggers que sont les événements[2],[3].
Un événement comprend deux parties, un en-tête (event header) et le message (event body). L'en-tête comprend des informations comme son nom, son type, et un horodatage (timestamp de l'événement). Le message est la partie qui décrit la cause de l'événement (le tableau X a été vendu pour un prix Y à l'acheteur Z).