Présentation d'Amazon SWF - Amazon Simple Workflow Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Présentation d'Amazon SWF

Un nombre croissant d'applications reposent sur un traitement asynchrone et distribué. L'évolutivité de ces applications est le motif principal d'utilisation de cette approche. Grâce à la conception de composants distribués autonomes, les développeurs ont la liberté de déployer et de dimensionner des parties de l'application, même si la charge applicative augmente. La disponibilité des services de cloud est un autre motif d'utilisation. Alors que les développeurs d'applications commencent à tirer parti du cloud computing, ils ont besoin de combiner les ressources existantes sur site avec des ressources supplémentaires basées sur le cloud. La nature essentiellement distribuée du processus modélisé par l'application constitue une autre raison pour laquelle l'approche distribuée asynchrone est privilégiée. Par exemple, l'automatisation d'un processus de traitement des commandes peut couvrir plusieurs systèmes et tâches humaines.

Le développement de ces applications peut être compliqué. Il implique la coordination de l'exécution de plusieurs composants distribués, ainsi que la gestion de latences accrues et le manque de fiabilité inhérent à toute communication à distance. Pour développer ces applications, vous devez généralement écrire une infrastructure compliquée incluant des files d'attente de messages et des bases de données, ainsi que la logique complexe permettant de les synchroniser.

Amazon Simple Workflow Service (Amazon SWF) facilite le développement d'applications asynchrones et distribuées en fournissant un modèle de programmation et une infrastructure permettant de coordonner les composants distribués et de maintenir leur état d'exécution de manière fiable. En vous appuyant sur Amazon SWF, vous pouvez vous concentrer sur la création des aspects de votre application qui la différencient.

Concepts fondamentaux liés aux flux de travail

Les concepts de base nécessaires à la compréhension des flux de travail Amazon SWF sont présentés ci-dessous et expliqués plus en détail dans les sections suivantes de ce guide. La discussion suivante fournit une présentation générale de la structure et les composants d'un flux de travail.

Le concept fondamental d'Amazon SWF est le flux de travail. Un flux de travail est un ensemble d'activités qui concourent à atteindre un objectif spécifique, avec une logique qui permet de les coordonner. Par exemple, un flux de travail peut consister à recevoir une commande client et à effectuer les actions nécessaires pour la traiter. Chaque flux de travail s'exécute dans une AWS ressource appelée domaine, qui contrôle l'étendue du flux de travail. Un AWS compte peut comporter plusieurs domaines, chacun pouvant contenir plusieurs flux de travail, mais les flux de travail des différents domaines ne peuvent pas interagir.

Lorsque vous concevez un flux de travail Amazon SWF, vous définissez précisément chacune des activités requises. Vous enregistrez ensuite chaque activité auprès d'Amazon SWF en tant que type d'activité. Lorsque vous enregistrez l'activité, vous fournissez des informations comme un nom et une version, ainsi que certaines valeurs de délai basées sur le temps que sa réalisation devrait prendre. Par exemple, si un client espère recevoir une commande en 24 heures, vous pouvez inclure ce délai dans les valeurs que vous spécifiez lors de l'enregistrement de vos activités.

Lorsque vous exécutez le flux de travail, il se peut que certaines activités nécessitent d'être effectuées plusieurs fois, peut-être avec entrées variables. Par exemple, dans un flux de travail de commande client, vous pouvez avoir une activité qui gère les articles achetés. Si le client achète plusieurs articles, cette activité devra être exécutée plusieurs fois. Amazon SWF utilise le concept d'une tâche d'activité qui représente l'invocation d'une activité. Dans notre exemple, le traitement de chaque article serait représenté par une tâche d'activité unique.

Un outil de traitement d'activité est un programme qui reçoit les tâches d'activité, qui les accomplit et qui renvoie les résultats. Notez que la tâche elle-même peut être réalisée par une personne, auquel cas cette dernière doit utiliser le logiciel de l'outil de traitement d'activité pour recevoir et terminer la tâche. Par exemple, il peut s'agir d'un analyste de statistiques, qui reçoit des ensembles de données, les analyse, puis renvoie l'analyse.

Les tâches d'activité, ainsi que les intervenants qui les exécutent, peuvent s'exécuter de manière synchrone ou asynchrone. Elles peuvent être distribuées sur plusieurs ordinateurs, voire dans différentes régions géographiques, ou elles peuvent être exécutées sur le même ordinateur. Des outils de traitement d'activité séparés peuvent être écrits dans des langages de programmation différent et peuvent utiliser des systèmes d'exploitation distincts. Par exemple, un outil de traitement d'activité peut être exécuté sur un ordinateur de bureau en Asie, tandis qu'un autre peut être exécuté sur un ordinateur portable aux États-Unis.

La logique de coordination d'un flux de travail se trouve dans un logiciel appelé décideur. Le décideur planifie les tâches d'activité, fournit les données d'entrée aux outils de traitement d'activité, traite les événements qui arrivent lorsque le flux de travail est en cours, puis termine (ou ferme) le flux de travail lorsque l'objectif est atteint.

Le rôle du service Amazon SWF est de fonctionner comme un hub central fiable via lequel les données sont échangées entre le décideur, les responsables de l'activité et d'autres entités pertinentes telles que la personne administrant le flux de travail. Amazon SWF conserve également l'état de chaque exécution de flux de travail, ce qui évite à votre application d'avoir à stocker l'état de manière durable.

Le décideur dirige le flux de travail en recevant les tâches de décision d'Amazon SWF et en répondant à Amazon SWF avec des décisions. Une décision représente une action ou un ensemble d'actions qui constitue les prochaines étapes du flux de travail. Une décision classique consiste à planifier une tâche d'activité. Les décisions peuvent aussi servir à définir des temporisateurs afin de différer l'exécution d'une tâche d'activité, à demander l'annulation de tâches d'activité en cours et à terminer ou à fermer le flux de travail.

Le mécanisme par lequel les travailleurs actifs et le décideur reçoivent leurs tâches (tâches d'activité et tâches de décision respectivement) consiste à interroger le service Amazon SWF.

Amazon SWF informe le décideur de l'état du flux de travail en incluant, à chaque tâche de décision, une copie de l'historique d'exécution du flux de travail actuel. L'historique d'exécution du flux de travail se compose d'événements. Chacun d'eux représente un changement important de l'état d'exécution du flux de travail. Par exemple, il peut s'agir de l'achèvement d'une tâche, de la notification de l'expiration d'une tâche ou de l'expiration d'un temporisateur qui avait été défini dans l'exécution de flux de travail. L'historique est un enregistrement complet, cohérent et fiable de la progression du flux de travail.

Le contrôle d'accès Amazon SWF utilise AWS Identity and Access Management (IAM), ce qui vous permet de fournir un accès aux AWS ressources de manière contrôlée et limitée. Par exemple, vous pouvez autoriser un utilisateur à accéder à votre compte, mais uniquement pour exécuter certains flux de travail dans un domaine particulier.

Exécution de flux de travail

En rassemblant les idées abordées dans les sections précédentes, voici un aperçu des étapes de développement et d'exécution d'un flux de travail dans Amazon SWF :

  1. Créez des outils de traitement d'activité qui mettent en œuvre les étapes de traitement de votre flux de travail.

  2. Créez un décideur pour mettre en œuvre la logique de coordination de votre flux de travail.

  3. Enregistrez vos activités et votre flux de travail auprès d'Amazon SWF.

    Vous pouvez effectuer cette étape par programmation ou en utilisant le. AWS Management Console

  4. Lancez les outils de traitement d'activité et le décideur.

    Ces acteurs peuvent s'exécuter sur n'importe quel appareil informatique pouvant accéder à un point de terminaison Amazon SWF. Par exemple, vous pouvez utiliser des instances de calcul dans le cloud, telles qu'Amazon Elastic Compute Cloud (Amazon EC2), des serveurs dans votre centre de données ou même un appareil mobile, pour héberger un décideur ou un agent d'activité. Une fois le processus lancé, le décideur et les responsables de l'activité doivent commencer à interroger Amazon SWF pour identifier les tâches.

  5. Démarrez une ou plusieurs exécutions de flux de travail.

    Les exécutions peuvent être lancées soit par programmation, soit via AWS Management Console.

    Chaque exécution est indépendante et vous pouvez fournir à chacune son propre ensemble de données d'entrée. Lorsqu'une exécution est lancée, Amazon SWF planifie la tâche de décision initiale. En réponse, le décideur commence à générer des décisions qui initient des tâches de l'activité. L'exécution continue jusqu'à ce que le décideur prenne la décision de fermer l'exécution.

  6. Affichez les exécutions de flux de travail à l'aide du AWS Management Console.

    Vous pouvez filtrer et afficher tous les détails des exécutions en cours et des exécutions terminées. Par exemple, vous pouvez sélectionner une exécution ouverte pour afficher les tâches qui ont eu lieu et leurs résultats.

Configuration

Vous avez la possibilité de développer pour Amazon SWF dans l'un des langages de programmation pris en charge par. AWS Pour les développeurs Java, AWS Flow Framework il est également disponible. Pour plus d'informations, consultez le AWS Flow Frameworksite Web et consultez AWS Flow Framework le guide du développeur Java.

Pour réduire la latence et stocker les données dans un emplacement répondant à vos besoins, Amazon SWF fournit des points de terminaison dans différentes régions.

Chaque point de terminaison d'Amazon SWF est totalement indépendant. Les domaines, les flux de travail et les activités que vous avez enregistrés dans une région ne partageront pas de données ou d'attributs avec ceux d'une autre région.

Lorsque vous enregistrez un domaine, un flux de travail ou une activité Amazon SWF, celui-ci n'existe que dans la région dans laquelle vous l'avez enregistré. Par exemple, vous pouvez enregistrer un domaine nommé SWF-Flows-1 dans deux régions différentes, mais elles ne partageront aucune donnée ni aucun attribut entre elles, chacune agissant comme un domaine totalement indépendant.

Pour obtenir la liste des points de terminaison Amazon SWF, consultez Régions et points de terminaison.