Passer au contenu principal

Pourquoi SWF ?

Amazon Simple Workflow Service (Amazon SWF) aide les développeurs à créer, exécuter et dimensionner des tâches en arrière-plan comportant des étapes parallèles ou séquentielles. Vous pouvez considérer Amazon SWF comme un outil de suivi de l'état entièrement géré et un coordinateur de tâches dans le cloud.

Si les étapes de votre application nécessitent plus de 500 millisecondes pour se terminer, vous devez suivre l'état du traitement, ainsi que procéder à une récupération ou à un nouvel essai si une tâche échoue, et Amazon SWF peut vous y aider.

Si vous recherchez un service de flux de processus visuel à faible code pour orchestrer les services AWS, automatiser les processus métier ou créer des applications sans serveur, apprenez-en plus sur AWS Step Functions.

Avantages

Amazon SWF préconise une séparation entre la logique étape par étape du flux de contrôle de votre tâche en arrière-plan et les unités de travail réelles qui contiennent la logique unique de votre entreprise. Cela vous permet de gérer, d'entretenir et de mettre à l'échelle séparément la « machinerie à états » de votre application à partir de la logique d'entreprise essentielle qui la différencie. Au fur et à mesure que vos besoins commerciaux évoluent, vous pouvez facilement modifier la logique d'application sans avoir à vous soucier de la machinerie à états, de la distribution des tâches et du contrôle du flux sous-jacents.

Amazon SWF s'exécute au sein des centres de données à haute disponibilité d'Amazon, afin que le moteur de traitement des tâches et de suivi de l'état soit disponible dès que les applications en ont besoin. Amazon SWF stocke de façon redondante les tâches, les répartit efficacement entre les composants de l'application, suit leur progression et conserve leur état le plus récent.

Amazon SWF remplace la complexité des solutions de flux de processus codées sur mesure et des logiciels d'automatisation des processus par un service Web de flux de processus dans le cloud entièrement géré. Les développeurs n'ont donc plus à gérer l'infrastructure nécessaire à l'automatisation des processus afin de concentrer leur énergie sur les fonctionnalités uniques de leur application.

Amazon SWF permet une mise à l'échelle en toute transparence en fonction du niveau d'utilisation de votre application. Aucune administration manuelle du service de flux de processus n'est requise car vous ajoutez d'autres flux de processus dans le cloud à votre application ou augmentez la complexité de vos flux de processus.

Amazon SWF vous permet d'écrire vos composants applicatifs et votre logique de coordination dans n'importe quel langage de programmation et de les exécuter dans le cloud ou sur site.

Description détaillée d'Amazon SWF

La gestion des workflows dans votre application est un jeu d'enfants avec Amazon SWF.

Fonctionnalités d'Amazon SWF

Amazon SWF fait office de plate-forme de coordination pour les différents composants de votre application :

  • Maintien de l'état des applications
  • Suivi des exécutions des flux de travail et enregistrement de leur progression
  • Tâches de conservation et d'expédition
  • Contrôler les tâches que chacun de vos hôtes d'applications sera chargé d'exécuter

Pour utiliser Amazon SWF, il suffit :

  • D’utiliser la console de gestion AWS ou les API Amazon SWF pour spécifier les noms des flux de travail.
  • D’utiliser les API Amazon SWF pour « démarrer » un nouveau flux de travail, ce qui entraîne le lancement d'une séquence particulière de tâches de flux de travail, appelée « exécution du flux de travail ».
  • D’utiliser les API Amazon SWF de vos machines de travail (un « travailleur » est un composant de votre application qui gère des tâches spécifiques) pour établir l'ordre des tâches, gérer les flux conditionnels et exécuter des boucles pour l'exécution d'un flux de travail.
  • D'utiliser les API Amazon SWF à partir des machines exécutantes pour appeler et exécuter les tâches de workflow dans le cloud ou sur site.
  • Surveiller l'état et la progression des exécutions des flux de travail et des tâches associées dans la console de gestion AWS.

L'exemple de présentation de laconsole de gestion AWS vous indique les étapes à suivre pour enregistrer et exécuter un exemple d'application. Pour en savoir plus, reportez-vous à la documentation.

Description détaillée

Amazon SWF est un service de flux de travail entièrement géré permettant de créer des applications évolutives et résilientes. Amazon SWF fournit des appels d'API simples qui peuvent être exécutés à partir de code écrit dans n'importe quel langage et exécutés sur vos instances EC2 ou sur l'une de vos machines situées n'importe où dans le monde et pouvant accéder à Internet.

Amazon SWF fait office de centre de coordination avec lequel les hôtes de vos applications interagissent. Vous créez les flux de travail souhaités avec les tâches qui leur sont associées et toute logique conditionnelle que vous souhaitez appliquer, puis vous les stockez dans Amazon SWF. Chaque fois que vous exécutez un flux de travail, il est considéré comme une exécution de flux de travail distincte. Vous programmez les composants de votre application de sorte qu'ils demandent la réalisation de diverses tâches dans l'exécution de votre workflow et Amazon SWF coordonne les tâches réalisées, dans l'ordre que vous avez spécifié, sur vos hôtes (que ces derniers soient dans le cloud ou sur site). Les applications communiquent avec Amazon SWF à l'aide d'API pour enregistrer le succès ou l'échec des tâches. Amazon SWF poursuit ensuite la séquence de tâches en attribuant la tâche de flux de travail suivante à un hôte d'application ou en réexécutant une tâche qui a échoué en fonction de votre logique métier.

Connectez-vous à la console de gestion AWS pour démarrer l'exécution d'un flux de travail Amazon SWF. Vous pouvez également démarrer l'exécution d'un flux de travail via nos API Amazon SWF. Amazon SWF utilise une interface de service Web simple, facile à utiliser et très flexible :

  • StartWorkflowExecution : lance une séquence de tâches de flux de travail et met la première tâche à la disposition de l'un des hôtes de votre application.
  • DescribeWorkflowExecution : fournit l'état des exécutions et des tâches de votre flux de travail.
  • PollForActivityTask : les hôtes de votre application (dans le cloud ou sur site) demandent et exécutent des tâches de flux de travail en boucle continue.
  • RespondActivityTaskCompleted : un hôte d'application indique à Amazon SWF qu'il a terminé une tâche avec succès. Amazon SWF poursuivra ensuite l'exécution du flux de travail en mettant la tâche suivante à la disposition de l'hôte de l'application.
  • TerminateWorkflowExecution : arrêtez de faire avancer l'exécution d'un flux de travail en particulier. Amazon SWF n'attribuera plus aucune tâche liée à l'exécution de ce flux de travail particulier à l'hôte de l'application.

Utilisation prévue et restrictions

Votre utilisation de ce service est soumise au contrat client Amazon Web Services.

Cas d'utilisation

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 gérées par la gestion des flux de processus dans le nuage d'Amazon SWF.

Migration des composants d'un 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 travailleurs du centre de données sont progressivement arrêtés et ceux du cloud sont étendus, de sorte qu'ils passent entièrement à une application de gestion des flux de processus dans le cloud. Ce processus de flux de processus cloud peut être répété pour tous les autres travailleurs du centre de données afin que l'application soit entièrement transférée 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.

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.

AWS Flow Framework

AWS Flow Framework est un ensemble de bibliothèques pratiques qui accélèrent et facilitent le développement d'applications avec Amazon Simple Workflow.

Fonctionnement

AWS Flow Framework dispose d'un modèle de programmation simple qui vous permet de développer facilement des applications qui exécutent diverses tâches sur plusieurs machines. Dans ce framework, vous pouvez rapidement créer des tâches, les coordonner et indiquer leurs dépendances les unes par rapport aux autres, comme dans n'importe quel programme basique. Par exemple, vous pouvez exécuter une méthode au sein d'une application s'exécutant sur un ordinateur « distant » simplement en appelant cette méthode dans votre logique applicative hébergée sur un ordinateur « local » distinct. AWS Flow Framework se charge des allées et venues complexes qui sont requises pour exécuter la méthode à distance et renvoie les résultats à l'application locale en fonction des informations conservées par le service Amazon Simple Workflow. La sortie générée pour toute méthode exécutée peut servir à relier différentes composantes de votre logique qui sont interdépendantes. Le framework vous permet d'utiliser une syntaxe simple pour exprimer les dépendances entre les méthodes à travers une approche basique de type « bloquer et attendre le rappel ». Il vous permet également de gérer une panne sur une machine distante comme s'il s'agissait d'une erreur en local et de définir facilement comment, en cas d'échec, réessayer d'exécuter les méthodes importantes au sein de votre application.

Remarque

Le AWS Flow Framework pour Ruby n'est plus en cours de développement actif. Bien que le code existant continue de fonctionner indéfiniment, il n'y aura pas de nouvelles fonctionnalités ou versions. Le code source du Flow Framework pour Ruby continuera d'être disponible sur l'archive AWS SWF GitHub. Si votre application Simple Workflow basée sur Ruby évolue et change, vous pouvez envisager certaines options, notamment la migration vers AWS Step Functions ou l'utilisation de l'API native Simple Workflow. Pour plus de détails, consultez le guide du développeur AWS Simple Workflow.

Avec AWS Flow Framework, vous écrivez un code simple, puis laissez les classes et objets préintégrés du framework s'occuper des détails relatifs aux API Amazon Simple Workflow. AWS Flow Framework se charge de créer et d'exécuter les différentes étapes de votre application, effectue un suivi de leur avancement et vous permet de définir des règles de réitération en cas d'échec d'une étape et bien plus encore. Dans le même temps, le service Amazon Simple Workflow gère l'état d'exécution de votre application, transmet les tâches à effectuer aux programmes exécutants disponibles et conserve un historique d'audit de toutes vos tâches.

Le AWS Flow Framework est un environnement Java open source développé et géré par AWS. Vous pouvez utiliser les liens ci-dessous pour accéder aux bibliothèques, au code source, à la documentation et autres exemples mis à votre disposition.