Amazon Simple Queue Service (SQS) est un service de messagerie entièrement géré, proposé par Amazon Web Services (AWS). Il permet aux développeurs de créer des applications hautement évolutives, fiables et résistantes en utilisant une architecture de microservices.
Avant d’entrer plus loin dans le sujet, il faut bien comprendre ce qu’est un service de messagerie dans le contexte du cloud computing : ici, ce type de service permet à différents composants d’une application distribuée de communiquer entre eux, par le biais de transmission de messages. Ces messages peuvent être des demandes de traitement, des informations, des notifications, etc.
Quelles sont les fonctionnalités de SQS AWS ?
Amazon SQS est riche en fonctionnalités. Le tableau ci-après vous permettra d’en savoir plus quant aux plus communes :
Fonctionnalité | Description |
---|---|
Files d’attente | Il s’agit d’une fonctionnalité clé de SQS. Il existe deux types de file d’attente : |
|
|
|
|
|
|
|
|
Asynchrone | Avec une fonctionnalité de messagerie asynchrone, SQS permet de décharger les applications des tâches de surveillances constantes de l’arrivée de nouveaux messages |
Fiabilité | Le délivrement des messages est garantie au moins une fois, et SQS propose également des mécanismes de réplication et de redondance pour éviter les pertes |
Scalabilité | SQS peut gérer de très grands volumes de messages et de très grandes charges de travail |
Délais d’attente | Des délais peuvent être imposés dans le but d’éviter que les messages soient traités trop rapidement ou trop tard |
Accès distant | Via des APIs REST ou des SDK (Software Deployment Kit) pour de nombreux langages de programmation, les développeurs peuvent facilement intégrer SQS dans leurs applications |
Intégration AWS | SQS s’intègre parfaitement avec d’autres services AWS, comme S3, EC2, Lambda ou encore SNS pour créer des architectures distribuées |
Sécurité | L’authentification et la gestion des accès grâce à IAM permet à SQS d’être très sécurisé, et propose également des fonctionnalités de cryptage des données |
Comprendre le fonctionnement de Amazon SQS
Un système de messagerie distribuée est composé de trois parties principales : les composants du système distribué, la file d’attente (gérée sur les serveurs Amazon SQS), et les messages en attente.
Dans l’exemple suivant, notre système dispose de plusieurs producers (les producteurs de messages, ces composants chargés d’envoyer les messages en file d’attente), et de consumers (les consommateurs de message, ces composants chargés de recevoir les messages en attente). La file d’attente stocke les messages sur les serveurs SQS.
Regardons à présent la figure suivante :
➡️Le producer (composant 1), envoie le message A en file d’attente, et ce message est distribué sur les serveurs Amazon SQS de manière redondante.
➡️Lorsqu’un consumer (composant 2) est prêt à s’occuper du message, on dit qu’il le “consomme” de la file, et le message A est ainsi retourné, entamant par la même occasion un timer de visibilité (paramétrable).
➡️Pendant son traitement, il reste en file et n’est pas transmis aux demandes de réception suivante pendant la durée du timer. Le consumer supprime le message A de la file pour empêcher qu’il soit reçu et traité de nouveau une fois le délai de visibilité expiré.
Dans quels cas peut-on utiliser SQS AWS ?
Amazon SQS inclut les différents cas d’utilisation suivants :
- Découplage des application : cela permet une meilleure scalabilité, une plus grande résilience et une meilleure isolation entre les composants
- Traitement en arrière plan : SQS peut traiter les tâches en arrière plan afin de libérer les ressources du serveur, et par conséquent d’améliorer les performances globales
- Gestion des files d’attente : les applications peuvent traiter les messages à leur rythme sans avoir besoin d’un traitement en temps réel
- Architecture de micro-service : SQS améliore la communication entre les différents micro-services
- Traitement des tâches distribuées : la possibilité de traiter des données volumineuses améliore la performance globale de l’application et réduit les temps de traitement.
Amazon SQS versus Apache Kafka
Ces 2 solutions de messagerie en temps réel sont utilisées dans les architectures de microservices et d’applications distribuées. Souvent comparées, elles ont néanmoins quelques différences clés :
➡️ En termes d’architecture, SQS est entièrement gérée par Amazon, et permet donc de s’affranchir de tous les aspects infrastructure, disponibilité et sécurité. En revanche, Kafka est open-source et nécessite une configuration et une gestion plus avancées.
➡️ Kafka est souvent préféré lorsqu’il est nécessaire d’avoir un débit très élevé et une latence minimale. SQS fournit malgré tout une latence de l’ordre de quelques millisecondes, mais reste généralement moins rapide que Kafka.
➡️ SQS est conçu pour être hautement évolutif, mais est plus limité en termes de fonctionnalités que Kafka, qui, quant à lui, est très flexible et peut être utilisé dans une plus large gamme de cas d’utilisation
➡️ Etant donné que SQS est construit sur l’infrastructure Amazon, il dispose d’une sécurité très élevée. Kafka peut également être sécurisé, moyennant un investissement et des configuration plus poussées.
Nous pouvons conclure que SQS, sans surprise, convient particulièrement aux applications basées sur AWS, alors que Kafka, de part son statut open-source, est plus flexible et plus riche en fonctionnalité, mais demande également bien plus d’investissement dans sa configuration et sa gestion
Etude de cas : La NASA
Qui ne connaît pas l’Agence nationale de l’espace et de l’aéronautique, la NASA ?
En 2017, la NASA a lancé une bibliothèque de contenu appelée “NASA Image and Video Library”, qui permet aux utilisateurs de rechercher, visualiser et télécharger les différents contenus multimédia de la NASA. Cependant, la mise en place d’une telle plateforme a posé de nombreux défis techniques pour les équipes de développement. L’un d’eux était la gestion de la file d’attente des tâches de traitement des médias.
Pour résoudre ce défi, la NASA s’est orientée vers le service Amazon SQS, grâce auquel ils ont pu découpler les tâches de traitement de la file d’attente principale, ce qui a permis de réduire la pression sur les serveurs et donc d’améliorer les performances de leur système.
Avec l’intégration entre les différents services Amazon, la NASA a également utilisé Amazon S3 pour le stockage des fichiers, mais également d’autres services, tels que Amazon EC2, RDS ou encore DynamoDB.
Amazon SQS a donc pu aider la NASA à relever les défis de sa plateforme de contenu en offrant une solution de messagerie fiable et scalable pour gérer le traitement des médias.
Conclusion
Amazon SQS est un service de messagerie asynchrone fiable et scalable qui permet aux applications distribuées et aux microservices de communiquer entre eux. Il s’avérera être en choix idéal si vous souhaitez simplifier la communication entre les différents composants de votre application.
Si vous désirez en savoir un peu plus sur Amazon SQS, nous vous invitons à découvrir notre formation dédier à Amazon Web Services.