Q : Qu'est-ce qu'Amazon SWF ?
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 sous forme de coordination de tâches pour un éventail d'exemples d'utilisation, comprenant le traitement multimédia, les systèmes back-end d'applications Web, les flux des processus d'entreprise et les pipelines analytiques. Les tâches représentent des appels de diverses étapes de traitement au sein d'une application pouvant être réalisées par du code exécutable, des appels de services Web, des actions humaines et des scripts.

La coordination des tâches implique la gestion des dépendances, de la programmation et de la simultanéité en matière d'exécution conformément au flux logique de l'application. Grâce à Amazon SWF, les développeurs acquièrent un contrôle complet sur la mise en oeuvre des étapes de traitement et la coordination des tâches qui les conduisent sans avoir à se soucier des complexités sous-jacentes consistant notamment à suivre leur évolution et à maintenir leur état. Amazon SWF propose également AWS Flow Framework pour permettre aux développeurs d'utiliser la programmation asynchrone dans le développement de leurs applications. Amazon SWF confère aux développeurs la simplicité de programmation et la capacité d'améliorer l'utilisation des ressources, les latences et le débit de leurs applications.

Découvrez gratuitement AWS

Créez un compte gratuit
Vous pouvez également vous connecter à la console

Le niveau gratuit d'AWS inclut 750 heures d'exécution d'un nœud de cache Micro avec Amazon ElastiCache.

Voir les détails relatifs au niveau gratuit d'AWS »

Q : Quels sont les avantages offerts par la conception de mon application sous forme de coordination de tâches ? Comment Amazon SWF peut-il m'y aider ?
Dans Amazon SWF, les tâches représentent des appels d'étapes logiques au sein d'applications. Les tâches sont traitées par des programmes exécutants chargés d'interagir avec Amazon SWF pour obtenir des tâches, les traiter et renvoyer leurs résultats. Un programme exécutant met en oeuvre une étape de traitement de l'application. Vous pouvez créer des programmes exécutants dans divers langages de programmation et même réutiliser les 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. Le fait de contrôler de manière indépendante le nombre de programmes exécutants pour le traitement de chaque type de tâche, vous permet de contrôler efficacement le débit de votre application.

Vous devez développer un programme décideur dans le langage de programmation de votre choix chargé de coordonner l'exécution de l'application à travers les programmes exécutants. La séparation des étapes de traitement et leur coordination permet de gérer votre application de manière contrôlée, de les déployer, de les exécuter, de les faire évoluer et de les mettre à jour de manière indépendante. Vous pouvez choisir de déployer les programmes exécutants ou décideurs dans le cloud (par ex., Amazon EC2 ou Lambda) ou sur des machines situées derrière les pare-feu de l'entreprise. Le découplage des programmes exécutants et décideurs assure une logique applicative dynamique et une mise à jour rapide de votre application pour s'adapter aux nouvelles exigences. Par exemple, il vous suffit de modifier le programme décideur pour supprimer, ignorer ou réessayer des tâches et créer de nouveaux flux d'application.

Par la mise en oeuvre de programmes exécutants et décideurs, vous vous concentrez sur votre logique applicative différenciée puisqu'elle se rapporte à la réalisation des étapes de traitement réelles et à leur coordination. Amazon SWF traite les détails sous-jacents comme les tâches de stockage jusqu'à ce qu'elles puissent être affectées, la surveillance des tâches affectées et le fait de fournir des informations cohérentes concernant leur réalisation. Amazon SWF assure également une visibilité constante au niveau de chaque tâche via des API et une console.

Q : Que puis-je faire avec Amazon SWF ?
Amazon SWF peut permettre de relever de nombreux défis survenant lors de la création d'applications à l'aide de composants distribués. Vous pouvez par exemple utiliser Amazon SWF et AWS Flow Framework qui l'accompagne pour :

  • développer vos applications sous forme de programmes asynchrones à l'aide de structures de programmation simples faisant abstraction des détails, tels que le lancement des tâches à exécuter à distance et le suivi de l'état d'exécution du programme.
  • gérer l'état d'exécution de votre application (par ex., les étapes réalisées, celles en cours d'exécution, etc.). L'utilisation de bases de données, de systèmes personnalisés ou de solutions ad hoc permettant de maintenir l'exécution devient inutile.
  • communiquer et gérer le flux de travail entre vos composants d'application Grâce à Amazon SWF, vous n'avez plus à concevoir de protocole de messagerie ou à vous soucier des tâches perdues ou en double.
  • Centraliser les étapes de coordination de votre application. Votre logique de coordination n'a plus à être dispersée entre les divers composants, mais peut être encapsulée dans un seul et unique 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 assure en toute fiabilité le suivi de l'état des étapes de traitement pouvant durer plusieurs jours ou mois.
  • créer une couche d'application au-dessus d'Amazon SWF pour la prise en charge des langages spécifiques de chaque domaine pour vos utilisateurs finaux. Amazon SWF vous laissant libre de choisir votre langage de programmation, vous pouvez créer aisément des interpréteurs de langages spécialisés (par ex., XPDL) et des interfaces utilisateur personnalisées comprenant des outils de modélisation.
  • obtenir des pistes d'audit détaillées et acquérir une visibilité de l'ensemble des instances en cours d'exécution de vos applications. Vous pouvez également intégrer les capacités de visibilité fournies par Amazon SWF à vos propres interfaces utilisateur à l'aide des API d'Amazon SWF.

Les clients utilisent Amazon SWF pour créer des applications d'encodage vidéo, de commerce social, d'approvisionnement d'infrastructures, de pipelines MapReduce, de gestion de processus d'entreprise et dans plusieurs autres cas. Pour en savoir plus sur les cas d'utilisation, consultez la rubrique « Quels sont les cas d'utilisation pouvant être résolus grâce à Amazon SWF ? ». Pour savoir comment nos clients actuels utilisent Amazon SWF, lisez nos études de cas.

Q : Quels sont les atouts d'Amazon SWF par rapport aux solutions développées en interne et aux services de processus existants ?
Lors de la création de solutions destinées à coordonner des tâches dans un environnement distribué, les développeurs doivent prendre en compte plusieurs variables. Les tâches menant les étapes de traitement peuvent être longues et échouer, expirer ou nécessiter un redémarrage. Elles s'achèvent souvent par des débits et des latences variables. Le suivi et la visualisation des tâches dans tous ces cas représentent non seulement un défi, mais sont également indifférenciés. À mesure que les applications et les tâches évoluent, les développeurs sont confrontés à des problèmes propres aux systèmes distribués. Ils doivent, par exemple, s'assurer qu'une tâche n'est affectée qu'une seule fois et que son résultat fait l'objet d'un suivi fiable au fil des échecs et des interruptions inattendus. 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 processus existants contraignent souvent les développeurs à apprendre des langages spécialisés, à héberger des bases de données coûteuses et à abandonner le contrôle sur l'exécution des tâches. Les langages spécialisés compliquent l'expression d'applications complexes et ne sont pas suffisamment souples pour réaliser des modifications rapides. 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 découplé pour des applications distribuées Amazon SWF vous permet d'effectuer aisément des modifications.

Q : En quoi consistent les programmes exécutants et décideurs ?
Dans Amazon SWF, la mise en oeuvre d'une application passe par la création de programmes exécutants et d'un programme décideur chargé de communiquer directement avec le service. Les programmes exécutants 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 agit comme intermédiaire entre les programmes exécutants et décideurs. Il permet au programme décideur de visualiser de manière cohérente la progression des tâches et d'en lancer de nouvelles en continu. Dans le même temps, Amazon SWF stocke les tâches, les affecte aux programmes exécutants une fois prêtes et surveille leur progression. Il s'assure qu'une tâche n'est affectée qu'une seule fois et qu'elle n'est jamais dupliquée. Amazon SWF se charge de gérer durablement l'état de l'application, ce qui évite aux programmes exécutants et décideurs d'avoir à effectuer le suivi de l'état d'exécution. Ils peuvent ainsi s'exécuter de manière indépendante et évoluer rapidement. Veuillez consulter la section Fonctionnalités de la page de présentation d'Amazon SWF pour en savoir plus sur les étapes de création d'applications à l'aide d'Amazon SWF.

Amazon SWF permet d'exécuter plusieurs fois de manière simultanée le même processus. Cette opération est appelée exécution de processus ou exécution. Les exécutions portent des noms uniques. Amazon SWF Management Console (ou les API de visibilité) permettent de visualiser vos exécutions dans leur intégralité et de zoomer sur une exécution donnée pour en afficher les détails par tâche.

Q : Quel confort de programmation apporte Amazon SWF au développement d'applications ?
Comme les autres services AWS, Amazon SWF propose un SDK intégré destiné aux API de service Web. De plus, Amazon SWF offre un SDK nommé AWS Flow Framework vous permettant de développer de manière simple et rapide des applications reposant sur Amazon SWF. AWS Flow Framework fait abstraction des détails relatifs à la coordination par tâche par l'utilisation de structures de programmation conviviales. Lorsque vous exécutez votre programme, le cadre effectue des appels vers Amazon SWF, assure le suivi de l'état d'exécution de votre programme à l'aide de l'historique des exécutions conservé par Amazon SWF et fait appel aux parties de votre code qui conviennent au moment opportun. En proposant un cadre de programmation intuitif pour accéder à Amazon SWF, AWS Flow Framework permet aux développeurs de développer dans leur intégralité des applications sous forme d'interactions asynchrones structurées dans un processus. Pour plus de détails, veuillez consulter la rubrique Qu'est-ce qu'AWS Flow Framework ?

Q : Dans quels cas vaut-il mieux utiliser Amazon SWF ou AWS Step Functions ?

AWS Step Functions est un service entièrement géré qui permet de coordonner facilement les composants d'applications et de microservices distribués à l'aide de processus 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 programmation de votre choix ou vous appuyer sur le framework 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.

Q : En quoi Amazon SWF diffère-t-il d'Amazon SQS ?

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 additionnelles.
  • 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.

Q : Quels sont les cas d'utilisation pouvant être résolus grâce à Amazon SWF ? 

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. En voici quelques exemples :

Exemple d'utilisation n°1 : L'encodage vidéo à l'aide d'Amazon S3 et Amazon EC2. Dans ce cas, des fragments de vidéos volumineuses sont téléchargés vers Amazon S3. Le téléchargement des fragments doit faire l'objet d'une surveillance. Dès qu'un fragment est téléchargé, celui-ci est encodé par son téléchargement vers une instance Amazon EC2. Le fragment encodé est stocké à un autre emplacement d'Amazon S3. Une fois tous les fragments encodés de cette manière, ceux-ci sont assemblés dans un fichier entièrement encodé de nouveau stocké dans son intégralité sur Amazon S3. Ce processus peut échouer en raison de la survenue d'erreurs d'encodage d'un ou plusieurs fragments. De tels échecs doivent être détectés et traités.

Avec Amazon SWF, toute l'application est conçue comme un processus, où chaque fichier vidéo est exécuté comme tel. Les tâches traitées par les divers programmes exécutants comprennent le téléchargement d'un fragment vers Amazon S3, le téléchargement d'un fragment depuis Amazon S3 vers une instance Amazon EC2 et son encodage, le stockage d'un fragment sur Amazon S3, l'assemblage de plusieurs fragments en un seul et même fichier et le téléchargement d'un fichier complet vers Amazon S3. Le programme décideur lance des tâches simultanées afin d'exploiter le parallélisme de l'exemple d'utilisation. Il lance une tâche chargée d'encoder un fragment téléchargé sans attendre le téléchargement d'autres fragments. En cas d'échec d'une tâche en charge d'un fragment, le programme décideur l'exécute de nouveau pour ce fragment uniquement. L'état de l'application conservé par Amazon SWF permet au programme décideur de contrôler le processus. Le programme décideur l'utilise, par exemple, pour savoir quand tous les fragments ont été encodés afin de les extraire de leur emplacement sur Amazon S3 en vue de leur assemblage. La progression de l'exécution fait l'objet d'un suivi continu dans Amazon SWF Management Console. En cas d'échec, les tâches concernées sont identifiées et utilisées pour déterminer les fragments ayant échoué.

Exemple d'utilisation n°2 : Traitement de catalogues de produits volumineux à l'aide d'Amazon Mechanical Turk. Lors de la validation de données contenues dans des catalogues volumineux, les produits du catalogue sont traités par lots. Les différents lots peuvent être traités simultanément. Pour chaque lot, les données du produit sont extraites des serveurs du datacenter et transformées en fichiers CSV (Comma Separated Values) requis par l'interface Request User Interface (RUI) d'Amazon Mechanical Turk. Le fichier CSV est téléchargé pour alimenter et exécuter les HIT (Human Intelligence Tasks). Une fois les HIT terminées, le fichier CSV en résultant est de nouveau transformé pour que les données retrouvent leur format d'origine. Les résultats sont alors évalués et les employés d'Amazon Mechanical Turk sont payés en fonction de leurs résultats. Les échecs sont extraits et traités de nouveau tandis que les résultats HIT acceptables sont utilisés pour mettre à jour le catalogue. Au fil des lots traités, le système a besoin d'assurer le suivi de la qualité des employés d'Amazon Mechanical Turk et d'adapter les paiements en fonction des résultats. Les HIT ayant échoué sont de nouveau regroupées par lot et renvoyées vers le pipeline.

Avec Amazon SWF, l'exemple d'utilisation ci-dessus est mis en oeuvre sous forme d'un ensemble de processus. Un processus BatchProcess prend en charge le traitement d'un seul lot. Il possède des programmes exécutants chargés d'extraire des données, de les transformer et de les envoyer via Amazon Mechanical Turk. Le processus BatchProcess détermine les HIT acceptables et celles ayant échoué. Ce qui sert de point de départ à trois autres processus appelés MTurkManager, UpdateCatalogWorkflow et RerunProducts. Le processus MTurkManager procède aux paiements des HIT acceptables, répond aux employés qui ont produit des HIT ayant échoué et met à jour sa propre base de données pour le suivi de la qualité des résultats. Le processus UpdateCatalogWorkflow met à jour le catalogue principal en fonction des HIT acceptables. Le processus RerunProducts attend qu'il y ait une quantité suffisante de lots de produits dont les HIT ont échoué. Il crée alors un lot et le renvoie au processus BatchProcess. Le traitement de bout en bout du catalogue est réalisé par un processus nommé CleanupCatalog chargé de lancer des exécutions enfant des processus ci-dessus. Le fait de disposer d'un système aux processus bien définis permet de structurer, de vérifier et d'exécuter systématiquement cet exemple d'utilisation pour les catalogues de 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 afin de découvrir d'autres applications et systèmes plus intéressants déjà créés par des développeurs et des entreprises à l'aide d'Amazon SWF.

Q : Est-ce qu'Amazon utilise Amazon SWF pour ses propres applications ?
Oui. Les développeurs au sein d'Amazon utilisent Amazon SWF pour un large éventail de projets et exécutent des millions de processus chaque jour. Leurs exemples d'utilisation comprennent les processus d'entreprise essentiels se cachant derrière les sites Web Amazon.com et AWS, les mises en oeuvre de plusieurs services Web AWS et de leurs API, l'analyse MapReduce pour une prise de décision opérationnelle et la gestion de contenus destinés aux utilisateurs comme des pages Web, des vidéos et des livres électroniques pour tablette de lecture Kindle.

Q : Comment puis-je démarrer avec Amazon SWF ?
Pour vous inscrire à Amazon SWF, accédez à la page de présentation 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. Suite à l'inscription, vous avez la possibilité de lancer une visite virtuelle dans AWS Management Console, qui vous guide à travers les diverses étapes relatives à l'exécution d'une application de conversion d'image simple au moyen d'Amazon SWF. Vous pouvez également télécharger les exemples de AWS Flow Framework pour découvrir les diverses fonctions du service. Pour commencer à utiliser Amazon SWF dans vos applications, veuillez vous reporter à la documentation qui s'y rapporte.

Q : Existe-t-il des exemples de processus que je peux utiliser pour essayer Amazon SWF ?
Oui. Si vous utilisez Amazon SWF pour la première fois, vous pouvez lancer la présentation pratique dans AWS Management Console, laquelle vous guide à travers l'enregistrement d'un domaine et des types requis, le déploiement de programmes exécutants et décideurs, ainsi que le lancement d'une exécution de processus. Vous pouvez télécharger le code des programmes exécutants et décideurs utilisés dans cette présentation, exécuter ces programmes sur votre infrastructure et même les modifier pour créer vos propres applications. Vous pouvez aussi télécharger les exemples AWS Flow Framework, qui illustrent l'utilisation d'Amazon SWF pour différents cas d'utilisation, comme le traitement de données distribuées, les travaux Cron et le déploiement d'une pile d'applications. La consultation de ce code source vous permet d'en savoir plus sur les fonctionnalités d'Amazon SWF et sur la manière d'utiliser AWS Flow Framework pour créer vos applications distribuées.

Q : Quels sont les divers moyens d'accéder à SWF ?
Vous pouvez accéder à SWF depuis :

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


Q : En quoi consiste l'enregistrement ?
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.

Q : Qu'est-ce qu'un domaine ?
Dans SWF, vous définissez des conteneurs logiques appelés domaines pour vos ressources applicatives. Les domaines ne peuvent être créés qu'au niveau de votre compte AWS et ne peuvent être imbriqués. Un domaine peut porter n'importe quel nom défini par l'utilisateur. Chaque ressource applicative, telle qu'un type de processus, un type d'activité ou une exécution appartient précisément à un domaine. Lors de l'enregistrement, vous définissez le domaine sous lequel un type de processus ou d'activité doit être enregistré. Lorsque vous lancez une exécution, celle-ci est automatiquement créée dans le même domaine que son type de processus. 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.

Q : Comment puis-je gérer mes ressources applicatives dans différents environnements et groupes ?
Vous pouvez utiliser les domaines pour organiser vos ressources applicatives afin d'en faciliter leur gestion et éviter qu'elles ne s'affectent les unes et les autres par inadvertance. Vous pouvez, par exemple, créer des domaines différents pour vos environnements de développement, de test et de production et créer les ressources appropriées dans chacune d'entre elles. Bien que vous puissiez enregistrer le même type de processus dans chacun de ces domaines, celui-ci sera traité comme une ressource distincte dans chaque domaine. Vous pouvez modifier ses paramètres dans le domaine de développement ou gérer les exécutions dans le domaine de test sans affecter les ressources correspondantes du domaine de production.

Q : Comment un programme décideur coordonne-t-il un processus dans Amazon SWF ?
Le programme décideur peut être considéré comme un type de programme exécutant spécifique. Comme les programmes exécutants, il peut être écrit dans n'importe quel langage et demander des tâches à Amazon SWF. Toutefois, il prend en charge des tâches spéciales appelées tâches décisionnelles. Amazon SWF envoie des tâches décisionnelles chaque fois que l'exécution d'un processus connaît des transitions, telles que la fin ou l'expiration d'une tâche d'activité. Une tâche décisionnelle contient des informations sur les entrées, les sorties et l'état actuel des tâches d'activité lancées préalablement. Votre programme décideur utilise ces données pour décider des étapes suivantes, y compris des nouvelles tâches d'activité et les renvoie à Amazon SWF. À son tour, Amazon SWF met en application ces décisions en lançant si nécessaire de nouvelles tâches d'activité et en assurant leur surveillance. En répondant en continu aux tâches décisionnelles, le programme décideur contrôle l'ordre, la durée, la simultanéité des tâches d'activité et, par conséquent, l'exécution des étapes de traitement de l'application. SWF envoie la première tâche décisionnelle dès le démarrage d'une exécution. Dès cet instant, Amazon SWF met en application les décisions prises par votre programme décideur pour mener votre exécution. L'exécution se poursuit tant que votre programme décideur n'a pas décidé d'y mettre un terme.

Afin d'aider le programme décideur dans sa prise de décision, SWF enregistre en continu les informations relatives à toutes les tâches d'une exécution. Cet enregistrement est un historique propre à chaque exécution. Un nouvel historique démarre dès qu'une exécution commence. À ce moment, l'historique contient les informations d'origine comme les données d'entrée de l'exécution. Par la suite, à mesure que les programmes exécutants traitent les tâches d'activité, Amazon SWF met à jour l'historique avec leurs données d'entrée et de sortie et leur dernier état. Dès qu'un programme décideur obtient une tâche décisionnelle, il est en mesure d'inspecter l'historique de l'exécution. Amazon SWF s'assure que l'historique reflète précisément l'état de l'exécution au moment de l'envoi de la tâche décisionnelle. Ainsi, le programme décideur peut utiliser l'historique pour déterminer ce qui est survenu lors de l'exécution et entreprendre les étapes suivantes en conséquence.

Q : Comment puis-je m'assurer qu'un programme décideur ou exécutant n'obtient que les tâches qu'il est en mesure de traiter ?
Les listes de tâches permettent de déterminer la manière dont les tâches sont affectées. Les listes de tâches sont des ressources Amazon SWF auxquelles les tâches lancées sont ajoutées et depuis lesquelles les tâches sont demandées. Ces listes portent des noms définis par l'utilisateur. Une liste peut comporter des tâches dont les ID de type diffèrent, mais qui doivent toutes être des tâches d'activité ou décisionnelles. Lors de l'enregistrement, vous définissez une tâche par défaut pour chaque type d'activité et de processus. Amazon SWF vous permet également de créer des listes de tâches lors de l'exécution. Pour créer une liste de tâches, il vous suffit de la nommer et de commencer à l'utiliser. Ces listes s'utilisent comme suit :

  • Lors du lancement d'une tâche d'activité, un programme décideur peut l'ajouter à une liste de tâches spécifique ou demander à Amazon SWF de l'ajouter à la liste par défaut correspondant à son type d'activité.
  • Au démarrage d'une exécution, vous pouvez demander à Amazon SWF d'ajouter l'ensemble de ses tâches décisionnelles à une liste de tâches spécifique ou à la liste de tâches par défaut correspondant au type de processus.
  • Lors de la demande de tâches, les programmes décideurs et exécutants définissent la liste des tâches à partir de laquelle ils souhaitent recevoir des tâches. Si une tâche est disponible dans la liste, SWF l'envoie dans la réponse et y inclut également son ID de type.

En fonction des informations mentionnées ci-dessus, vous contrôlez la liste de tâches à laquelle une tâche est ajoutée et qui demande les tâches depuis chaque liste. Cela vous permet de vous assurer que les programmes décideurs et exécutants n'obtiennent que les tâches qu'ils comprennent.

Q : Qu'est-ce qu'AWS Flow Framework ? Comment m'aide-t-il à coordonner mon processus ?
AWS Flow Framework est un cadre de programmation vous permettant de développer rapidement et aisément des applications basées sur Amazon SWF. Il fait abstraction des détails relatifs à la coordination par tâche et à l'interaction asynchrone à l'aide de structures de programmation simples. La coordination des processus dans Amazon SWF implique le lancement d'actions à distance dont les durées peuvent varier (par ex., les tâches d'activité) et la mise en oeuvre correcte de leur interdépendance.

AWS Flow Framework facilite l'expression des deux aspects de coordination grâce à des concepts de programmation conviviaux. Par exemple, le lancement d'une tâche d'activité est aussi simple que de faire appel à une méthode. AWS Flow Framework transpose automatiquement l'appel en une décision de lancer la tâche d'activité et permet à Amazon SWF d'affecter la tâche à un programme exécutant, de la surveiller et d'en rendre compte une fois terminée. Le cadre rend les résultats de la tâche, y compris ses données de sortie, disponibles dans le code comme le sont les valeurs renvoyées depuis l'appel de méthode. Afin d'exprimer la dépendance d'une tâche, il vous suffit d'utiliser les valeurs renvoyées dans votre code comme vous le feriez pour des appels de méthode classiques. L'exécution du cadre s'interrompt automatiquement pour attendre la fin de la tâche et reprendre dès que les résultats sont disponibles. En coulisse et au cours de son exécution, le cadre reçoit les tâches des programmes exécutants et décideurs depuis Amazon SWF, fait appel aux méthodes appropriées de votre programme au moment opportun et formule les décisions à renvoyer à Amazon SWF. En proposant un accès à Amazon SWF via un cadre de programmation intuitif, AWS Flow Framework permet d'intégrer aisément une programmation asynchrone et centrée sur les évènements au développement de vos applications.

Q : Comment les programmes exécutants et décideurs communiquent-ils avec Amazon SWF ?Un protocole d'interrogation ne nécessite-t-il pas de nombreuses ressources ?
Habituellement, les protocoles d'interrogation nécessitent auprès des développeurs un travail de recherche visant à trouver la fréquence d'interrogation optimale. Si les développeurs procèdent à des interrogations trop fréquentes, il est possible que de nombreuses interrogations restent sans résultat. Ce qui mène à une situation dans laquelle la majeure partie de l'application et des ressources réseau est consacrée à l'interrogation sans résultat significatif nécessaire à la poursuite l'exécution. Si les développeurs ne procèdent pas à des interrogations suffisamment fréquentes, les messages peuvent être conservés plus longtemps, ce qui contribue à accroître les latences de l'application.

Amazon SWF propose le long-polling pour vaincre les inefficacités inhérentes à l'interrogation. Ce système permet de réduire significativement le nombre d'interrogations revenant sans tâche. Lorsque les programmes exécutants et décideurs demandent des tâches à Amazon SWF, la connexion est maintenue pendant une minute si aucune tâche n'est disponible. Si une tâche devient disponible pendant ce laps de temps, cette dernière est renvoyée en réponse à la demande d'interrogation longue durée. Cette méthode permet d'éviter qu'un plus grand nombre d'interrogations sans résultat ne soit renvoyé pendant cette durée. Grâce au long-polling, vos applications bénéficient des avantages du contrôle de la sécurité et des flux que présente l'interrogation sans sacrifier les atouts de latence et d'efficacité proposés par des services Web basés sur la distribution.

Q : Puis-je utiliser un service Web existant comme programme exécutant ?
Les programmes exécutants utilisent des demandes HTTP GET standard pour obtenir des tâches depuis Amazon SWF et en renvoyer les résultats. Pour utiliser un service Web existant comme programme exécutant, vous pouvez développer un wrapper qui obtient des tâches depuis Amazon SWF, fait appel à vos API de services Web si nécessaire et renvoie les résultats à Amazon SWF. Dans le wrapper, vous transposez les données d'entrée figurant dans une tâche en paramètres pour vos API de services Web. De la même manière, vous transposez également les données de sortie issues des API de services Web en résultats pour la tâche et les renvoyez vers Amazon SWF.

Q : Est-ce qu'Amazon SWF me contraint à l'utilisation de langages de programmation spécifiques ?
Non, vous pouvez utiliser n'importe quel langage de programmation pour développer un programme exécutant ou décideur tant que vous communiquez avec Amazon SWF à l'aide d'API de services Web. AWS SDK est actuellement disponible en Java, .NET, PHP et Ruby. Le SDK AWS pour Java inclut AWS Flow Framework.

Q : Je veux m'assurer que chaque activation de mon processus métier n'est exécutée qu'une seule fois (par exemple, une transaction, une soumission ou une affectation). Comment faire pour y parvenir ?
Lorsque vous lancez l'exécution de nouveaux processus, vous indiquez un ID pour chaque exécution. Cela vous permet d'associer une exécution à une entité d'entreprise ou une action (par ex., un ID client, un nom de fichier, un numéro de série). Amazon SWF garantit que des exécutions portant le même ID ne peuvent fonctionner simultanément. Toute tentative de lancement d'une autre exécution portant le même ID échouera. Cela permet de satisfaire aux besoins de l'entreprise dès lors qu'une action donnée, de type transaction, soumission ou affectation ne peut faire l'objet d'exécutions simultanées. Prenez par exemple un processus chargé d'inscrire un nouvel utilisateur sur un site Web. Dès que l'utilisateur clique sur le bouton de validation, l'adresse email unique de l'utilisateur peut être utilisée pour nommer l'exécution. Si l'exécution existe déjà, l'appel demandant le lancement de l'exécution échoue. Ainsi, aucun code supplémentaire n'est requis pour éviter les conflits provoqués par le fait qu'un utilisateur peut cliquer plusieurs fois sur le bouton de validation au cours de l'enregistrement.

Une fois l'exécution du processus terminée (qu'elle ait réussi ou échoué), vous pouvez exécuter un autre processus portant le même ID. Cela entraîne le lancement d'une nouvelle exécution du processus portant le même ID d'exécution mais dont l'ID de lancement est différent. L'ID de lancement est généré par Amazon SWF et permet de différencier plusieurs exécutions portant le même ID d'exécution de processus. En vous permettant de réutiliser des ID d'exécution de processus de cette manière, Amazon SWF résout le problème lié aux nouvelles tentatives. Par exemple, dans l'exemple d'inscription d'un utilisateur mentionné ci-dessus, supposons que l'exécution du processus ait échoué lors de la création d'un enregistrement de base de données pour l'utilisateur. Vous pouvez relancer l'exécution du processus avec le même ID d'exécution (adresse email de l'utilisateur) sans avoir à créer de nouvel ID pour cette nouvelle tentative d'inscription.

Q : Comment Amazon SWF m'aide-t-il à dimensionner mes applications ?
Amazon SWF vous permet de faire évoluer vos applications en vous accordant le contrôle complet sur le nombre de programmes exécutants lancés pour chaque type d'activité et d'instances exécutées par programme décideur. Par l'augmentation du nombre de programmes exécutants ou d'instances décisionnelles, vous accroissez les ressources de calcul allouées pour les étapes de traitement correspondantes et ainsi le débit relatif à celles-ci. Pour procéder à 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 indique le nombre de tâches d'une liste de tâches. Étant donné que l'accroissement de ce nombre suppose que les programmes exécutants ne suivent plus la charge, vous pouvez en ajouter automatiquement de nouveaux chaque fois que le journal des tâches en souffrance dépasse un seuil.

Q : J'exécute un grand nombre d'applications critiques pour mon activité. Comment puis-je les surveiller et les mettre à l'échelle ?
En plus de Management Console, Amazon SWF propose un ensemble complet d'API de visibilité. Ces dernières peuvent être utilisées pour obtenir des informations permettant de surveiller l'ensemble des exécutions et de les faire évoluer en fonction de la charge. Vous pouvez obtenir des données détaillées sur chaque type d'exécution, comme le nombre d'ouvertures et de fermetures d'exécutions au cours d'une plage définie. Les API de visibilité vous permettent également de créer vos propres applications de surveillance.

Q : Un grand nombre d'exécutions fonctionnent simultanément, mais quelques-unes d'entre elles échouent ou se bloquent souvent. Comment puis-je détecter et résoudre ces problèmes d'exécution ?
Amazon SWF permet de rechercher des exécutions grâce à sa console de gestion et ses API de visibilité. Vous pouvez effectuer des recherches selon divers critères comme les intervalles de durée pendant lesquels des exécutions sont lancées ou se sont terminées, l'état actuel (ouverte ou fermée, par exemple) et les modes d'échec standard (expiration ou arrêt). Afin de regrouper des exécutions de processus, vous pouvez utiliser jusqu'à 5 balises permettant d'associer du texte personnalisé à des exécutions lors de leur lancement. Vous avez la possibilité d'utiliser des balises pour rechercher des exécutions de processus dans AWS Management Console.

Afin de rechercher les exécutions susceptibles d'être bloquées, vous pouvez affiner votre recherche au moyen d'un critère de durée pour trouver les exécutions dont la durée est plus longue que prévu. Vous pouvez ainsi en inspecter les détails par tâche et déterminer si certaines tâches ont duré trop longtemps ou ont échoué ou si le programme décideur n'a tout simplement pas lancé de tâche. Cela vous permet d'identifier le problème au niveau de la tâche.

Q : Je dispose d'un type d'activité pouvant être utilisé dans plusieurs applications. Puis-je le partager avec ces applications ?
Oui. Il est possible de partager un type d'activité donné dans plusieurs applications, à condition que les applications et l'activité soient toutes enregistrées dans le même domaine. Pour ce faire, différents programmes décideurs peuvent lancer des tâches pour le type d'activité et l'ajouter à la liste des tâches que les programmes exécutants interrogent pour cette activité. Les programmes exécutants de ce type d'activité obtiennent ainsi les tâches d'activité issues de toutes les applications. Si vous souhaitez indiquer de quelle application provient une tâche d'activité ou si vous voulez déployer divers ensembles de programmes exécutants selon les applications, vous pouvez utiliser plusieurs listes de tâches. Consultez la rubrique Comment puis-je m'assurer qu'un programme exécutant ou décideur n'obtient que les tâches qu'il est en mesure de traiter ?

Q : Puis-je utiliser AWS Identity and Access Management (IAM) pour gérer l'accès à Amazon SWF ?
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.

Q : Puis-je faire fonctionner mes programmes exécutants derrière un pare-feu ?
Oui. Les programmes exécutants utilisent des demandes HTTP GET standard pour obtenir des tâches auprès d'Amazon SWF et renvoyer les résultats calculés. Puisqu'ils envoient toujours des demandes à Amazon SWF, vous n'avez pas à configurer votre pare-feu pour autoriser les demandes entrantes.

Q : Le fait d'exposer ma logique applicative via des programmes exécutants et décideurs ne présente-t-il pas un risque de sécurité ?
Les programmes exécutants utilisent des demandes HTTP GET standard pour obtenir des tâches auprès d'Amazon SWF et renvoyer les résultats calculés. Par conséquent, vous n'avez pas à exposer de point de terminaison pour vos programmes exécutants. De plus, Amazon SWF n'attribue de tâches aux programmes exécutants qu'une fois celles-ci lancées par le programme décideur. Dès lors que vous développez le programme décideur, vous contrôlez complètement quand et comment les tâches sont lancées, y compris les données d'entrée qui les accompagnent lors de leur transmission aux programmes exécutants.

Q : Comment Amazon SWF m'aide-t-il à coordonner des tâches de manière fiable au sein de mon application ?
Amazon SWF offre des garanties utiles en terme d'affectation de tâches. Il permet de s'assurer qu'une tâche n'est affectée qu'une seule fois et qu'elle n'est jamais dupliquée. Ainsi, même si vous disposez de plusieurs programmes exécutants pour un type d'activité en particulier (ou un certain nombre d'instances de programmes décideurs), Amazon SWF n'affecte une tâche spécifique qu'à un seul programme exécutant(ou à une instance de programme décideur). De plus, Amazon SWF ne conserve qu'une seule tâche décisionnelle en souffrance à la fois par exécution de processus. Par conséquent, vous pouvez exécuter plusieurs instances de programmes décideurs sans avoir à vous soucier du nombre d'instances fonctionnant simultanément sur la même exécution. Ces fonctionnalités vous permettent de coordonner votre processus sans avoir à vous occuper de la duplication, de la perte ou des conflits de tâches.

Q : Combien de types de processus, de types d'activités et de domaines puis-je enregistrer avec Amazon SWF ?
Chaque domaine peut comporter jusqu'à 10 000 types d'activité (au total) enregistrés ou non autorisés. Votre compte AWs peut comporter 100 domaines Amazon SWF au maximum (y compris les domaines enregistrés et non autorisés). Si vous pensez dépasser les limites ci-dessus, veuillez utiliser ce formulaire pour contacter l'équipe Amazon SWF afin de discuter avec eux de votre scénario et de demander un relèvement des limites.

Q : Le nombre d'exécutions de processus qu'il m'est possible de lancer simultanément est-il limité ?
À tout moment, vous pouvez disposer d'un nombre maximum de 100 000 exécutions ouvertes dans un domaine. Il n'existe aucune autre limite relative au nombre d'exécutions que vous lancez ou conservées par Amazon SWF. Si vous pensez dépasser les limites ci-dessus, veuillez utiliser ce formulaire pour contacter l'équipe Amazon SWF afin de discuter avec eux de votre scénario et de demander des seuils plus élevés.

Q : Combien de temps peut durer l'exécution des processus ?
Chaque exécution de processus peut durer jusqu'à 1 an. Chaque historique d'exécution de processus peut contenir jusqu'à 25 000 évènements. Si votre cas nécessite le dépassement de ces seuils, vous pouvez utiliser les fonctions proposées par Amazon SWF pour poursuivre les exécutions et structurer vos applications au moyen d'exécutions de processus enfants.

Q : Que se passe-t-il si l'exécution de mon processus est inactive depuis longtemps ?
Amazon SWF n'entreprend aucune action spécifique en cas d'inactivité prolongée d'une exécution de processus. Les exécutions inactives sont soumises aux délais d'expiration que vous configurez. Par exemple, si vous avez défini la durée maximale d'une exécution de sorte qu'elle ne dépasse pas 1 journée, une inactivité supérieure à cette limite entraînera son expiration. L'inactivité est également soumise à la limite d'Amazon SWF concernant la durée d'exécution (1 an).

Q :Combien de temps peut prendre un programme exécutant pour traiter une tâche ?
Amazon SWF n'impose pas de limite spécifique relative au temps que peut prendre un programme exécutant pour traiter une tâche. Il applique le délai d'expiration défini relatif à la durée maximale de la tâche d'activité. Il est à noter que depuis qu'Amazon SWF limite la durée d'une exécution à 1 an maximum, le traitement d'une tâche par un programme exécutant ne peut pas dépasser ce seuil.

Q : Combien de temps Amazon SWF peut conserver une tâche avant qu'un programme exécutant ne la demande ?
Amazon SWF n'impose pas de limite spécifique relative à la durée de conservation d'une tâche avant qu'un programme exécutant n'en fasse la demande. Toutefois, lors de l'enregistrement du type d'activité, vous pouvez définir un délai d'expiration par défaut indiquant la durée pendant laquelle Amazon SWF peut conserver les tâches d'activité de ce type. Il vous est également possible de définir ce délai d'expiration ou de passer outre le délai par défaut par le biais du code de votre programme décideur lorsque vous programmez une tâche d'activité. Étant donné qu'Amazon SWF limite la durée d'exécution d'un processus à un 1 an maximum, la tâche n'est pas conservée plus longtemps si aucun délai d'expiration n'est spécifié.

Q : Puis-je programmer plusieurs tâches par décision ?
Oui, vous pouvez programmer jusqu'à 100 tâches par décision, mais aussi envoyer plusieurs décisions les unes après les autres.

Q : Combien de tâches, de signaux et de marqueurs propres à un programme exécutant peuvent être inclus dans l'exécution d'un processus et dans les différentes exécutions ?
Il n'existe aucune limite relative au nombre total de tâches d'activité, de signaux et de minuteurs utilisés lors de l'exécution d'un processus. Cependant, à l'heure actuelle une exécution de processus ne peut comporter qu'un nombre maximum de 1 000 tâches d'activité ouvertes. Cela comprend les tâches d'activité lancées et celles en cours de traitement par des programmes exécutants. De même, une exécution de processus peut comporter jusqu'à 1 000 minuteurs ouverts et 1 000 exécutions enfant ouvertes.

Q : Quelle quantité de données puis-je transférer lors de l'exécution d'un processus ?
Il n'existe aucune limite relative à la quantité totale de données transférées lors de l'exécution d'un processus. Toutefois, les API d'Amazon SWF imposent des limites spécifiques pour les paramètres utilisés pour transférer des données au sein d'une exécution. Par exemple, les données d'entrée transférées vers une tâche d'activité et celles envoyées avec un signal ne peuvent pas comporter plus de 32 000 caractères.

Q : Amazon SWF conserve-t-il les exécutions réalisées ? Si oui, pendant combien de temps ?

Amazon SWF conserve l'historique d'une exécution terminée pour le nombre de jours défini sans dépasser 90 jours (par ex. environ 3 mois). Lors de cette période de conservation, vous pouvez accéder à l'historique et rechercher l'exécution à l'aide d'un programme ou via la console.

Q : Quand les appels d'API sont-ils restreints ?
Au-delà de rares pics, il se peut que vous subissiez des restrictions si vous effectuez un très grand nombre d'appels d'API dans un laps de temps très court. Si vous estimez subir souvent des restrictions ou si votre application connaît des pics fréquents, veuillez utiliser ce formulaire pour contacter l'équipe Amazon SWF afin de discuter de votre scénario d'utilisation et de demander une modification des paramètres de restriction de votre compte.

Q : Dans quelles régions Amazon SWF est-il disponible ?
Amazon SWF (SWF) est disponible dans chacune des régions suivantes : USA Est (Virginie du Nord), USA Ouest (Oregon), USA Ouest (Californie du Nord), UE (Irlande), UE (Francfort), Asie-Pacifique (Singapour), Asie-Pacifique (Tokyo), Asie-Pacifique (Sydney), Amérique du Sud (Sao Paulo) et AWS GovCloud (USA).

Q : Amazon SWF est-il accessible dans plusieurs zones de disponibilité ?
Oui, Amazon SWF gère votre historique des exécutions de processus et les autres informations relatives à votre processus dans 3 zones de disponibilité, de sorte que vos applications peuvent toujours utiliser Amazon SWF, même en cas d'échec dans une de ces zones.

Q : Quels sont les points d'accès au service Amazon SWF ?
Pour en savoir plus sur les points d'accès, consultez la documentation relative aux Références générales AWS.

Q : vos prix sont-ils toutes taxes comprises ?

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.