Introduction à 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.

Introduction à 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 grâce à un modèle de programmation et à une infrastructure permettant de coordonner les composants distribués et de gérer leur état d'exécution de manière fiable. Avec Amazon SWF, vous pouvez vous concentrer sur les aspects qui permettront de différencier votre application des autres.

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 sont 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 leflux 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 unAWSressource appelée undomaine, qui contrôle la portée du flux de travail. UnAWSpeut utiliser plusieurs domaines, chacun pouvant contenir plusieurs flux de travail, mais les flux de travail de différents domaines ne peuvent pas interagir.

Lors de la conception d'un flux de travail Amazon SWF, vous définissez précisément chacune des activités requises. Ensuite, vous enregistrez chacune d'elles avec Amazon SWF comme 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 a le concept d'untâche d'activitéqui représente une 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é—et les outils de traitement d'activité qui les exécutent—peuvent être exécutés de façon 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 consiste à fonctionner comme hub central via lequel les données sont échangées entre le décideur, les outils de traitement d'activité et d'autres entités appropriées telles que la personne qui administre le flux de travail. Amazon SWF conserve également l'état de chaque exécution de flux de travail, ce qui évite à votre application de stocker l'état de manière durable.

Le décideur oriente le flux de travail de réception en recevant les tâches de décision d'Amazon SWF et en renvoyant à 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.

Pour que les outils de traitement d'activité et le décideur reçoivent leurs tâches (tâches d'activité et tâches de décision, respectivement), ils interrogent le service SWF.

Amazon SWF informe le décideur de l'état du flux de travail en incluant une copie de l'historique d'exécution de flux de travail actuel dans chaque tâche de décision. 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.

Utilisation du contrôle d'accès Amazon SWFAWS Identity and Access Management(IAM), ce qui vous permet de fournir l'accès àAWSressources de façon contrôlée et limitée qui n'expose pas vos clés d'accès. 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 regroupant toutes les idées présentées dans les sections précédentes, voici une vue d'ensemble des étapes à suivre pour développer et exécuter 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 avec Amazon SWF.

    Vous pouvez ici procéder par programmation ou à l'aide d'AWS Management Console.

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

    Ces acteurs peuvent être exécutés sur n'importe quel périphérique informatique ayant accès à un point de terminaison SWF. Par exemple, vous pouvez utiliser des instances de calcul dans le cloud, telles qu'Amazon Elastic Compute Cloud (Amazon EC2), des serveurs de votre centre de données, voire un appareil mobile, pour héberger un décideur ou un outil de traitement d'activité. Une fois démarrés, le décideur et les outils de traitement d'activité se mettent à interroger Amazon SWF pour les tâches dans.

  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. Lors du lancement d'une exécution, 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 via 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.