SWF を選ぶ理由
Amazon Simple Workflow Service (Amazon SWF) は、デベロッパーが並行したステップまたは連続したステップがあるバックグラウンドジョブを構築、実行、スケールするのに役立ちます。Amazon SWF は、クラウド内の完全マネージド型の状態トラッカー、およびタスクコーディネーターとみなすことができます。
アプリのステップが完了に 500 ミリ秒より長くかかる場合、処理の状態を追跡し、タスクが失敗した場合は、リカバリまたは再試行が必要であり、Amazon SWF がお役に立ちます。
AWS のサービスのオーケストレート、ビジネスプロセスの自動化、サーバーレスアプリケーションの構築のために、ローコードのビジュアルプロセスフローサービスをお探しの方は、AWS Step Functions の詳細をご覧ください。
利点
Amazon SWF 製品の詳細
Amazon SWF を使用してアプリケーション内のワークフローを管理するのは簡単です。
Amazon SWF の機能
Amazon SWF サービスは、アプリケーションのさまざまなすべてのコンポーネントのコーディネーションハブの役割を果たします。
- アプリケーションの状態情報を保持する
- ワークフロー実行をトラッキングしてその進行状況を記録する
- タスクを保管して割り当てる
- 各アプリケーションホストにどのタスクを割り当てて実行するかを制御する
Amazon SWF を使用するのに必要な作業は次のとおりです。
- AWS Management Console または Amazon SWF API を使用して、ワークフローの名前を指定します。
- Amazon SWF API を使用して新しいワークフローを「開始」します。この結果として、実行対象のワークフロータスクのシーケンスが新たに作成され、これを「ワークフロー実行」と呼びます。
- Amazon SWF API をワーカーマシンから実行して(「ワーカー」とは、特定のタスクを処理するためにお客様が作成するアプリケーションコンポーネントです)、タスクの順序を確立し、条件フローを管理し、ワークフロー実行のループを実行します。
- ワーカーマシンの Amazon SWF API を使用して、ワークフロータスクを、クラウド内またはオンプレミスでリクエストして実行します。
- ワークフロー実行および関連付けられたタスクのステータスと進行状況を AWS Management Console で監視します。
AWS マネジメントコンソールにあるサンプルのチュートリアルを使用すると、サンプルアプリケーションの登録と実行のステップを順に実行することができます。詳細については、ドキュメントを参照してください。
詳細情報
Amazon SWF は、拡張性と耐障害性に優れたアプリケーションを構築するための、完全マネージド型のワークフローサービスです。Amazon SWF はシンプルな API 呼び出し機能を備えており、任意の言語のコードから実行できます。このコードは EC2 インスタンス上で実行することも、インターネットにアクセス可能な任意の場所のマシンで実行することもできます。
Amazon SWF は、コーディネーションハブとして、お客様のアプリケーションホストと相互作用します。お客様は、タスクを組み合わせてワークフローを作成し、適用する条件ロジックがある場合は指定して、Amazon SWF に保管します。ワークフローを実行するたびに、新しいワークフロー実行が作成されたと見なされます。お客様のアプリケーションコンポーネントは、ワークフロー実行の中でのタスクの実行をリクエストするようにプログラミングしてください。Amazon SWF は、タスクをお客様が指定した順序で、お客様のホスト上で実行するようにコーディネートします。実行するホストは、クラウド内でもオンプレミスでもかまいません。アプリケーションは、API を使用して Amazon SWF と通信し、タスクが正常終了したか異常終了したかを記録します。これを受けて、Amazon SWF はタスクのシーケンスを続行するか(次のワークロードタスクをアプリケーションホストに割り当てる)、異常終了したタスクをお客様のビジネスロジックに応じて再実行します。
Amazon SWF によるワークフロー実行を開始するには、AWS Management Console にログインしてください。Amazon SWF API を使用してワークフロー実行を開始することもできます。Amazon SWF に採用されているシンプルなウェブサービスインターフェイスは、使いやすく、柔軟性にも優れています。
- StartWorkflowExecution: ワークフロータスクのシーケンスを開始し、最初のタスクをアプリケーションホストで実行できる状態にします。
- DescribeWorkflowExecution: ワークフロー実行とタスクのステータスを返します。
- PollForActivityTask: お客様のアプリケーションホスト(クラウド内またはオンプレミス)が、連続ループの中でワークフロータスクをリクエストして実行します。
- RespondActivityTaskCompleted: アプリケーションホストから Amazon SWF に、タスクの実行を正常に完了したことを通知します。これを受けて、Amazon SWF はワークフロー実行を進めるために次のタスクをアプリケーションホストで実行できる状態にします。
- TerminateWorkflowExecution: 特定のワークフロー実行を停止します。このワークフロー実行のそれ以降のタスクは、Amazon SWF によってアプリケーションホストに割り当てられることはありません。
想定される使用目的と制約
このサービスのご利用には Amazon Web Services カスタマーアグリーメントが適用されます。
ユースケース
AWS Flow Framework
AWS Flow Framework は、Amazon Simple Workflow でアプリケーションを迅速かつ簡単に構築できるようにする、便利なライブラリのコレクションです。
仕組み
AWS Flow Framework には、簡単なプログラミングモデルが備わっています。そのため、複数のマシンにまたがって作業を実行するアプリケーションを簡単に構築できます。フレームワークでは、短時間でタスクを作成し、それらを連携させて、通常のプログラムで行っているように、それらのタスク間の依存関係を表現できます。例えば、「リモート」コンピュータにあるアプリケーションでメソッドを実行するには、別の「ローカル」コンピュータでホストされているアプリケーションロジックのメソッドを呼び出すだけです。AWS Flow Framework はリモートメソッドの実行に必要な複雑なやり取りを処理し、Amazon Simple Workflow サービスによって保存された情報を使用して、結果を論理アプリケーションに返します。実行したメソッドの出力は、相互に依存するロジックの個々の部分を結びつけるために使用できます。フレームワークでは、簡単な構文を使用し、「ブロックしてコールバックを待機する」アプローチにより、メッソド間の依存関係を表現できます。また、リモートマシン上での障害は、ローカルエラーであるかのように処理でき、アプリケーションの重要なメソッドが失敗した場合にそれらをどのように再試行するかを簡単に定義できるようにします。
- AWS SDK for Java で入手する。
- Java バージョンのオンラインセミナーを視聴する。
- デベロッパーガイドを参照する
- API リファレンスを参照する。
注意
Ruby 用 AWS Flow Framework は、現在活発に開発されていません。既存のコードは無期限に機能し続けますが、新しい機能やバージョンはありません。Ruby 用 Flow Framework のソースコードは、引き続き AWS SWF GitHub アーカイブで入手できます。Ruby ベースの Simple Workflow アプリケーションが進化し変化している場合は、AWS Step Functions への移行やネイティブの Simple Workflow API の使用など、検討できるオプションがあります。詳細については、AWS Simple Workflow デベロッパーガイドを参照してください。
AWS Flow Framework を使用すると、シンプルなコードを作成するだけで、フレームワークの事前に構築されたオブジェクトやクラスにより Amazon Simple Workflow API の詳細を処理できます。AWS Flow Framework には、アプリケーションのステップを作成して実行し、それらの進捗をトラッキングしたり、ステップが失敗した場合の再試行ルールを定義できるなど、さまざまな機能が備わっています。同時に、Amazon Simple Workflow Service では、アプリケーションの実行状態の維持や、利用可能なワーカーへのタスクの依頼、すべてのタスクの監査履歴の保持も行えます。
AWS Flow Framework は Java オープンソースで、AWS によって開発および管理されています。ライブラリ、ソースコード、ドキュメント、サンプルなどは、下記のリンク先から入手できます。