Passer au contenu principal

Généralités

Ouvrir tout

Amazon Simple Workflow Service (SWF) est un service Web qui facilite la coordination des tâches sur des composants d'application distribués. Amazon SWF permet de concevoir des applications destinées à de nombreux cas d'utilisation, notamment le traitement multimédia, les back-ends d'applications Web, les flux de processus métier et les pipelines d'analyse, afin de coordonner les tâches. Les tâches représentent des appels à différentes étapes de traitement dans une application qui peuvent être effectuées par du code exécutable, des appels de service Web, des actions humaines et des scripts.

La coordination des tâches implique la gestion des dépendances d'exécution, de la planification et de la simultanéité conformément au flux logique de l'application. Avec Amazon SWF, les développeurs ont le contrôle total de la mise en œuvre des étapes de traitement et de la coordination des tâches qui les sous-tendent, sans se soucier des complexités sous-jacentes telles que le suivi de leur progression et le maintien de leur état. Amazon SWF fournit également le AWS Flow Framework pour aider les développeurs à utiliser la programmation asynchrone dans le développement de leurs applications. En utilisant Amazon SWF, les développeurs bénéficient d'une programmation simplifiée et peuvent améliorer l'utilisation des ressources, les latences et les débits de leurs applications.

AWS Step Functions est un service entièrement géré qui facilite la coordination des composants d'applications et de microservices distribués en utilisant des flux visuels. Au lieu d'écrire un programme décideur, vous définissez des automates finis dans JSON. Il est conseillé aux clients d'AWS d'avoir recours à Step Functions pour de nouvelles applications. Si Step Functions ne répond pas à vos besoins, optez plutôt pour Amazon Simple Workflow (SWF). Avec Amazon SWF, vous maîtrisez entièrement votre logique d'orchestration, cependant le développement des applications est plus complexe. Vous pouvez écrire des programmes décideurs dans le langage de votre choix, ou vous appuyer sur le cadre Flow pour utiliser des structures de programmation qui organisent les interactions asynchrones pour vous. AWS continuera à proposer le service Amazon SWF, le framework Flow et le support technique pour tous les clients Amazon SWF.

Dans Amazon SWF, les tâches invoquent des étapes logiques à exécuter au sein des applications. Les tâches sont traitées par des programmes de travail qui interagissent avec Amazon SWF pour obtenir des tâches, les traiter et renvoyer leurs résultats. Un programme exécutant met en œuvre une étape de traitement de l'application. Vous pouvez créer un programme exécutant dans différents langages de programmation et même réutiliser des composants existants pour créer rapidement le programme exécutant. Vous pouvez, par exemple, utiliser des services de cloud, des applications d'entreprise, des systèmes existants et même de simples scripts pour mettre en oeuvre des programmes exécutants. En contrôlant indépendamment le nombre de programmes exécutants chargés de traiter chaque type de tâche, vous pouvez contrôler efficacement le débit de votre application.

Pour coordonner l'exécution de l'application entre les programmes exécutants, vous écrivez un programme appelé programme décideur dans le langage de programmation de votre choix. La séparation des étapes de traitement et leur coordination permettent de gérer votre application de manière contrôlée et vous offrent la flexibilité nécessaire pour les déployer, les exécuter, les faire évoluer et les mettre à jour de manière indépendante. Vous pouvez choisir de déployer les travailleurs et les décideurs dans le cloud (par exemple Amazon EC2 ou Lambda) ou sur des machines situées derrière des pare-feux d'entreprise. Grâce au découplage entre les programmes exécutants ou décideurs, votre logique métier peut être dynamique et votre application peut être rapidement mise à jour pour répondre aux nouvelles exigences. Par exemple, vous pouvez supprimer, ignorer ou réessayer des tâches et créer de nouveaux flux d'applications simplement en modifiant le programme décideur.

En mettant en œuvre des programmes exécutants ou décideurs, vous concentrez sur votre logique d'application différenciée en ce qui concerne l'exécution des étapes de traitement proprement dites et leur coordination. Amazon SWF gère les détails sous-jacents tels que le stockage des tâches jusqu'à ce qu'elles puissent être attribuées, le suivi des tâches assignées et la fourniture d'informations cohérentes sur leur achèvement. Amazon SWF fournit également une visibilité continue au niveau de chaque tâche via des API et une console.

Amazon SWF peut être utilisé pour relever de nombreux défis qui se présentent lors de la création d'applications avec des composants distribués. Par exemple, vous pouvez utiliser Amazon SWF et le Framework AWS Flow qui l'accompagne pour :

  • Écrire vos applications sous forme de programmes asynchrones à l'aide de constructions de programmation simples qui résument des détails tels que le lancement de tâches à exécuter à distance et le suivi de l'état d'exécution du programme.
  • Maintenir l'état d'exécution de votre application (par exemple, quelles étapes sont terminées, lesquelles sont en cours d'exécution, etc.). Il n'est pas nécessaire d'utiliser des bases de données, des systèmes personnalisés ou des solutions ad hoc pour conserver l'état d'exécution.
  • Communiquer et gérer le flux de travail entre les composants de votre application. Avec Amazon SWF, vous n'avez pas besoin de concevoir un protocole de messagerie ni de vous soucier des tâches perdues ou dupliquées.
  • Centraliser la coordination des étapes de votre application. Votre logique de coordination n'a pas besoin d'être dispersée entre différents composants, mais peut être encapsulée dans un seul programme.
  • Intégrer un éventail de programmes et de composants, comprenant des systèmes existants et des services de cloud tiers à votre application. En apportant à votre application de la souplesse dans la manière dont ses composants sont déployés, Amazon SWF vous permet de faire migrer progressivement des composants depuis des centres de données privés vers l'infrastructure de cloud public, sans pour autant affecter la disponibilité ni les performances de l'application.
  • automatiser les processus comprenant des tâches humaines de longue durée (comme des approbations, des révisions, des investigations, etc.). Amazon SWF suit de manière fiable l'état des étapes de traitement qui s'étendent sur plusieurs jours ou plusieurs mois.
  • Créer une couche d'application au-dessus d'Amazon SWF afin de prendre en charge des langues spécifiques à un domaine pour vos utilisateurs finaux. Comme Amazon SWF vous offre une flexibilité totale dans le choix de votre langage de programmation, vous pouvez facilement créer des interpréteurs pour des langages spécialisés (par exemple XPDL) et des interfaces utilisateur personnalisées, y compris des outils de modélisation.
  • Obtenir des pistes d'audit détaillées et une visibilité sur toutes les instances en cours d'exécution de vos applications. Vous pouvez également intégrer les fonctionnalités de visibilité fournies par Amazon SWF dans vos propres interfaces utilisateur à l'aide des API fournies par Amazon SWF.

Les clients ont utilisé Amazon SWF pour créer des applications d'encodage vidéo, de commerce social, de fourniture d'infrastructures, de pipelines MapReduce, de gestion des processus métier et de nombreux autres cas d'utilisation. Pour plus de détails sur les cas d'utilisation, consultez la section « Quels sont les cas d'utilisation qui peuvent être résolus avec SWF ? » Pour découvrir comment les clients utilisent Amazon SWF aujourd'hui, consultez nos études de cas.

Lors de la création de solutions pour coordonner des tâches dans un environnement distribué, les développeurs doivent tenir compte de plusieurs variables. Les tâches qui régissent les étapes de traitement peuvent être longues et peuvent échouer, s'arrêter ou nécessiter des redémarrages. Ils se complètent souvent avec des débits et des latences variables. Le suivi et la visualisation des tâches dans tous ces cas sont non seulement difficiles, mais constituent également un travail indifférencié. À mesure que les applications et les tâches évoluent, les développeurs sont confrontés à des problèmes complexes liés aux systèmes distribués. Par exemple, ils doivent s'assurer qu'une tâche n'est assignée qu'une seule fois et que ses résultats sont suivis de manière fiable en cas de pannes et de pannes inattendues. Grâce à Amazon SWF, les développeurs peuvent se concentrer sur leur logique applicative spécifique, comme la manière de traiter des tâches et de les coordonner.

Les produits de flux de travail existants obligent souvent les développeurs à apprendre des langages spécialisés, à héberger des bases de données coûteuses et à abandonner le contrôle de l'exécution des tâches. Les langages spécialisés compliquent l'expression d'applications complexes et ne sont pas suffisamment flexibles pour effectuer des modifications rapidement. Amazon SWF, au contraire, est un service de cloud permettant l'utilisation de langages de programmation courants et donnant la possibilité aux développeurs de contrôler le traitement des tâches. En adoptant un modèle faiblement couplé pour les applications distribuées, Amazon SWF permet d'apporter des modifications de manière agile.

Dans Amazon SWF, une application est mise en œuvre en construisant des programmes exécutants et un programme décideur qui communiquent directement avec le service. Les programmes exécutants sont des programmes qui interagissent avec Amazon SWF pour obtenir des tâches, traiter les tâches reçues et renvoyer les résultats. Le programme décideur contrôle la coordination des tâches, c'est-à-dire leur ordre d'exécution, leur simultanéité et leur programmation selon la logique applicative. Les programmes exécutants et décideurs peuvent fonctionner sur l'infrastructure de cloud, comme Amazon EC2 ou sur des machines derrière des pare-feux. Amazon SWF négocie les interactions entre les programmes exécutants et décideurs. Il permet au programme décideur d'obtenir des vues cohérentes de l'avancement des tâches et d'en lancer de nouvelles de manière continue. Parallèlement, Amazon SWF stocke les tâches, les attribue aux programmes exécutants lorsqu'elles sont prêtes et surveille leur progression. Il veille à ce qu'une tâche ne soit attribuée qu'une seule fois et ne soit jamais dupliquée. Comme Amazon SWF conserve l'état de l'application de manière durable, les programmes exécutants et décideurs n'ont pas à suivre l'état d'exécution. Ils peuvent fonctionner indépendamment et évoluer rapidement. Consultez la section Fonctionnalité de la page détaillée d'Amazon SWF pour en savoir plus sur les étapes à suivre pour créer des applications avec Amazon SWF.

Un flux de travail peut être exécuté plusieurs fois simultanément sur Amazon SWF. Chaque exécution est appelée exécution de flux de travail ou exécution. Les exécutions sont identifiées par des noms uniques. Vous utilisez la console de gestion Amazon SWF (ou les API de visibilité) pour visualiser vos exécutions dans leur ensemble et pour effectuer des recherches détaillées sur une exécution donnée afin de voir les détails au niveau des tâches.

Comme les autres services AWS, Amazon SWF fournit un SDK de base pour les API des services Web. Amazon SWF propose également un SDK appelé AWS Flow Framework qui vous permet de développer rapidement et facilement des applications basées sur Amazon SWF. AWS Flow Framework résume les détails de la coordination au niveau des tâches à l'aide de structures de programmation familières. Lors de l'exécution de votre programme, le framework appelle Amazon SWF, suit l'état d'exécution de votre programme à l'aide de l'historique des exécutions conservé par Amazon SWF et invoque les parties pertinentes de votre code au bon moment. En proposant un cadre de programmation intuitif pour accéder à Amazon SWF, AWS Flow Framework permet aux développeurs d'écrire des applications complètes sous forme d'interactions asynchrones structurées dans un flux de travail. Pour plus de détails, consultez la section intitulée « Qu'est-ce que l'AWS Flow Framework ? »

Amazon SQS et Amazon SWF sont deux services qui facilitent l'intégration d'applications ou de microservices :

  • Amazon Simple Queue Service (Amazon SQS) s'appuie sur des files d'attente hébergées fiables et hautement évolutives pour stocker les messages qui transitent entre des applications ou des microservices. Avec Amazon SQS, vous pouvez déplacer des données entre composants d'applications distribuées et découpler ces composants.
  • Amazon Simple Workflow Service (Amazon SWF) est un service Web qui facilite la coordination de travaux parmi les composants d'applications distribuées.

Voici les principales différences entre Amazon SQS et Amazon SWF :

  • Les actions de l'API d'Amazon SWF sont axées sur les tâches. Les actions de l'API d'Amazon SQS sont axées sur les messages.
  • Amazon SWF garde une trace de l'ensemble des tâches et événements d'une application. Amazon SQS nécessite que vous assuriez vous-même le suivi par application, en particulier si votre application utilise plusieurs files d'attente.
  • Amazon SWF Console et les API de visibilité offrent une vue orientée application qui vous permet notamment de rechercher des exécutions, de zoomer sur les détails d'une exécution et d'administrer des exécutions. Amazon SQS nécessite que vous implémentiez vous-même ces fonctionnalités supplémentaires.
  • Amazon SWF propose plusieurs fonctionnalités qui facilitent le développement d'applications, comme la transmission de données entre les tâches, la signalisation ou encore la flexibilité en matière de distribution des tâches. Amazon SQS nécessite que vous implémentiez vous-même diverses fonctionnalités au niveau des applications.
  • En plus d'un SDK intégré chargé de faire appel aux API de service, Amazon SWF propose le kit AWS Flow Framework, qui vous permet de développer rapidement des applications distribuées à l'aide de syntaxes de programmation visant à structurer des interactions asynchrones.

Bien que vous puissiez utiliser Amazon SQS pour développer des flux de travail visant à coordonner votre application distribuée, Amazon SWF vous propose cette fonction clé en main, ainsi que d'autres capacités au niveau des applications.

Nous vous recommandons d'essayer Amazon SQS et Amazon SWF pour déterminer quelle solution répond le mieux à vos besoins.

Amazon SWF a été appliqué dans divers cas d'utilisation dans les domaines du traitement multimédia, de l'automatisation des processus métier, de l'analyse des données, de la migration vers le cloud et du traitement par lot. Voici quelques exemples :

Cas d'utilisation N° 1 : encodage vidéo à l'aide d'Amazon S3 et Amazon EC2. Dans ce cas d'utilisation, les vidéos volumineuses sont téléchargées sur Amazon S3 par morceaux. Le téléchargement de morceaux doit être surveillé. Une fois qu'un morceau est téléchargé, il est encodé en le téléchargeant sur une instance Amazon EC2. Le morceau encodé est stocké dans un autre emplacement Amazon S3. Une fois que tous les morceaux ont été encodés de cette manière, ils sont combinés en un fichier encodé complet qui est stocké dans son intégralité sur Amazon S3. Des défaillances peuvent survenir au cours de ce processus si un ou plusieurs morceaux rencontrent des erreurs d'encodage. Ces défaillances doivent être détectées et traitées.

Avec Amazon SWF : l'ensemble de l'application est conçu comme un flux de travail dans lequel chaque fichier vidéo est traité comme une seule exécution de flux de travail. Les tâches traitées par les différents travailleurs sont les suivantes : télécharger un morceau sur Amazon S3, télécharger un morceau d'Amazon S3 vers une instance Amazon EC2 et l'encoder, stocker un morceau sur Amazon S3, combiner plusieurs morceaux en un seul fichier et télécharger un fichier complet sur Amazon S3. Le programme décideur lance des tâches simultanées pour exploiter le parallélisme dans le cas d'utilisation. Il lance une tâche pour encoder un bloc téléchargé sans attendre que d'autres morceaux soient chargés. Si une tâche pour un morceau échoue, le programme décideur l'exécute à nouveau pour ce lot uniquement. L'état de l'application conservé par Amazon SWF permet au programme décideur de contrôler le flux de travail. Par exemple, le programme décideur l'utilise pour détecter quand tous les morceaux ont été codés et pour extraire leurs emplacements Amazon S3 afin de pouvoir les combiner. La progression de l'exécution est suivie en permanence dans la console de gestion Amazon SWF. Si des défaillances surviennent, les tâches spécifiques qui ont échoué sont identifiées et utilisées pour localiser les morceaux défaillants.

Cas d'utilisation N° 2 : traitement de catalogues de produits volumineux à l'aide d'Amazon Mechanical Turk. Lors de la validation des données dans les grands catalogues, les produits du catalogue sont traités par lots. Différents lots peuvent être traités simultanément. Pour chaque lot, les données du produit sont extraites des serveurs du centre de données et transformées en fichiers CSV (valeurs séparées par des virgules) requis par l'interface utilisateur du demandeur (RUI) d'Amazon Mechanical Turk. Le CSV est téléchargé pour remplir et exécuter les HIT (Human Intelligence Task). Une fois les HIT terminées, le fichier CSV obtenu est transformé en sens inverse pour rétablir le format d'origine des données. Les résultats sont ensuite évalués et les employés d'Amazon Mechanical Turk sont payés pour obtenir des résultats acceptables. Les défaillances sont éliminées et retraitées, tandis que les résultats HIT acceptables sont utilisés pour mettre à jour le catalogue. Au fur et à mesure du traitement des lots, le système doit suivre la qualité des employés d'Amazon Mechanical Turk et ajuster les paiements en conséquence. Les HIT qui ont échoué sont regroupés et envoyés à nouveau via le pipeline.

Avec Amazon SWF : le cas d'utilisation ci-dessus est implémenté sous la forme d'un ensemble de flux de travail. Un flux de travail BatchProcess gère le traitement d'un seul lot. Il dispose de travailleurs qui extraient les données, les transforment et les envoient via Amazon Mechanical Turk. Le flux de travail BatchProcess génère les HIT acceptables et ceux qui ont échoué. Il est utilisé comme entrée pour trois autres flux de travail : MTurkManager, UpdateCatalogWorkflow et RerunProducts. Le flux de travail MTurkManager effectue les paiements pour les HIT acceptables, répond aux travailleurs humains qui ont produit des HIT échoués et met à jour sa propre base de données pour suivre la qualité des résultats. Le flux de travail UpdateCatalogWorkflow met à jour le catalogue principal en fonction des HIT acceptables. Le flux de travail RerunProducts attend qu'il y ait un lot suffisamment important de produits dont les HIT ont échoué. Il crée ensuite un lot et le renvoie au flux de travail BatchProcess. L'ensemble du traitement du catalogue de bout en bout est effectué par un flux de travail CleanupCatalog qui lance les exécutions enfants des flux de travail ci-dessus. Le fait de disposer d'un système de flux de travail bien définis permet de concevoir, d'auditer et d'exécuter systématiquement ce cas d'utilisation pour les catalogues contenant plusieurs millions de produits.

Exemple d'utilisation n°3 : migration de composants depuis le centre de données vers le cloud. Les opérations critiques pour l'entreprise doivent être hébergées dans un centre de données privé et transférées dans leur intégralité vers le cloud sans provoquer d'interruptions.

Les applications reposant sur Amazon SWF peuvent combiner des programmes exécutants chargés d'incorporer des composants fonctionnant dans le centre de données à des programmes exécutants du cloud. Pour assurer une transition sans accroc d'un programme exécutant du centre de données, de nouveaux programmes de même type sont tout d'abord déployés dans le cloud. Les programmes exécutants du centre de données continuent de s'exécuter normalement, parallèlement aux nouveaux programmes de cloud. L'acheminement d'une partie de la charge vers les programmes exécutants basés sur le cloud permet de les tester et de les valider. L'application ne subit aucune interruption, car les programmes exécutants du centre de données continuent de fonctionner pendant ce test. Une fois les tests réussis, les programmes exécutants du centre de données s'arrêtent progressivement au profit de ceux se trouvant dans le cloud, si bien qu'à terme ils peuvent être exécutés intégralement dans le cloud. Vous pouvez répéter ce processus pour tous les autres programmes exécutants du centre de données afin de transférer l'ensemble de l'application vers le cloud. Si pour des raisons propres à l'entreprise, certaines étapes de traitement doivent s'effectuer dans le centre de données privé, l'exécution de ces programmes exécutants peut se poursuivre dans le centre privé, tout en faisant toujours partie de l'application.

Consultez nos études de cas pour découvrir d'autres applications et systèmes intéressants que les développeurs et les entreprises développent avec Amazon SWF.

Oui. Les développeurs d'Amazon utilisent Amazon SWF pour une grande variété de projets et exécutent des millions de flux de travail chaque jour. Leurs cas d'utilisation incluent les processus métier clés qui sous-tendent les sites Web Amazon et AWS, la mise en œuvre de plusieurs services Web AWS et de leurs API, les analyses MapReduce pour la prise de décisions opérationnelles et la gestion du contenu destiné aux utilisateurs, tel que les pages Web, les vidéos et les livres Kindle.

Mise en route

Ouvrir tout

Pour vous inscrire à Amazon SWF, rendez-vous sur la page détaillée d'Amazon SWF et cliquez sur le bouton « S'inscrire maintenant ». Si vous n'avez pas de compte Amazon Web Services, vous serez invité à en créer un. Après votre inscription, vous pouvez exécuter un exemple de procédure pas à pas dans la console de gestion AWS, qui vous explique les étapes à suivre pour exécuter une application de conversion d'image simple avec Amazon SWF. Vous pouvez également télécharger les exemples d'AWS Flow Framework pour en savoir plus sur les différentes fonctionnalités du service. Pour commencer à utiliser Amazon SWF dans vos applications, consultez la documentation Amazon SWF.

Oui. Lorsque vous commencez à utiliser Amazon SWF, vous pouvez essayer l'exemple de procédure pas à pas dans la console de gestion AWS, qui vous explique comment enregistrer un domaine et des types, déployer des programmes exécutants et décideurs et démarrer l'exécution des flux de travail. Vous pouvez télécharger le code des programmes exécutants et décideurs utilisés dans cette procédure pas à pas, les exécuter sur votre infrastructure et même les modifier pour créer vos propres applications. Vous pouvez également télécharger les exemples d'AWS Flow Framework, qui illustrent l'utilisation d'Amazon SWF pour divers cas d'utilisation tels que le traitement distribué des données, les tâches Cron et le déploiement de piles d'applications. En consultant le code source inclus, vous pouvez en savoir plus sur les fonctionnalités d'Amazon SWF et sur la manière d'utiliser le AWS Flow Framework pour créer vos applications distribuées.

Vous pouvez accéder à SWF de l'une des manières suivantes :

  • Kit AWS SDK pour Java, Ruby, .NET et PHP
  • AWS Flow Framework pour Java (inclus dans le kit SDK AWS pour Java)
  • API des services Web Amazon SWF
  • Console de gestion AWS

Fonctionnalités

Ouvrir tout

L'enregistrement consiste en une étape unique à effectuer pour chaque type de processus et d'activité différent. Vous pouvez procéder à un enregistrement à l'aide d'un programme ou via Amazon SWF Management Console. Lors de l'enregistrement, vous indiquez des ID de type uniques propres à chaque activité et type de processus. Vous spécifiez également les informations par défaut utilisées lors de l'exécution d'un processus, comme les valeurs relatives au délai d'expiration et les paramètres de distribution des tâches.

Dans SWF, vous définissez des conteneurs logiques appelés domaines pour les ressources de votre application. Les domaines ne peuvent être créés qu'au niveau de votre compte AWS et ne peuvent pas être imbriqués. Un domaine peut avoir n'importe quel nom défini par l'utilisateur. Chaque ressource d'application, telle qu'un type de flux de travail, un type d'activité ou une exécution, appartient à exactement un domaine. Lors de l'enregistrement, vous spécifiez le domaine sous lequel un flux de travail ou un type d'activité doit être enregistré. Lorsque vous démarrez une exécution, elle est automatiquement créée dans le même domaine que son type de flux de travail. Le caractère unique des identifiants de ressource (par ex., les ID de type ou l'ID d'exécution) se limite à un domaine. Vous pouvez par exemple réutiliser les identifiants dans divers domaines.

Vous pouvez utiliser des domaines pour organiser les ressources de votre application afin qu'elles soient plus faciles à gérer et qu'elles ne s'affectent pas mutuellement par inadvertance. Par exemple, vous pouvez créer différents domaines pour vos environnements de développement, de test et de production, et créer les ressources appropriées dans chacun d'entre eux. Bien que vous puissiez enregistrer le même type de flux de travail dans chacun de ces domaines, il sera traité comme une ressource distincte dans chaque domaine. Vous pouvez modifier ses paramètres dans le domaine de développement ou administrer les exécutions dans le domaine de test, sans affecter les ressources correspondantes dans le domaine de production.

Le programme décideur peut être considéré comme un type particulier de programme exécutant. Comme les programmes exécutants, il peut être écrit dans n'importe quelle langue et demande des tâches à Amazon SWF. Cependant, il gère des tâches spéciales appelées tâches de décision. Amazon SWF émet des tâches de décision chaque fois que l'exécution d'un flux de travail comporte des transitions, telles qu'une tâche d'activité se termine ou arrive à expiration. Une tâche de décision contient des informations sur les entrées, les sorties et l'état actuel des tâches d'activité initiées précédemment. Votre décideur utilise ces données pour décider des prochaines étapes, y compris de toute nouvelle tâche d'activité, et les renvoie à Amazon SWF. Amazon SWF applique à son tour ces décisions, en initiant de nouvelles tâches d'activité le cas échéant et en les surveillant. En répondant aux tâches de décision de manière continue, le programme décideur contrôle l'ordre, le calendrier et la simultanéité des tâches d'activité et, par conséquent, l'exécution des étapes de traitement dans l'application. SWF émet la première tâche de décision lorsqu'une exécution démarre. À partir de là, Amazon SWF met en œuvre les décisions prises par votre programme décideur pour piloter votre exécution. L'exécution se poursuit jusqu'à ce que votre programme décideur prenne la décision de la terminer.

Pour aider le programme décideur à prendre des décisions, SWF conserve un enregistrement permanent des détails de toutes les tâches d'une exécution. Cet enregistrement s'appelle l'historique et est propre à chaque exécution. Un nouvel historique est lancé lorsqu'une exécution commence. À ce moment-là, l'historique contient des informations initiales telles que les données d'entrée de l'exécution. Plus tard, au fur et à mesure que les collaborateurs traitent des tâches d'activité, Amazon SWF met à jour l'historique avec leurs données d'entrée et de sortie, ainsi que leur état le plus récent. Lorsqu'un programme décideur reçoit une tâche de décision, il peut consulter l'historique de l'exécution. Amazon SWF garantit que l'historique reflète fidèlement l'état d'exécution au moment où la tâche de décision est émise. Ainsi, le programme décideur peut utiliser l'historique pour déterminer ce qui s'est passé lors de l'exécution et décider des prochaines étapes appropriées.

Vous utilisez des listes de tâches pour déterminer comment les tâches sont attribuées. Les listes de tâches sont des ressources Amazon SWF dans lesquelles les tâches initiées sont ajoutées et à partir desquelles les tâches sont demandées. Les listes de tâches sont identifiées par des noms définis par l'utilisateur. Une liste de tâches peut comporter des tâches de différents types, mais elles doivent toutes être des tâches d'activité ou des tâches de décision. Lors de l'inscription, vous spécifiez une liste de tâches par défaut pour chaque activité et chaque type de flux de travail. Amazon SWF vous permet également de créer des listes de tâches au moment de l'exécution. Vous créez une liste de tâches simplement en la nommant et en commençant à l'utiliser. Vous utilisez les listes de tâches comme suit :

  • Lors du lancement d'une tâche d'activité, un décideur peut l'ajouter à une liste de tâches spécifique ou demander à Amazon SWF de l'ajouter à la liste des tâches par défaut pour son type d'activité.
  • Lorsque vous démarrez une exécution, vous pouvez demander à Amazon SWF d'ajouter toutes ses tâches de décision à une liste de tâches spécifique ou à la liste de tâches par défaut pour le type de flux de travail.
  • Lors de la demande de tâches, les décideurs et les travailleurs spécifient la liste de tâches dont ils souhaitent recevoir des tâches. Si une tâche est disponible dans la liste, SWF l'envoie dans la réponse et inclut également son identifiant de type.

Sur la base de ce qui précède, vous pouvez contrôler à quelle liste de tâches une tâche est ajoutée et qui demande des tâches dans chaque liste. Ainsi, vous pouvez vous assurer que les travailleurs et les décideurs n'obtiennent que les tâches qu'ils comprennent.

AWS Flow Framework est un cadre de programmation qui vous permet de développer rapidement et facilement des applications basées sur Amazon SWF. Il résume les détails de la coordination au niveau des tâches et de l'interaction asynchrone à l'aide de concepts de programmation simples. La coordination des flux de travail dans Amazon SWF implique de lancer des actions à distance dont la durée d'exécution varie (par exemple, des tâches d'activité) et de mettre en œuvre correctement les dépendances entre elles.

AWS Flow Framework permet d'exprimer facilement les deux facettes de la coordination grâce à des concepts de programmation familiers. Par exemple, lancer une tâche d'activité est aussi simple que d'appeler une méthode. AWS Flow Framework traduit automatiquement l'appel en une décision de lancer la tâche d'activité et permet à Amazon SWF d'attribuer la tâche à un collaborateur, de la surveiller et de rendre compte de son achèvement. Le cadre met le résultat de la tâche, y compris ses données de sortie, à votre disposition dans le code sous forme de valeurs renvoyées par l'appel de méthode. Pour exprimer la dépendance à l'égard d'une tâche, il vous suffit d'utiliser les valeurs de retour dans votre code, comme vous le feriez pour les appels de méthode classiques. L'exécution du framework attendra automatiquement la fin de la tâche et ne poursuivra votre exécution que lorsque les résultats seront disponibles. Dans les coulisses, le moteur d'exécution du cadre reçoit les tâches de travail et de décision d'Amazon SWF, invoque les méthodes pertinentes de votre programme au bon moment et formule les décisions à renvoyer à Amazon SWF. En offrant un accès à Amazon SWF via une structure de programmation intuitive, AWS Flow Framework permet d'intégrer facilement la programmation asynchrone et pilotée par les événements dans le développement de vos applications.

Les protocoles basés sur des sondages obligent généralement les développeurs à trouver une fréquence d'interrogation optimale. Si les développeurs effectuent des sondages trop souvent, il est possible que de nombreux sondages soient renvoyés avec des résultats vides. Cela conduit à une situation où une grande partie des ressources de l'application et du réseau est consacrée à des sondages sans aucun résultat significatif pour faire avancer l'exécution. Si les développeurs n'interrogent pas assez souvent, les messages peuvent être conservés plus longtemps, ce qui augmente les latences des applications.

Pour pallier les problèmes d'efficacité inhérents aux sondages, Amazon SWF propose des sondages de longue durée. Les sondages longs réduisent considérablement le nombre de sondages renvoyés sans aucune tâche. Lorsque les collaborateurs et les décideurs interrogent Amazon SWF pour les tâches, la connexion est conservée pendant une minute si aucune tâche n'est disponible. Si une tâche devient disponible au cours de cette période, elle est renvoyée en réponse à la demande de sondage détaillé. En conservant la connexion pendant un certain temps, des sondages supplémentaires qui retourneraient également vides pendant cette période sont évités. Avec le sondage de longue durée, vos applications bénéficient des avantages de sécurité et de contrôle des flux du sondage sans sacrifier les avantages en termes de latence et d'efficacité offerts par les services Web basés sur le push.

Les travailleurs utilisent des requêtes HTTP GET standard pour obtenir des tâches depuis Amazon SWF et renvoyer les résultats. Pour utiliser un service Web existant en tant que travailleur, vous pouvez écrire un programme d’encapsulation qui récupère les tâches d'Amazon SWF, invoque les API de votre service Web le cas échéant et renvoie les résultats à Amazon SWF. Dans le programme d’encapsulation, vous traduisez les données d'entrée fournies dans une tâche en paramètres de l'API de votre service Web. De même, vous traduisez les données de sortie des API des services Web en résultats pour la tâche et vous les renvoyez à Amazon SWF.

Non, vous pouvez utiliser n'importe quel langage de programmation pour écrire un programme exécutant ou décideur, à condition de pouvoir communiquer avec Amazon SWF via des API de services Web. Le kit SDK AWS est actuellement disponible en Java, .NET, PHP et Ruby. Le kit SDK AWS pour Java inclut le AWS Flow Framework.

Lorsque vous démarrez de nouvelles exécutions de flux de travail, vous fournissez un identifiant pour cette exécution de flux de travail. Cela vous permet d'associer une exécution à une entité commerciale ou à une action (par exemple, identifiant client, nom de fichier, numéro de série). Amazon SWF garantit que l'ID d'une exécution est unique lors de son exécution. Pendant ce temps, toute tentative de démarrage d'une autre exécution avec le même ID échouera. Cela vous permet de répondre facilement aux besoins de l'entreprise lorsqu'une seule exécution ne peut être exécutée pour une action commerciale donnée, telle qu'une transaction, une soumission ou une cession. Prenons l'exemple d'un flux de travail qui enregistre un nouvel utilisateur sur un site Web. Lorsqu'un utilisateur clique sur le bouton d'envoi, son adresse e-mail unique peut être utilisée pour nommer l'exécution. Si l'exécution existe déjà, l'appel pour démarrer l'exécution échouera. Aucun code supplémentaire n'est nécessaire pour éviter les conflits dus au fait que l'utilisateur clique plusieurs fois sur le bouton alors que l'enregistrement est en cours.

Une fois l'exécution du flux de travail terminée (avec succès ou non), vous pouvez démarrer une autre exécution du flux de travail avec le même ID. Cela entraîne une nouvelle exécution de l'exécution du flux de travail avec le même ID d'exécution mais un ID d'exécution différent. L'ID d'exécution est généré par Amazon SWF et les multiples exécutions qui ont le même ID d'exécution de flux de travail peuvent être différenciées par l'ID d'exécution. En vous permettant de réutiliser les ID d'exécution des flux de travail de cette manière, Amazon SWF vous permet de traiter des cas d'utilisation tels que les nouvelles tentatives. Par exemple, dans l'exemple d'enregistrement d'utilisateur ci-dessus, supposons que l'exécution du flux de travail a échoué lors de la création d'un enregistrement de base de données pour l'utilisateur. Vous pouvez recommencer l'exécution du flux de travail avec le même ID d'exécution (adresse e-mail de l'utilisateur) sans avoir à créer un nouvel identifiant pour réessayer l'enregistrement.

Amazon SWF vous permet de faire évoluer vos applications en vous donnant un contrôle total sur le nombre de travailleurs que vous exécutez pour chaque type d'activité et sur le nombre d'instances que vous exécutez pour un décideur. En augmentant le nombre d'instances de travail ou de décideurs, vous augmentez les ressources de calcul allouées aux étapes de traitement correspondantes et, par conséquent, le débit de ces étapes. Pour effectuer une mise à l'échelle automatique, vous pouvez utiliser les données d'exécution fournies par Amazon SWF via ses API. Par exemple, Amazon SWF fournit le nombre de tâches figurant dans une liste de tâches. Étant donné qu'une augmentation de ce nombre implique que les travailleurs ne font pas face à la charge de travail, vous pouvez recruter automatiquement de nouveaux travailleurs chaque fois que l'arriéré de tâches dépasse un seuil.

Outre une console de gestion, Amazon SWF fournit un ensemble complet d'API de visibilité. Vous pouvez les utiliser pour obtenir des informations d'exécution afin de surveiller toutes vos exécutions et de redimensionner automatiquement vos exécutions en fonction de la charge. Vous pouvez obtenir des données détaillées sur chaque type de flux de travail, telles que le nombre d'exécutions ouvertes et fermées au cours d'une période spécifiée. À l'aide des API de visibilité, vous pouvez également créer vos propres applications de surveillance personnalisées.

Amazon SWF vous permet de rechercher des exécutions via sa console de gestion et ses API de visibilité. Vous pouvez effectuer une recherche selon différents critères, notamment les intervalles de temps pendant lesquels les exécutions ont commencé ou se sont terminées, l'état actuel (c'est-à-dire ouvert ou fermé) et les modes de défaillance standard (par exemple, expiré, terminé). Pour regrouper les exécutions de flux de travail, vous pouvez utiliser jusqu'à 5 balises pour associer du texte personnalisé aux exécutions de flux de travail lorsque vous les démarrez. Dans la console de gestion AWS, vous pouvez utiliser des balises lorsque vous recherchez des exécutions de flux de travail.

Pour identifier les exécutions susceptibles d'être bloquées, vous pouvez commencer par effectuer une recherche basée sur le temps afin de vous concentrer sur les exécutions qui durent plus longtemps que prévu. Vous pouvez ensuite les inspecter pour voir les détails du niveau des tâches et déterminer si certaines tâches ont été exécutées trop longtemps ou ont échoué, ou si le décideur n'a tout simplement pas lancé de tâches. Cela peut vous aider à identifier le problème au niveau de la tâche.

Oui. Plusieurs applications peuvent partager un type d'activité donné à condition que les applications et l'activité soient toutes enregistrées dans le même domaine. Pour implémenter cela, vous pouvez demander à différents décideurs de lancer des tâches pour le type d'activité et de l'ajouter à la liste des tâches sur laquelle les collaborateurs de cette activité interrogent. Les travailleurs de ce type d'activité obtiendront ensuite des tâches d'activité provenant des différentes applications. Si vous souhaitez indiquer de quelle application provient une tâche d'activité ou si vous souhaitez déployer différents ensembles de travailleurs pour différentes applications, vous pouvez utiliser plusieurs listes de tâches. Reportez-vous à la section Comment m'assurer qu'un travailleur ou un décideur ne reçoit que les tâches qu'il comprend ?

Sécurité et fiabilité

Ouvrir tout

Oui. Vous pouvez autoriser les utilisateurs IAM à accéder à Amazon SWF. Les utilisateurs IAM peuvent uniquement accéder aux API et domaines SWF que vous définissez.

Oui. Les travailleurs utilisent des requêtes HTTP GET standard pour demander des tâches à Amazon SWF et renvoyer les résultats calculés. Étant donné que les travailleurs envoient toujours des requêtes à Amazon SWF, il n'est pas nécessaire de configurer votre pare-feu pour autoriser les demandes entrantes.

Les travailleurs utilisent des requêtes HTTP GET standard pour demander des tâches à Amazon SWF et renvoyer les résultats calculés. Ainsi, vous n'avez pas à exposer aucun point de terminaison pour vos employés. En outre, Amazon SWF attribue des tâches aux collaborateurs uniquement lorsque le décideur les initie. Depuis que vous écrivez le décideur, vous avez un contrôle total sur le moment et la manière dont les tâches sont lancées, y compris sur les données d'entrée qui sont envoyées avec elles aux travailleurs.

Amazon SWF fournit des garanties utiles concernant l'attribution des tâches. Il garantit qu'une tâche n'est jamais dupliquée et qu'elle n'est attribuée qu'une seule fois. Ainsi, même si vous pouvez avoir plusieurs travailleurs pour un type d'activité particulier (ou plusieurs instances d'un décideur), Amazon SWF confiera une tâche spécifique à un seul travailleur (ou à une seule instance de décision). En outre, Amazon SWF conserve au plus une tâche de décision en suspens à la fois pour l'exécution d'un flux de travail. Ainsi, vous pouvez exécuter plusieurs instances de décision sans vous soucier de voir deux instances fonctionner simultanément sur la même exécution. Ces fonctionnalités vous permettent de coordonner votre flux de travail sans vous soucier des tâches dupliquées, perdues ou conflictuelles.

Limites

Ouvrir tout

Vous pouvez disposer d'un maximum de 10 000 types de flux de travail et d'activités (au total) enregistrés ou obsolètes dans chaque domaine. Vous pouvez avoir un maximum de 100 domaines Amazon SWF (y compris des domaines enregistrés et obsolètes) sur votre compte AWS.

À tout moment, vous pouvez disposer d'un nombre maximum de 100 000 exécutions ouvertes dans un domaine. Il n'existe aucune autre limite quant au nombre cumulé d'exécutions que vous exécutez ou au nombre d'exécutions conservées par Amazon SWF.

L'exécution de chaque flux de travail peut durer un an au maximum. L'historique d'exécution de chaque flux de travail peut atteindre 25 000 événements. Si votre cas d'utilisation nécessite que vous dépassiez ces limites, vous pouvez utiliser les fonctionnalités proposées par Amazon SWF pour poursuivre les exécutions et structurer vos applications à l'aide d'exécutions de flux de travail enfants.

Amazon SWF ne prend aucune mesure particulière si l'exécution d'un flux de travail reste inactive pendant une période prolongée. Les exécutions inactives sont soumises aux délais que vous configurez. Par exemple, si vous avez défini la durée maximale d'une exécution à 1 jour, une exécution inactive sera expirée si elle dépasse la limite d'un jour. Les exécutions inactives sont également soumises à la limite Amazon SWF quant à la durée d'exécution d'une exécution (1 an).

Amazon SWF n'impose pas de limite spécifique au temps que peut prendre un collaborateur pour traiter une tâche. Il applique le délai d'expiration que vous spécifiez pour la durée maximale de la tâche d'activité. Notez que, comme Amazon SWF limite la durée d'exécution d'une tâche à un an au maximum, un travailleur ne peut pas prendre plus de temps que cela pour traiter une tâche.

Amazon SWF n'impose pas de limite spécifique à la durée pendant laquelle une tâche est conservée avant qu'un collaborateur ne la demande. Toutefois, lors de l'enregistrement du type d'activité, vous pouvez définir un délai d'expiration par défaut pour la durée pendant laquelle Amazon SWF conservera les tâches d'activité de ce type. Vous pouvez également spécifier ce délai ou modifier le délai par défaut à l'aide de votre code de décision lorsque vous planifiez une tâche d'activité. Étant donné qu'Amazon SWF limite la durée d'exécution d'un flux de travail à un maximum d'un an, si aucun délai n'est spécifié, la tâche ne sera pas conservée plus d'un an.

Oui, vous pouvez planifier jusqu'à 100 tâches d'activité en une seule décision et prendre plusieurs décisions les unes après les autres.

Il n'y a pas de limite au nombre total de tâches d'activité, de signaux et de minuteries utilisés lors de l'exécution d'un flux de travail. Toutefois, pour le moment, vous ne pouvez avoir qu'un maximum de 1 000 tâches d'activité ouvertes par exécution de flux de travail. Cela inclut les tâches d'activité qui ont été initiées et les tâches d'activité qui sont en cours de traitement par les travailleurs. De même, il peut y avoir jusqu'à 1 000 temporisateurs ouverts par exécution de flux de travail et jusqu'à 1 000 exécutions enfants ouvertes par exécution de flux de travail.

Il n'y a aucune limite quant à la quantité totale de données transférées lors de l'exécution d'un flux de travail. Cependant, les API Amazon SWF imposent des limites maximales spécifiques aux paramètres utilisés pour transmettre des données au cours d'une exécution. Par exemple, les données d'entrée transmises à une tâche d'activité et les données d'entrée envoyées avec un signal peuvent chacune comporter 32 000 caractères au maximum.

Amazon SWF conserve l'historique d'une exécution terminée selon le nombre de jours que vous avez défini, sans dépasser 90 jours (soit, environ 3 mois). Pendant la conservation, vous pouvez accéder à l'historique et rechercher l'exécution par programmation ou via la console.

Au-delà des pics peu fréquents, vous pouvez être limité si vous effectuez un très grand nombre d'appels d'API en très peu de temps.

Accès et disponibilité

Ouvrir tout

Pour connaître la disponibilité des régions de service, consultez le tableau des régions de l'infrastructure mondiale AWS.

Oui, Amazon SWF gère l'historique d'exécution de vos flux de travail et d'autres informations relatives à vos flux de travail dans 3 zones de disponibilité afin que vos applications puissent continuer à s'appuyer sur Amazon SWF même en cas de défaillance dans une zone de disponibilité.

Consultez la documentation de référence générale AWS pour plus d'informations sur les points de terminaison d'accès.

Facturation

Ouvrir tout

Sauf indication contraire, nos prix n’incluent pas les taxes et redevances applicables, y compris la TVA et les taxes sur les ventes applicables. Pour les clients dont l'adresse de facturation est située au Japon, l'utilisation de services AWS est soumise à la taxe sur la consommation applicable dans ce pays.

En savoir plus

Avez-vous trouvé les informations que vous recherchiez ?

Faites-nous part de vos commentaires afin que nous puissions améliorer le contenu de nos pages