2017-04-11 4 views
4

Quelle est la meilleure option pour coordonner les tâches entre les microservices? Par exemple, si j'ai un microservice qui traite les informations client et qui doit notifier d'autres microservices, est-il préférable de créer un workflow (AWS Steps) entre les microservices ou d'utiliser un SNS? Je pense que AWS Steps va coupler mes fonctions lambda, et pas SNS.AWS SNS vs AWS Fonctions d'étape

Répondre

4

Fonctions d'étape AWS est un step qui exécute les fonctions AWS Lambda. Si votre tâche implique des activités «faites ceci, alors ceci», alors les fonctions d'étape pourraient être une bonne option. Il inclut la logique pour déterminer l'étape suivante et gère automatiquement les tentatives. C'est la version moderne de Amazon Simple Workflow (SWF).

Amazon Simple Notification Service (SNS) peut également déclencher des fonctions Lambda, mais il ne gère pas la logique ni les tentatives. C'est un bon choix pour les services découplés, en particulier pour les ventilateurs où plusieurs abonnés reçoivent le même message d'un sujet - par exemple, pour déclencher plusieurs fonctions Lambda ou envoyer plusieurs notifications. C'est essentiellement un service public/abonnement, dont Lambda est l'un des types d'abonnés.

Le choix dépendra de votre cas d'utilisation particulier. Si vous ne souhaitez pas modifier les choses pour utiliser les fonctions d'étape, envoyez des notifications via SNS. Si vous envoyez parfois des notifications (par exemple des e-mails) plutôt que de simplement déclencher des fonctions Lambda, utilisez SNS.

Actuellement, les fonctions pas-à-pas ne sont pas disponibles dans toutes les régions, alors que le SNS est partout, ce qui peut également influencer votre choix.

4

Cela dépend du type de coordination que vous voulez. Synchrone ou asynchrone.

Si elle est synchrone et si vous voulez vraiment une certaine coordination entre eux, puis service Amazon Simple Notification (SNS) ne serait pas utile et AWS étape Fonctions serait la voie à suivre. Mais si le besoin est asynchrone, et que vous souhaitez juste notifier/invoquer les microservices, alors le SNS conviendrait mieux. Comme je peux le lire à partir de votre question «besoin de notifier d'autres microservices», je suppose qu'il s'agit simplement de les notifier (par opposition à les coordonner) et chacun sait quoi faire de plus sans compter sur d'autres microservices. Et si cela est vrai alors SNS est un bon ajustement.