Mécanismes de communication - Implémentation de microservices sur AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mécanismes de communication

Dans le paradigme des microservices, les différents composants d'une application doivent communiquer sur un réseau. Les approches courantes à cet égard incluent la messagerie basée sur REST, GraphQL, GRPC et asynchrone.

Communication basée sur le repos

Le protocole HTTP/S, largement utilisé pour les communications synchrones entre microservices, fonctionne souvent. RESTful APIs API Gateway offre un moyen rationalisé de créer une API qui sert de point d'accès centralisé aux services principaux, gérant des tâches telles que la gestion du trafic, les autorisations, la surveillance et le contrôle des versions.

Communication basée sur GraphQL

De même, GraphQL est une méthode répandue de communication synchrone, utilisant les mêmes protocoles que REST mais limitant l'exposition à un seul point de terminaison. Vous pouvez ainsi créer et publier des applications GraphQL qui interagissent directement avec les AWS services et les banques de données, ou intégrer des fonctions Lambda pour la logique métier. AWS AppSync

Communication basée sur le GRPC

gRPC est un protocole de communication RPC open source synchrone, léger, performant. gRPC améliore ses protocoles sous-jacents en utilisant HTTP/2 et en activant davantage de fonctionnalités telles que la compression et la priorisation des flux. Il utilise le langage de définition d'interface Protobuf (IDL) qui est codé en binaire et tire ainsi parti du cadrage binaire HTTP/2.

Messagerie asynchrone et transmission d'événements

La messagerie asynchrone permet aux services de communiquer en envoyant et en recevant des messages via une file d'attente. Cela permet aux services de rester faiblement couplés et de promouvoir la découverte de services.

La messagerie peut être définie selon les trois types suivants :

  • Files d'attente de messages : une file de messages agit comme une mémoire tampon qui dissocie les expéditeurs (producteurs) et les destinataires (consommateurs) des messages. Les producteurs placent les messages dans la file d'attente, et les consommateurs les retirent et les traitent. Ce modèle est utile pour les communications asynchrones, le nivellement de charge et la gestion des rafales de trafic.

  • Publier-Souscrire : dans le modèle de publication-abonnement, un message est publié sur un sujet et plusieurs abonnés intéressés reçoivent le message. Ce modèle permet de diffuser des événements ou des messages à plusieurs consommateurs de manière asynchrone.

  • Messagerie axée sur les événements : La messagerie axée sur les événements consiste à capturer les événements qui se produisent dans le système et à y réagir. Les événements sont publiés sur un courtier de messages, et les services intéressés s'abonnent à des types d'événements spécifiques. Ce modèle permet un couplage souple et permet aux services de réagir aux événements sans dépendance directe.

Pour implémenter chacun de ces types de messages, AWS propose divers services gérés tels qu'Amazon SQS, Amazon SNS, Amazon, EventBridge Amazon MQ et Amazon MSK. Ces services présentent des fonctionnalités uniques adaptées à des besoins spécifiques :

  • Amazon Simple Queue Service (Amazon SQS) et Amazon Simple Notification Service (Amazon SNS) : comme vous pouvez le voir sur la Figure 8, ces deux services se complètent, Amazon SQS fournissant un espace pour le stockage des messages et Amazon SNS permettant de distribuer des messages à plusieurs abonnés. Ils sont efficaces lorsque le même message doit être transmis à plusieurs destinations.

    Schéma illustrant le schéma du bus de messages sur AWS

    Figure 8 : Schéma du bus de messages activé AWS

  • Amazon EventBridge : un service sans serveur qui utilise des événements pour connecter les composants de l'application entre eux, ce qui vous permet de créer plus facilement des applications évolutives pilotées par des événements. Utilisez-le pour acheminer des événements provenant de sources telles que des applications locales, AWS des services et des logiciels tiers vers des applications grand public au sein de votre entreprise. EventBridge fournit un moyen simple et cohérent d'ingérer, de filtrer, de transformer et de diffuser des événements afin que vous puissiez créer rapidement de nouvelles applications. EventBridge les bus d'événements sont parfaitement adaptés au many-to-many routage d'événements entre des services pilotés par des événements.

  • Amazon MQ : un bon choix si vous possédez un système de messagerie préexistant qui utilise des protocoles standard tels que JMS, AMQP ou similaires. Ce service géré permet de remplacer votre système sans perturber les opérations.

  • Amazon MSK (Managed Kafka) : un système de messagerie pour le stockage et la lecture des messages, utile dans les cas où les messages doivent être traités plusieurs fois. Il prend également en charge le streaming de messages en temps réel.

  • Amazon Kinesis : traitement et analyse en temps réel des données de streaming. Cela permet le développement d'applications en temps réel et assure une intégration parfaite avec l' AWS écosystème.

N'oubliez pas que le meilleur service pour vous dépend de vos besoins spécifiques. Il est donc important de comprendre ce que chacun propose et comment il correspond à vos exigences.

Orchestration et gestion des états

L'orchestration des microservices fait référence à une approche centralisée, dans laquelle un composant central, appelé orchestrateur, est chargé de gérer et de coordonner les interactions entre les microservices. L'orchestration des flux de travail sur plusieurs microservices peut s'avérer difficile. Il est déconseillé d'intégrer le code d'orchestration directement dans les services, car cela introduit un couplage plus étroit et empêche le remplacement de services individuels.

Step Functions fournit un moteur de flux de travail pour gérer les complexités de l'orchestration des services, telles que la gestion des erreurs et la sérialisation. Cela vous permet de faire évoluer et de modifier rapidement les applications sans ajouter de code de coordination. Step Functions fait partie de la plate-forme AWS sans serveur et prend en charge les fonctions Lambda EC2, Amazon, Amazon EKS, Amazon ECS SageMaker , AI AWS Glue, etc.

Schéma d'un flux de travail de microservices invoqué par AWS Step Functions

Figure 9 : Exemple de flux de travail de microservices comportant des étapes parallèles et séquentielles invoquées par AWS Step Functions

Amazon Managed Workflows for Apache Airflow (Amazon MWAA) est une alternative à Step Functions. Vous devez utiliser Amazon MWAA si vous privilégiez l'open source et la portabilité. Airflow dispose d'une communauté open source importante et active qui apporte régulièrement de nouvelles fonctionnalités et intégrations.