Amazon Simple Workflow Service (Amazon SWF) は、デベロッパーが並行したステップまたは連続したステップがあるバックグラウンドジョブを構築、実行、スケールするのに役立ちます。Amazon SWF は、クラウド内の完全マネージド型の状態トラッカー、およびタスクコーディネーターとみなすことができます。
アプリケーションのステップが完了に 500 ミリ秒より長くかかる場合、処理の状態を追跡し、タスクが失敗した場合は、リカバリまたは再試行が必要であり、Amazon SWF が役立ちます。
AWS のサービスのオーケストレート、ビジネスプロセスの自動化、サーバーレスアプリケーションの構築のために、ローコードのビジュアルプロセスフローサービスをお探しの方は、AWS Step Functions の詳細をご覧ください。
並行、連続、ファンアウトなどのプロセスフローパターンのサンプルコードを取得するには、開始方法のページにアクセスしてください。
Amazon SWF は、バックグラウンドジョブの段階的論理の制御フローと独自のビジネスロジックを含む実際の作業単位の分離を促進します。これにより、アプリケーションの「状態マシナリ」を、アプリケーションを差別化するコアビジネスロジックから分離して管理、維持、拡張できます。ビジネス要件の変化に合わせて、基盤となる状態マシナリ、タスクの割り当て、フロー制御を心配せずに、容易にアプリケーションロジックを変更できます。
Amazon SWF は、Amazon の高可用性データセンターで実行されるため、アプリケーションが必要なときはいつでも状態追跡やタスク処理エンジンが利用できます。Amazon SWF は重複してタスクを保管し、アプリケーションコンポーネントにタスクを確実に割り当てて、その進行状況をトラッキングし、最新の状態情報を保持します。
Amazon SWF は、独自にコーディングされたプロセスフローソリューションやプロセスオートメーションソフトウェアの複雑さをなくす、フルマネージド型のクラウドプロセスフローウェブサービスです。プロセスオートメーションの基礎となるインフラストラクチャをデベロッパーが管理する必要はなくなるので、アプリケーションの独自機能の開発に集中できます。
Amazon SWF は、アプリケーションの使用状況に合わせてシームレスに処理規模をスケールできます。アプリケーションにクラウドプロセスフローが追加されたり、プロセスフローの複雑さが増大したりしても、プロセスフローサービスに対する手作業での管理は必要ありません。
Amazon SWF では、アプリケーションコンポーネントやコーディネートロジックを任意のプログラミング言語で作成でき、クラウドとオンプレミスのいずれでも実行できます。
Amazon S3 と Amazon EC2 を使用して動画をエンコーディングする。 このユースケースでは、サイズの大きな動画を、ある程度のまとまり(チャンク)に分けて Amazon S3 にアップロードします。このチャンクのアップロードを監視する必要があります。チャンクが1つアップロードされたら、そのチャンクをエンコードするために Amazon EC2 インスタンスの1つにダウンロードします。エンコードされたチャンクは、別の Amazon S3 ロケーションに保管します。このようにしてすべてのチャンクがエンコードされたら、チャンクを結合して1つのエンコード済みファイルを作成し、そのまま Amazon S3 に保管します。1 つまたは複数のチャンクで発生したエンコードエラーが原因で、このプロセスが異常終了することもあります。そのような障害は、Amazon SWF のクラウドプロセスフロー管理によって検出し、処理する必要があります。
コンポーネントをデータセンターからクラウドに移行する。 ビジネスに欠かせないオペレーションがプライベートのデータセンターでホスティングされていますが、全体をクラウドに移行する必要があります。ただし、サービスの中断が発生してはなりません。Amazon SWF ベースのアプリケーションでは、データセンターで実行されるコンポーネントをラッピングするワーカーと、クラウド内で実行されるワーカーとを組み合わせることができます。データセンターワーカーをシームレスに移行するには、同じタイプの新しいワーカーを最初にクラウド内にデプロイします。データセンター内のワーカーは引き続き通常どおり稼働し、並行して新しいクラウドベースのワーカーも稼働します。クラウドベースのワーカーのテストと検証を行うために、作業負荷の一部をクラウドにルーティングします。このテストの期間中も、データセンター内のワーカーは引き続き稼働しているため、アプリケーションが中断されることはありません。テストが成功すると、データセンター内のワーカーは段階的に停止していき、クラウド内のワーカーがスケールアップして、その全体がクラウドプロセスフロー管理アプリケーションに移行することになります。このクラウドプロセスフロープロセスを、データセンター内の他のすべてのワーカーについても同様に実行すると、アプリケーションを完全にクラウドに移行できます。ビジネス上の理由で、特定の処理ステップを引き続きプライベートのデータセンターで実行する場合は、そのワーカーを引き続きプライベートデータセンターで実行しながらアプリケーションに参加させることが可能です。
サイズの大きい製品カタログを Amazon Mechanical Turk を使用して処理する。 大規模カタログのデータを検証するときに、カタログ内の製品をバッチに分けて処理します。複数のバッチを同時に処理することができます。バッチごとに、製品データをデータセンター内のサーバーから抽出して CSV(カンマ区切り形式)ファイルに変換します。これは、Amazon Mechanical Turk の RUI(Requester User Interface)で要求されている形式です。この CSV をアップロードすると、そのデータを入力として HIT(Human Intelligence Task)が実行されます。HIT が完了したら、生成された CSV を逆変換してデータを元の形式に戻します。この結果を評価し、結果が合格ならば Amazon Mechanical Turk の作業者に報酬が支払われます。HIT の結果が不合格の場合は取り除いて再処理しますが、合格の場合はその結果を使用してカタログを更新します。バッチが処理されるときに、システムは Amazon Mechanical Turk 作業者の質をトラッキングして、報酬をそれに応じて調整する必要があります。不合格の HIT は再びバッチにまとめられて、もう一度パイプラインに送られます。