cours
SQS vs SNS : Comprendre les services de messagerie AWS
Maîtriser AWS peut s'avérer difficile, surtout lorsqu'il s'agit de comprendre ses deux services principaux : Amazon Simple Queue Service (SQS) et Amazon Simple Notification Service (SNS).
Bien que ces deux services fassent partie intégrante des solutions cloud, ils sont souvent mal compris et mal utilisés.
Dans cet article, je vais décomposer les rôles de SQS et SNS, identifier leurs similitudes et leurs différences, et démontrer comment ces services peuvent être utilisés ensemble pour construire des architectures cloud performantes.
SQS vs SNS : Réponse courte
Si vous êtes pressé, voici les principales différences :
- SQS est un service de file d'attente de messages basé sur les sondages qui permet de découpler les services, de prendre en charge la communication A2A et la conservation des messages.
- SNS est un service de notification basé sur la technologie "push" pour la messagerie en temps réel, qui prend en charge les communications A2A et A2P.
Poursuivez votre lecture pour une explication plus détaillée, comprenant des cas d'utilisation, des diagrammes d'architecture et des bonnes pratiques !
Qu'est-ce que Amazon SQS ?
Amazon Simple Queue Service (SQS) est un service de mise en file d'attente de messages entièrement géré qui facilite la communication entre les composants logiciels. SQS utilise des files d'attente pour découpler les microservices, ce qui vous permet de créer des flux de travail asynchrones dans vos applications.
La SQS comprend trois éléments essentiels :
- Producteurs : Il s'agit d'applications qui envoient des messages à la file d'attente.
- Files d'attente : Une file d'attente stocke les messages jusqu'à ce qu'ils soient traités. La période de conservation de ces messages peut être fixée entre 60 secondes et 14 jours.
- Consommateurs : Il s'agit de services qui reçoivent les messages de la file d'attente.
Schéma de l'architecture d'Amazon SQS, y compris les principaux composants. Image par l'auteur.
SQS propose deux types de files d'attente de messages :
- Les files d'attente standard offrent un débit illimité, une livraison au moins une fois (c'est-à-dire qu'un message sera toujours livré) et un ordre optimal.
- Les files d'attente FIFO offrent un débit élevé, un traitement "à l'identique" et une livraison "premier entré - premier sorti" (c'est-à-dire que les messages sont reçus dans l'ordre exact où ils ont été envoyés).
Pour plus d'informations sur ces files d'attente, veuillez consulter la documentation AWS.
Amazon SQS est conçu avec la persistance des messages pour stocker en toute sécurité tous les messages jusqu'à ce qu'ils soient traités, ce qui garantit qu'il n'y a pas de perte de messages. SQS permet d'abord plusieurs tentatives de traitement d'un message donné. Si un message ne peut être traité après toutes les tentatives, vous pouvez stocker les messages non traités dans unefile d'attente de lettres mortes ( ), qui peut ensuite être consultée et traitée à nouveau.
En découplant les applications, Amazon SQS offre un certain nombre d'avantages. Il prend en charge un débit de messages élevé, ce qui garantit des performances élevées même en cas de charge de trafic importante. En outre, il permet une mise à l'échelle indépendante, garantissant que chaque service reçoit des ressources suffisantes en fonction de ses besoins individuels. Il renforce également la sécurité et la durabilité en cryptant les messages et en les stockant sur plusieurs serveurs.
Pour en savoir plus sur ce système de file d'attente, consultez notre tutoriel complet sur SQS.
Devenez ingénieur en données
Qu'est-ce qu'Amazon SNS ?
Amazon Simple Notification Service (SNS) est un service de messagerie entièrement géré qui prend en charge la communication d'application à application (A2A) et d'application à personne (A2P). Il est conçu pour les notifications en temps réel et transmet les messages aux applications et aux utilisateurs finaux de manière évolutive et efficace.
Comme SQS, Amazon SNS prend en charge la persistance des messages en permettant aux utilisateurs de créer des files d'attente de lettres mortes. files d'attente de lettres mortes pour stocker les messages qui ne peuvent pas être traités.
Amazon SNS utilise un modèle de messagerie de type publication/souscription (pub/sub) et comprend trois parties :
- Éditeur : Un éditeur est un système qui crée et envoie des messages à un sujet SNS.
- Sujet : Un sujet est un point d'accès qui permet la transmission de messages à plusieurs points d'extrémité.
- Abonné : Un abonné, ou consommateur, est un point d'extrémité qui reçoit un message du thème.
Schéma d'architecture du modèle de messagerie SNS. Source de l'image : AWS
Le SNS est très performant et peut envoyer des messages à plusieurs abonnés simultanément. Pour la communication A2A, SNS peut livrer des messages à AWS Lambda, Amazon Kinesis Firehose, et même Amazon SQS. Pour la communication A2P, les SRS peuvent envoyer des messages directement aux utilisateurs par texte, courriel ou notifications push.
Si vous souhaitez maîtriser AWS et être en mesure d'intégrer plusieurs de ses services pour créer des solutions optimales, envisagez de suivre le cours AWS Cloud Technology and Services.
Les caractéristiques, y compris les systèmes d'alerte, les architectures en éventail et les notifications en temps réel, contribuent à la robustesse et à la fiabilité élevées d'Amazon SNS. En raison de son débit de messages élevé et de sa capacité de communication A2A et A2P, le SNS fait souvent partie intégrante des architectures pilotées par les événements.
Différences fondamentales entre SQS et SNS
Pour choisir entre SQS et SNS, il faut bien comprendre les différences entre ces services de messagerie. Cette section présente les principaux critères permettant de les distinguer.
Poussée ou sondage
Amazon SQS utilise un système d'interrogation dans lequel les consommateurs interrogent périodiquement la file d'attente pour vérifier la présence de nouveaux messages.
Amazon SNS, un système basé sur le push, envoie automatiquement des messages aux abonnés dès qu'ils sont publiés sur un sujet.
Types de bénéficiaires
Amazon SQS prend uniquement en charge la communication A2A, ce qui permet d'envoyer des messages à d'autres services AWS, tels que AWS EC2, AWS Lambda, AWS RDS et AWS Redshift.
Amazon SNS prend en charge les communications A2A et A2P, en envoyant des messages aux services AWS (par exemple, AWS S3, AWS EC2) et aux contacts des utilisateurs (par exemple, SMS et e-mail) en tant qu'abonnés.
Conservation des messages
Amazon SQS peut stocker les messages jusqu'à 14 jours, ce qui laisse suffisamment de temps aux consommateurs pour les traiter. En revanche, Amazon SNS ne conserve aucun message et les transmet aux abonnés dès qu'ils sont publiés.
Modèle de distribution des messages
Amazon SQS utilise un modèle univoque, dans lequel un seul consommateur traite chaque message. Même si plusieurs consommateurs demandent des messages en même temps, un seul consommateur recevra un message donné. Pendant que le consommateur concerné traite un message, SQS utilise la fonction de délai de visibilité pour rendre ce message invisible aux autres consommateurs.
Amazon SNS prend en charge un modèle de diffusion en éventail, dans lequel le même message sur un sujet est envoyé simultanément à tous les abonnés. Ces abonnés traitent le message reçu de manière indépendante.
Mise en lots
Amazon SQS permet aux utilisateurs d'envoyer des messages par lots, c'est-à-dire par groupes de consommateurs. La taille du lot peut être configurée dans AWS.
Amazon SNS ne prend pas en charge le traitement par lots et ne permet de traiter qu'un seul message à la fois.
Le tableau suivant résume ces principales différences :
Critères |
Amazon SQS |
Amazon SNS |
Push contre poll-based (basé sur les sondages) |
Basé sur des sondages : Les consommateurs interrogent la file d'attente à la recherche de nouveaux messages |
Basé sur la poussée : Envoi automatique de messages aux abonnés |
Types de bénéficiaires |
Prise en charge de la communication A2A |
Prise en charge de la communication A2A et A2P |
Conservation des messages |
Stocke les messages jusqu'à 14 jours |
Il ne stocke pas les messages |
Modèle de distribution des messages |
Prise en charge de la messagerie individuelle |
Prise en charge de la messagerie en éventail (un à plusieurs) |
Mise en lots |
Prise en charge de la mise en lot des messages |
Il ne permet pas la mise en lot des messages |
Quand utiliser la SQS
SQS est l'option privilégiée pour une architecture cloud lorsque le système de livraison de messages a besoin :
- Un système d'interrogation - les consommateurs peuvent choisir le moment de l'interrogation des messages.
- Traitement asynchrone - Les services peuvent traiter les messages indépendamment les uns des autres.
- Conservation des messages - Les messages peuvent être conservés jusqu'à 14 jours.
- Livraison garantie des messages - aucun message n'est perdu dans la file d'attente.
- La mise en lots - traitent les messages par groupes.
Prenons l'exemple suivant : Une plateforme de commerce électronique souhaite traiter les commandes des clients, ce qui implique de stocker les données relatives à la commande dans une base de données RDS.
Schéma d'architecture d'un système utilisant Amazon SQS pour traiter les données - image par l'auteur.
Dans ce flux de travail, les clients soumettent des commandes qui entrent dans la file d'attente du SQS. La fonction lambda (c'est-à-dire le consommateur) interroge la file d'attente, reçoit les messages et écrit les données dans la base de données RDS.
L'utilisation de SQS pour ce cas d'utilisation présente plusieurs avantages. Comme SQS découple le processus, les clients peuvent passer des commandes même si la base de données n'est pas opérationnelle. La SQS offrant une livraison au moins une fois, toutes les commandes seront traitées sans risque de perte de message. Enfin, SQS prend en charge le traitement par lots, qui permet de traiter les messages par groupes, ce qui améliore l'efficacité.
Amazon SNS ne fonctionnerait pas ici, car il ne conserve pas les messages et les transmet immédiatement à la fonction lambda, quel que soit l'état de la base de données. Ainsi, si la base de données devient indisponible, les messages peuvent être perdus. De plus, comme SNS ne prend pas en charge le traitement par lots, il traitera les messages un par un, ce qui constitue une solution moins optimale.
Quand utiliser les SRS ?
Le SNS est l'option privilégiée pour une architecture en nuage lorsque le système de transmission de messages doit être mis en place :
- Notifications en temps réel - les messages sont immédiatement envoyés aux abonnés avec une faible latence.
- Distribution en éventail - plusieurs abonnés peuvent recevoir le même message simultanément.
- Plusieurs abonnés aux notifications - Les messages peuvent être envoyés à des applications (par exemple, AWS Lambda) et à des utilisateurs finaux (par exemple, par courriel).
Prenons l'exemple d'un développeur qui surveille l'utilisation de l'unité centrale de son instance EC2. Pour s'assurer que l'utilisation reste faible, ils veulent surveiller l'utilisation du CPU sur Cloudwatch et recevoir une notification lorsqu'elle dépasse un seuil donné.
Amazon SNS aiderait grandement le développeur à créer une solution puisqu'il envoie des notifications en temps réel et prend en charge les processus A2A et A2P. Grâce à son modèle de déploiement en éventail, SNS peut immédiatement envoyer des notifications aux fonctions lambda qui peuvent s'efforcer de résoudre le problème et au développeur par courrier électronique pour l'informer du déclenchement de l'alarme.
Schéma d'architecture d'un système utilisant Amazon SNS pour la surveillance - image de l'auteur.
Amazon SQS serait un outil moins efficace pour cette tâche en raison de la rétention des messages. Si les développeurs souhaitent réagir aux dépassements de seuil, ils doivent recevoir des alertes en temps réel, ce qui n'est pas possible si les messages sont stockés dans des files d'attente. En outre, comme SQS utilise un système d'interrogation, les messages ne sont accessibles que lorsqu'ils sont interrogés par les consommateurs, ce qui augmente le temps de latence.
Utilisation conjointe de SQS et de SNS : Le meilleur des deux mondes
Amazon SQS et Amazon SNS ont des caractéristiques et des traits distincts, mais les utilisateurs d'AWS peuvent tirer le meilleur parti de ces deux services en les combinant pour créer un système de messagerie efficace, évolutif et tolérant aux pannes.
L'intégration des deux services est facile puisque les files d'attente SQS peuvent être des abonnés aux sujets SNS. Ainsi, SNS peut envoyer des notifications en temps réel aux files d'attente de SQS, après quoi SQS découplera tous les processus tout en assurant la livraison des messages.
Prenons l'exemple suivant : Un développeur AWS crée un système de soumission de documents qui extrait le contenu des documents soumis par les utilisateurs finaux. Ce système doit effectuer deux tâches pour tout document soumis :
- Traitez le document à l'aide d'une application de traitement de texte.
- Envoyez un courriel de confirmation à l'utilisateur final.
Le développeur peut combiner SQS et SNS pour créer une solution efficace :
Schéma d'architecture d'un système utilisant SNS en conjonction avec SQS-image d'auteur.
Dans ce flux de travail, un message est envoyé au sujet SNS lorsqu'un utilisateur soumet un document, ce qui pousse immédiatement le message vers la fonction lambda et la file d'attente SQS. La fonction lambda se charge d'envoyer l'e-mail de confirmation, tandis que la file d'attente SQS gère les messages, qui seront interrogés par l'instance EC2 qui héberge l'application de traitement de texte.
Conclusion
Amazon SQS et SNS sont des services essentiels de l'écosystème AWS, chacun offrant des avantages distincts. SNS offre des notifications en temps réel, tandis que SQS offre un traitement fiable des messages.
La solution de messagerie idéale pour résoudre un problème peut intégrer SNS, SQS ou les deux. En comprenant les tenants et les aboutissants de ces deux services, les développeurs AWS peuvent élaborer une solution de messagerie qui répond aux besoins uniques de leur entreprise, en garantissant l'efficacité, l'évolutivité et la résilience.
Si vous souhaitez approfondir vos connaissances sur AWS, vous pouvez suivre ces deux cours avancés :
Ou encore, préparez-vous à la certification AWS Cloud Practitioner grâce à notre cursus de compétences :
Obtenez une certification pour le poste de Data Engineer de vos rêves
Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.

FAQ
Puis-je intégrer Amazon SQS et SNS à d'autres services AWS ?
Oui, SQS et SNS s'intègrent parfaitement aux différents services AWS. Par exemple, vous pouvez déclencher des fonctions AWS Lambda avec des messages provenant de SQS ou SNS, envoyer des notifications à Amazon S3 lorsque de nouveaux fichiers sont téléchargés, ou utiliser Amazon CloudWatch pour surveiller les performances de SQS et SNS.
Comment garantir la fiabilité de la livraison des messages avec SQS et SNS ?
Avec SQS, vous pouvez utiliser des files d'attente de lettres mortes (DLQ) pour capturer les messages qui ne sont pas traités après plusieurs tentatives, ce qui garantit qu'aucune donnée n'est perdue. Pour SNS, vous pouvez configurer des tentatives ou des mécanismes de repli en cas d'échec de la livraison des messages, par exemple en utilisant SQS comme abonné de secours à un sujet SNS.
Puis-je combiner SQS et SNS dans une seule architecture ?
Oui, SQS et SNS peuvent être combinés pour créer une architecture de messagerie hybride. Par exemple, SNS peut envoyer des notifications en temps réel à plusieurs consommateurs, y compris des files d'attente SQS. Vous bénéficiez ainsi de notifications en temps réel (SNS) et d'un traitement fiable et différé (SQS).
Quels sont les modèles de tarification pour SQS et SNS ?
SQS et SNS suivent tous deux un modèle de tarification à l'utilisation. SQS facture en fonction du nombre de requêtes, du transfert de données et de fonctions supplémentaires telles que le polling de longue durée. Les frais de SRS sont basés sur le nombre de messages publiés et la méthode de livraison (par exemple, courrier électronique, SMS ou points d'extrémité HTTP). Il est important de contrôler votre utilisation pour maîtriser les coûts, en particulier pour les applications à haute fréquence.
Comment puis-je optimiser les performances lorsque j'utilise SQS et SNS ?
Pour optimiser les performances, vous pouvez utiliser la mise en lots avec SQS pour envoyer et traiter plusieurs messages à la fois, réduisant ainsi les demandes d'API et les coûts. Avec SNS, assurez-vous que vos abonnés peuvent gérer un débit élevé en configurant l'autoscaling pour vos services de traitement (comme Lambda ou EC2) afin de gérer efficacement les pics de trafic.
En tant qu'aspirant data scientist, j'excelle dans la transformation de données brutes en stratégies exploitables. Je suis spécialisé dans l'exploitation des techniques Python, SQL et d'apprentissage automatique pour trouver des solutions efficaces en matière d'analyse de données et d'architecture de pipelines ETL robustes qui ingèrent et traitent de grandes quantités de données.
Apprenez-en plus sur AWS grâce à ces cours !
cours
Technologie et services cloud AWS
cursus