La plupart des architectures d’applications Serverless utilisent une combinaison de différents services AWS, microservices et fonctions AWS Lambda. Les services de messagerie sont importants pour permettre aux applications distribuées de communiquer entre elles.
Les services de messagerie peuvent améliorer la résilience, la disponibilité et l’évolutivité des applications, lorsqu’ils sont utilisés de manière appropriée.
Trois des patterns d’échange les plus utilisés par les développeurs sont les files d’attente, la publication / l’abonnement et les bus d’événements.
Dans AWS, ceux-ci sont fournis respectivement par Amazon SQS, Amazon SNS et Amazon EventBridge.
Tous ces services sont entièrement gérés et hautement disponibles, il n’y a donc pas d’infrastructure à gérer. Les trois s’intègrent à Lambda, ce qui vous permet de publier des messages via AWS SDK et d’appeler des fonctions en tant que cibles.
Amazon SNS
SNS permet d’envoyer des messages entre les parties de l’infrastructure. Il dispose d’un mécanisme de Retry/Recovery robuste lorsque les cibles en aval ne sont pas disponibles. Lorsque la politique de Retry/Recovery est épuisée, il peut éventuellement envoyer ces messages à une file d’attente de lettres mortes (Error queue) pour un traitement ultérieur. SNS utilise des rubriques pour séparer logiquement les messages en canaux, et les fonctions Lambda interagissent avec ces rubriques.
Amazon SQS
SQS fournit des files d’attente pour les applications sans serveur. On peut utiliser une file d’attente pour envoyer, stocker et recevoir des messages entre différents services. Les files d’attente sont un mécanisme important pour fournir une tolérance aux pannes dans les systèmes distribués et aident à découpler différentes parties de l’application. SQS évolue de manière élastique et il n’y a pas de limite au nombre de messages par file d’attente. Le service conserve durablement les messages jusqu’à ce qu’ils soient traités par un consommateur.
Amazon EventBridge
EventBridge est un service de bus d’événements Serverless, simplifiant le routage des événements entre les services AWS, les fournisseurs de logiciels en tant que service (SaaS) et vos propres applications. Il sépare logiquement le routage à l’aide de bus d’événements et permet d’implémenter la logique de routage à l’aide de règles. Vous pouvez filtrer et transformer les messages entrants au niveau du service et acheminer les événements vers plusieurs cibles, y compris les fonctions Lambda.
Différence entre les différents services
Les files d’attente SQS et les rubriques SNS offrent des fonctionnalités différentes, bien que les deux puissent publier dans des fonctions Lambda en aval.
Un message SQS est stocké dans la file d’attente jusqu’à 14 jours jusqu’à ce qu’il soit traité avec succès par un abonné. SNS ne conserve pas les messages, donc s’il n’y a pas d’abonnés pour une rubrique, le message est rejeté.
Les sujets SNS peuvent être diffusés vers plusieurs cibles. Ce comportement est appelé fan-out. Il peut être utilisé pour paralléliser le travail entre les fonctions Lambda. Un sujet SNS peut avoir jusqu’à 12 500 000 abonnés, offrant des capacités de diffusion hautement évolutives. Les cibles peuvent correspondre à des points de terminaison HTTP/S, des messages texte SMS, des fonctions push mobile SNS, de messagerie électronique, SQS et Lambda.
SNS et EventBridge présentent de nombreuses similitudes. Les deux peuvent être utilisés pour découpler les publishers et les subscribers, filtrer les messages ou les événements et fournir des fonctionnalités de fan-in ou de fan-out. Cependant, il existe des différences dans la liste des cibles et des fonctionnalités pour chaque service, et votre choix de service dépend de la spécificité de chaque cas d’usage.
EventBridge propose deux nouvelles fonctionnalités qui ne sont pas disponibles dans SNS. Le premier est l’intégration du logiciel en tant que service (SaaS). Cela permet d’autoriser les fournisseurs SaaS à envoyer des événements directement depuis leur bus d’événements EventBridge vers des bus d’événements partenaires.
La deuxième fonctionnalité est le registre de schémas, qui facilite la découverte et la gestion des schémas OpenAPI pour les événements. EventBridge peut déduire des schémas basés sur des événements acheminés via un bus d’événements à l’aide de la découverte de schéma. Cela peut être utilisé pour générer des liaisons de code directement dans votre IDE pour les langages de type sécurisé tels que Python, Java et TypeScript. Cela peut aider à accélérer le développement en automatisant la génération de classes et de code directement à partir d’événements.
Conclusion
La messagerie est une partie importante des applications Serverless et les services AWS fournissent des files d’attente, des fonctionnalités de publication / abonnement et de routage d’événements. Cet article passe en revue les principales fonctionnalités de ces différents services. Le choix des services à utiliser dépend des spécificités de chaque cas d’usage mais aussi des contraintes techniques et économiques relatives à chaque application.