Amazon SNS : Le service de messagerie connecté à AWS

-
4
 m de lecture
-

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.

Source : aws.amazon.com

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)
Image
  • L’éditeur est l’entité chargée de l’envoi des messages sur différents sujets, et points de terminaisons. Nous pouvons imaginer un éditeur comme une personne qui envoie des messages dans une boîte aux lettres.
    • Les points de terminaison peuvent être des mails, SMS, du HTTP, des applications mobiles, ou encore d’autres services Amazon (comme Lambda ou SQS)
Subscriber (abonné)
Image
  • L’abonné est l’entité qui reçoit les messages publiés concernant un sujet. Nous pouvons imaginer l’abonné comme une personne qui récupère son courrier dans sa boîte aux lettres
    • Les abonnés s’abonnent à un sujet dans le but de recevoir les messages
    • Par défaut, SNS offre 10 millions d’abonnements par sujet
Topic (sujet)
Image
  • Le sujet est le canal de communication qui permet aux éditeurs de publier leurs messages et aux abonnés de les recevoir. On pourrait imaginer ceci comme une boîte aux lettres partagée entre plusieurs personnes, et où chaque personne peut recevoir les lettres qui lui sont adressées
    • Par défaut, SNS offre 100.000 sujets par compte
    • Mis à part les messages SMS, les messages Amazon SNS peuvent contenir un maximum de 256 Ko de donnée texte, en incluant du format XML, Json ou du texte non formaté

Le diagramme ci-dessous illustre parfaitement les éléments fourni précédemment :

Source : aws.amazon.com

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
Image
Amazon SQS
Image
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.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.
Poursuivre la lecture

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?