Développement d’applications innovantes - Messagerie
Les applications orientées messages couvrent toute une gamme d'architectures : le transfert de données entre les composants peut faire partie d'un pipeline de traitement distribué et convergé bien défini, ou les composants peuvent publier des messages sur plusieurs systèmes en aval indépendants qui évoluent indépendamment. Il existe trois modèles de messagerie modernes courants, chacun présentant des exigences d'application distinctes et partagées :
Transmission en continu d'événements
Les applications Event Streaming intègrent des flux de données volumineux et à grande vitesse qui doivent être traités en temps réel. Les données brutes doivent être traitées pour extraire des informations exploitables pouvant être utilisées par d'autres composants d'application, à des fins de surveillance ou stockées en vue d'une analyse ultérieure.

Description de l'illustration maf-messaging-streaming.png
maf-messaging-streaming-oracle.zip
Cet exemple d'application de transmission en continu d'événements utilise Oracle Cloud Infrastructure Streaming ou Oracle Transactional Event Queues (TEQ) comme solution de messagerie sous-jacente, Oracle Cloud Infrastructure Functions pour le traitement en temps réel et Oracle Autonomous Database comme banque de sauvegarde.
Publier-S'inscrire
La publication/souscription ou la publication/souscription est un modèle de communication dans lequel les producteurs de données publient des données sur des sujets spécifiques qui peuvent ensuite être utilisés par un nombre quelconque de consommateurs en aval en s'abonnant à ces sujets. Le couplage entre les producteurs et les consommateurs est assez faible, de sorte que les consommateurs peuvent évoluer indépendamment sans affecter les producteurs en amont.

Description de l'illustration maf-messaging-publishers-subscribers.png ci-après
maf-messaging-publishers-subscribers-oracle.zip
Cet exemple montre comment utiliser Oracle Cloud Infrastructure Streaming ou Oracle TEQ pour implémenter un modèle de messagerie de type publication/sous-message.
Mise en file d'attente des messages
La mise en file d'attente des messages permet un traitement distribué avec conservation de statut lorsque les composants en amont et en aval sont étroitement liés et implémentent ensemble un workflow d'application. La solution de messagerie doit prendre en charge la sémantique, telle que la distribution au moins une fois, afin de garantir que les messages ne se perdent pas avant d'être consommés.

Description de l'illustration maf-messaging-queuing.png ci-après
maf-messaging-queuing-oracle.zip
Cet exemple illustre l'utilisation d'Oracle Cloud Infrastructure Queue ou d'Oracle TEQ pour implémenter la mise en file d'attente des messages.
Principes de conception
- Créer des applications en tant que suite de services communiquant à l'aide d'API REST
Utiliser des API standard telles que Kafka et JMS pour assurer l'interopérabilité des applications et créer en toute transparence des applications de messagerie hybrides et multiclouds. Oracle Cloud Infrastructure (OCI) Streaming fournit une API de compatibilité Kafka. Oracle Transaction Event Queues (TEQ) prend en charge les API Kafka et JMS. Kafka et JMS sont largement pris en charge par des produits tiers. Par exemple, vous pouvez utiliser le connecteur JMS Kafka confluent pour transférer des messages entre Oracle TEQ et Kafka. Vous pouvez également utiliser Kafka Connect déployé sur le cluster Oracle Container Engine for Kubernetes pour vous connecter à des produits tiers. Oracle Cloud Infrastructure Queue peut être appelé à l'aide de la définition d'API RESTful (avec une spécification OpenAPI) ou à l'aide du protocole STOMP standard du secteur.
- Utiliser les services gérés pour éliminer la complexité du développement et des opérations des applications
Utilisez des services entièrement gérés avec des correctifs de sécurité et de maintenance d'infrastructure intégrés tels qu'OCI Streaming, OCI Queue et les fonctionnalités Oracle TEQ et Advanced Queuing (AQ) d'Oracle Autonomous Database (ADB). Ces services sont hautement disponibles grâce à la réplication automatique dans les domaines de disponibilité et prennent en charge l'automatisation du redimensionnement en réponse à l'évolution des charges.
- Conserver le niveau des applications sans conservation de statut
L'état lié à la messagerie, tel que la position dans une file d'attente de messages, ne doit jamais être stocké dans l'application ou sur le système de fichiers local, car cela peut entraîner une perte de données en cas d'échec d'une instance d'application. Les applications peuvent mettre le contenu des messages en cache pour traitement, mais la solution de messagerie doit rester la source unique d'informations fiables pour toutes les données de messagerie. Les métadonnées associées, telles que la position dans une file d'attente de messages, doivent être stockées dans une base de données ou dans le stockage d'objets afin d'éviter la perte de messages et d'assurer le fonctionnement de l'idémpotent. Cela facilite la récupération après défaillance tout en facilitant la mise à l'échelle d'un service sans perte d'exactitude.
- Surveillance et traçage de bout en bout des instruments
Conservez une compréhension fiable de l'état d'intégrité, des performances et de l'état opérationnel de votre application. Utilisez le portefeuille de services Oracle Cloud Observability and Management Platform pour gagner en visibilité et obtenir des informations exploitables sur toutes les couches de la pile d'applications, des producteurs de données et des consommateurs aux pipelines de messages eux-mêmes. Surveillez la longueur des files d'attente et la durée du traitement pour détecter les erreurs et les goulets d'étranglement et pour détecter les problèmes liés aux services abonnés aux sujets.
- Éliminez les points de défaillance uniques grâce à la réplication automatisée des données et à la récupération des défaillances
Sauvegarder les données de messagerie dans un stockage persistant pour répondre aux besoins réglementaires et de conformité. Utilisez la sauvegarde inter-région pour la récupération après sinistre. Intégrez l'idempotence dans vos applications de messagerie, par exemple en utilisant les délais d'expiration de visibilité des messages dans la file d'attente OCI. Ecrivez les erreurs irrécupérables dans un flux distinct, une file d'attente de lettres mortes ou un stockage persistant sans bloquer le pipeline d'exécution principal.
- Implémenter une approche de défense en profondeur automatisée pour sécuriser votre application et ses données
Implémentez des stratégies Oracle Cloud Infrastructure Identity and Access Management (IAM) pour autoriser uniquement les utilisateurs autorisés à créer, envoyer ou recevoir des données à partir de flux et de files d'attente OCI. Appliquer le principe d'accessibilité minimale en sécurisant l'accès aux adresses de messagerie à l'aide d'adresses privées et d'une passerelle de service, ce qui limite l'accès à partir d'Internet. Utilisez la fonctionnalité prête à l'emploi d'OCI Streaming, OCI Queue et TEQ pour crypter les données au repos et en transit afin d'assurer la confidentialité des données. Toutefois, si vous avez besoin d'une plus grande propriété de la rotation des clés, utilisez le service Oracle Cloud Infrastructure Vault pour gérer vos clés maître en toute sécurité.
Architecture

Description de l'illustration maf-messaging.png
Utilisez OCI Streaming pour implémenter les modèles de diffusion d'événements en continu et de publication/sous-messagerie, et Oracle Cloud Infrastructure Queue pour implémenter la mise en file d'attente de messages. Utilisez Oracle Autonomous Database pour rendre persistantes les données d'événement traitées. Les fonctions OCI peuvent être utilisées pour traiter les données d'événement avant leur utilisation par les composants d'application en aval ou leur persistance dans la base de données.
Implémenter l'isolement réseau à l'aide de sous-réseaux dédiés pour votre application et la base de données, ainsi que pour les services de messagerie. Sécuriser l'accès aux flux à l'aide d'adresses privées. Utilisez les stratégies Oracle Cloud Infrastructure Identity and Access Management (IAM) pour limiter l'accès aux files d'attente
Utilisez Oracle Cloud Infrastructure Object Storage pour la conservation des messages à long terme. Utilisez un service sans serveur tel que Service Connector pour déplacer en toute transparence les données d'OCI Streaming vers Object Storage, et activer la sauvegarde inter-région d'Object Storage pour réaliser une sauvegarde multi-région. Implémentez une stratégie de récupération après sinistre inter-région à l'aide de Kafka MirrorMaker 2.0 déployée sur un environnement Oracle Container Engine for Kubernetes (OKE) tolérant les pannes pour répliquer les données de manière asynchrone entre les flux. Cette configuration active un objectif de délai de récupération (RTO) et un objectif de point de récupération (RPO) en minutes. Utilisez l'appairage VCN distant pour garantir une latence minimale pendant le transfert de données.
Utilisez des files d'attente de lettres mortes pour isoler les messages problématiques. Les files d'attente de lettres mortes sont créées automatiquement lorsque vous créez une file d'attente. Les files d'attente de lettres mortes vous aident à éviter que des messages échoués bloquent le pipeline d'exécution principal. Les messages de la file d'attente des lettres mortes peuvent ensuite être analysés pour déterminer pourquoi ils ont échoué.
Intégrez l'idempotence dans les applications en stockant les décalages des messages traités dans un stockage externe tel qu'Object Storage. Détecter et supprimer les doublons en interrogeant le magasin externe. Catégorisez les erreurs facilement récupérables et autorisez la réexécution des messages.
Cette architecture utilise les services et technologies suivants :
- Transmission en continu
Oracle Cloud Infrastructure Streaming est une solution de stockage entièrement gérée, évolutive et durable permettant d'assimiler des flux de données hauts volumes continus que vous pouvez utiliser et traiter en temps réel. Vous pouvez utiliser Streaming pour l'ingestion de données volumineuses, telles que les journaux d'application, la télémétrie opérationnelle, les données de flux de clics sur le Web, ou pour d'autres cas d'emploi où des données sont produites et traitées de manière continue et séquentielle selon un modèle d'échange de messages de type publication/abonnement.
- File attente
La file d'attente Oracle Cloud Infrastructure fournit un système évolutif permettant de traiter les messages tout en gérant des tâches de gestion complexes telles que le traitement au moins une fois garanti, le suivi et l'isolement des clients. Ce service centralisé gère également l'état de tri et de traitement des messages, ce qui permet aux processus client sans état de décharger le suivi des curseurs.
- Fonctions
Oracle Cloud Infrastructure Functions est une plate-forme entièrement gérée, colocative, hautement évolutive, à la demande et Functions-as-a-Service (FaaS). Il est alimenté par le moteur open source du projet Fn. Les fonctions vous permettent de déployer votre code et de l'appeler directement ou de le déclencher en réponse à des événements. Oracle Functions utilise des conteneurs Docker hébergés dans Oracle Cloud Infrastructure Registry.
- Connecteurs de service
Oracle Cloud Infrastructure Service Connector Hub est une plate-forme cloud de bus de messages qui orchestre les déplacements de données entre les services dans OCI. Vous pouvez utiliser des connecteurs de service pour déplacer des données d'un service source vers un service cible. Les connecteurs de service vous permettent également de spécifier une tâche (telle qu'une fonction) à effectuer sur les données avant leur transmission au service cible.
Vous pouvez utiliser Oracle Cloud Infrastructure Service Connector Hub pour créer rapidement une structure d'agrégation de journalisation pour les systèmes SIEM.
Architecture alternative centrée sur la base de données
Cette architecture utilise la file d'attente des événements transactionnels (TEQ) pour implémenter des modèles de messagerie dans les applications modernes. TEQ est une fonctionnalité intégrée d'Oracle Autonomous Database.

Description de l'illustration maf-messaging-alternate.png ci-après
maf-messaging-alternate-oracle.zip
Cette architecture simplifie le processus en éliminant la nécessité d'utiliser des services externes de transmission en continu ou de mise en file d'attente et fournit des fonctionnalités de messagerie transactionnelle qui simplifient les modèles de microservices courants.
TEQ associe le traitement des données et des messages dans une infrastructure évolutive qui simplifie la gestion du cycle de vie, la sécurité et la reprise après sinistre tout en offrant des performances élevées. TEQ prend en charge les modèles de messagerie courants, notamment la diffusion en continu, la mise en file d'attente et la publication/souscription. Vous pouvez implémenter des transactions entre les opérations de messagerie et de base de données à l'aide de TEQ et implémenter facilement des modèles de messagerie tels que la boîte d'envoi transactionnelle et la messagerie exactement une fois avec peu ou pas de code supplémentaire. Oracle TEQ fournit une messagerie unique pour les applications exécutées dans la base de données . Cela signifie que vous n'avez pas besoin de conserver les ID de message pour rechercher les messages en double ou créer des destinataires idempotents au niveau de l'application. TEQ prend en charge à la fois les petits messages typiques du traitement d'événements et les charges utiles plus importantes associées aux workflows d'entreprise, et peut également fonctionner comme un maillage d'événements sécurisé.
L'élimination des services externes de transmission en continu ou de mise en file d'attente simplifie la gestion des états. Les événements et les messages sont stockés dans la même base de données que celle utilisée par l'application. Cela vous permet d'obtenir et de maintenir facilement la cohérence entre vos événements, messages et modifications d'application. En cas de panne nécessitant une récupération jusqu'à un point dans le temps ou une récupération après sinistre, tout (événements, messages et données d'application) est automatiquement récupéré jusqu'à un état cohérent.
TEQ bénéficie de la haute disponibilité d'Autonomous Database. Les données de messagerie dans TEQ sont automatiquement sauvegardées et protégées par la réplication inter-région d'ADB à l'aide d'Autonomous Data Guard. Vous pouvez déployer Oracle TEQ de manière hautement disponible à l'aide d'Oracle Real Application Clusters et d'Oracle Active Data Guard, deux fonctionnalités intégrées d'Oracle Autonomous Database. Oracle Real Application Clusters assure la disponibilité au sein d'une région, tandis qu'Oracle Active Data Guard assure la protection contre les sinistres entre régions.
Utilisez cette architecture si votre application effectue l'une des opérations suivantes :
- Nécessité d'implémenter des files d'attente de messages et nécessite une sémantique comme la boîte d'envoi transactionnelle
- Ne nécessite pas de mise à l'échelle indépendante de la base de données et du substrat de messagerie
Cette architecture utilise les services et technologies suivants :
- Files d'attente d'événements transactionnels (TEQ) et Advanced Queuing (AQ)
Les files d'attente d'événements transactionnels (TEQ) et Advanced Queuing (AQ) sont des systèmes robustes et riches en fonctionnalités de mise en file d'attente de messages intégrés à Oracle Database. Les files d'attente d'événements transactionnels (TEQ) sont une implémentation partitionnée hautes performances avec plusieurs flux d'événements par file d'attente. Advanced Queuing (AQ) convient à des cas d'utilisation de workflow plus simples. Ces fonctionnalités tirent parti d'Oracle Database pour conserver les messages et offrir un haut débit et une évolutivité.
- Fonctions
Oracle Cloud Infrastructure Functions est une plate-forme entièrement gérée, colocative, hautement évolutive, à la demande et Functions-as-a-Service (FaaS). Il est alimenté par le moteur open source du projet Fn. Les fonctions vous permettent de déployer votre code et de l'appeler directement ou de le déclencher en réponse à des événements. Oracle Functions utilise des conteneurs Docker hébergés dans Oracle Cloud Infrastructure Registry.
Architectures non recommandées
-
Applications monolithiques de messagerie et Service Bus
Les solutions de messagerie telles que RabbitMQ peuvent prendre en charge l'intégration avec d'autres composants via des normes et des API ouvertes. Toutefois, ces solutions nécessitent des efforts administratifs importants pour les PME et peuvent ne pas offrir de redondance distribuée et de haute disponibilité sans topologies complexes autogérées.
-
Clusters Kafka dans un environnement sur site ou cloud autonome
Cette solution, bien que offrant évolutivité et haute disponibilité, exige une connaissance spécialisée des développeurs et des frais d'administration opérationnelle importants pour les PME. Prévoyez une attention particulière avant de sélectionner cette option en raison du délai de production et du risque de coût total de possession élevé.
Remarques
Lors de l'implémentation du modèle de conception Messaging, prenez en compte ces options d'implémentation.
Choisissez la bonne plate-forme de messagerie en fonction des besoins de votre application
Les plates-formes et services de base peuvent sembler similaires et partager des fonctionnalités communes. Cependant, chaque plate-forme possède des fonctionnalités et des atouts uniques qui peuvent être mieux alignés avec les exigences de votre application. Par exemple :
- Utilisez OCI Streaming ou les files d'attente d'événements transactionnels si vos applications nécessitent une plate-forme de messagerie haut débit en temps réel qui offre des capacités de réexécution et de publication de messages.
- Utilisez la file d'attente des événements transactionnels si vous avez besoin d'un tampon point à point évolutif et fiable pour déplacer les données de manière asynchrone.
- Utilisez Service Connector Hub (SCH) pour activer l'intégration aux ressources d'infrastructure.
- Utilisez la file d'attente des événements transactionnels (TEQ) dans la base de données lors de la conception de nouveaux microservices avec la messagerie intégrée à Oracle Autonomous Database.
Etudes de cas publiques
Architecture Oracle Streaming
Tango Eye convertit la vidéo de surveillance en informations exploitables pour le secteur de la vente au détail.
- Oracle Cloud Infrastructure (OCI) Streaming service en tant que système de messagerie de publication/abonnement à faible maintenance pour divers microservices.
- Oracle Cloud Infrastructure Functions exécute des travaux sans serveur sans surveillance technique.
- Les stratégies de cycle de vie d'Oracle Cloud Infrastructure Object Storage archivent et purgent automatiquement les données, réduisant ainsi les coûts sans diminuer la valeur des analyses basées sur l'IA de Tango Eye.
Architecture basée sur Oracle TEQ
FedEx utilise Oracle E-Business Suite et le gestionnaire d'événements métier créé avec Oracle TEQ pour la comptabilité clients de ses 15,5 millions de packages livrés chaque jour.
- FedEx a déplacé E-Business Suite vers Oracle Cloud Infrastructure Object Storage à l'aide d'Exadata Cloud Service. Les workflows E-Business Suite et le système d'événements commerciaux sont entièrement basés sur la messagerie Oracle Advanced Queuing (AQ).
- Oracle AQ est simple à utiliser et adapté à l'orchestration de workflow. Pour les événements à haut débit, Oracle TEQ remplace les performances élevées par plusieurs flux d'événements par file d'attente, interopérable avec apache Kafka.
Déploiement
- Accédez à GitHub.
- Clonez ou téléchargez le référentiel sur votre ordinateur local.
- Suivez les instructions du document
README
.
Journal des modifications
Ce journal répertorie les modifications importantes :
21 septembre 2023 |
|
27 avril 2023 |
|
12 juillet 2022 |
|