Amazon SNS est un service pour l’envoi de notification push depuis une application vers l’utilisateur final ou d’autres programmes.
C’est un service de messagerie complet et qui permet la communication entre applications (Application To Application – A2A) ou personnes (Application To Person – A2B). Il vous permet de créer des topics (c’est-à-dire des sujets) qui seront l’accès logique et le canal de communication.
SNS utilise le paradigme pub/sub (publish / subscribe) pour la délivrance des messages. Ce principe établit que les éditeurs (publishers) envoient des messages par l’intermédiaire de canaux de communication communs appelés « sujet » (topic), alors que les abonnés (subscribers) reçoivent automatiquement les messages correspondant aux sujets pour lesquels ils sont abonnés.
Nous pouvons visualiser les topics comme une « boîte aux lettres » virtuelle qui permet aux différents abonnés de récupérer des messages sans avoir à communiquer directement avec les éditeurs. Ainsi, chaque abonné peut spécifier les types de messages qu’il souhaite recevoir, via ses différents abonnements.
Définition des termes importants
Il est important de comprendre certains termes relatifs aux services de messagerie avant de poursuivre. Le tableau ci-dessous vous permettra d’assimiler correctement ces principaux termes :
Terme | Description |
---|---|
Publisher (éditeur) |
|
Subscriber (abonné) |
|
Topic (sujet) |
|
Le diagramme ci-dessous illustre parfaitement les éléments fourni précédemment :
Quelles sont les fonctionnalités de AWS SNS ?
Voici quelques unes des fonctionnalités clés de AWS SNS :
- Mise à l’échelle : le service s’adapte automatiquement aux besoins croissants des volumes de message
- Encryption des messages : la protection des messages est une priorité. SNS protège tous les messages selon des modèles d’encryption. Ils sont automatiquement décryptés une fois transmis au point de terminaison du destinataire
- Filtrage des messages : l’abonné peut changer la politique de filtrage afin de ne recevoir que les notifications pertinentes
- Réplication : lorsqu’un message est envoyé à un topic, il est répliqué sur plusieurs points de terminaison
- Notification mobile : des actions depuis l’application (initiées par vos utilisateurs) ou depuis une logique métier basée sur le cloud peuvent être déclenchées
- Email : Amazon SNS peux envoyer des messages mail (SMTP)
Comparatif entre SNS et SQS
Il s’agit de deux services de messagerie proposés par Amazon Web Services. Le tableau ci-après vous permettra d’en comprendre les différences :
Fonctionnalité | Amazon SNS |
Amazon SQS |
---|---|---|
Modèle | Pub / Sub | File d’attente |
Utilisation principale | Envoi de messages et de notifications à plusieurs destinataires | Gestion de file d’attente pour le délivrement des messages |
Distribution | Tous les abonnés reçoivent les messages | Les messages sont consommés par un seul consommateur à la fois |
Protocoles de communication | HTTP, HTTPS, email, SMS, mobile, push, etc. | Amazon SQS, HTTP, HTTPS |
Format de message | Json, Xml, texte brut, etc. | Json, Xml, texte brut, etc. |
Traitement des messages | Pas de traitement intégré, mais peut être couplé avec Amazon AWS Lambda | Traitement intégré via des workers de traitement personnalisables |
Gestion de la capacité | Ajustable dynamiquement | Gérée par le nombre de workers et le nombre de file d’attente |
En résumé, Amazon SNS est conçu pour envoyer des messages à plusieurs destinataires via un modèle de messagerie pub/sub, tandis qu’Amazon SQS est conçu pour la gestion de files d’attente de messages, avec un modèle de messagerie de type FIFO (premier entré, premier sorti).
Ils peuvent être utilisés conjointement afin de créer une architecture de messagerie complexe et hautement évolutive. Comme nous venons de le voir, SNS permet de publier un message vers différents points de terminaisons pris en charge. Lorsqu’une file SQS s’abonne à un sujet SNS, chaque message envoyé par ce sujet SNS rejoint alors la file d’attente, avec bien entendu le corps du message mais également ses différents attributs. Le message est alors presque garantit d’être correctement distribué. « Presque« , car il se peut que la file d’attente SQS soit indisponible. Dans ce cas, Amazon SNS fera de nouvelles tentatives (exactement 100.010 tentatives sur 23 jours) avant que le message ne soit supprimé.
Si votre file d’attente est indisponible pendant un tel délai, c’est que vous avez alors très certainement un problème lié à votre infrastructure de messagerie.
Pour avoir plus d’informations concernant Amazon SQS, vous pouvez lire notre article sur ce sujet.
Quelles sont les possibilités d’intégration de AWS SNS ?
Vous le savez certainement, l’une des grandes forces d’Amazon AWS est l’intégration possible et le fonctionnement conjoint entre ses différents services. SNS ne fait pas exception à cette règle, et peut très facilement s’intégrer à différents services AWS dans le but d’avoir un système très complet. Voici quelques exemples d’intégrations possibles.
Les messages Amazon SNS peuvent être utilisés comme déclencheur de fonctions AWS Lambda qui effectueront diverses opérations.
Nous venons d’en parler, Amazon SNS et SQS sont souvent utilisés ensemble, l’un pour la publication des messages, l’autre pour la mise en file d’attente de ces messages.
En cas de défaillance d’une instance EC2, d’une base de données ou d’une autre ressource, Amazon SNS peut être utilisé pour en alerter les administrateurs système via Cloudwatch.
Amazon SNS peut publier des notifications sur les évènements liés à l’infrastructure (service AWS Elastic Beanstalk par exemple).
Vos utilisateurs utilisant vos ressources S3 peuvent être notifiés de nouveaux évènements (téléchargement ou modification d’informations dans un bucket S3 par exemple).
Conclusion
AWS SNS est un outil de messagerie puissant et polyvalent qui permet l’envoi de messages vers de multiples points de terminaison (tels que les mails, SMS, files d’attente SQS, des applications mobiles, etc.). Amazon SNS peut également être intégré avec d’autres services AWS pour créer des architectures de communication résilientes et évolutives.
Maintenant que vous savez tout sur Amazon SNS, vous pouvez commencer à vous former. Pour ce faire, n’hésitez pas à consulter la formation DataScientest dédiée à Amazon Web Service.