AWSのワークフローサービス(SWF)とは
AWS SWF(Amazon Simple Workflow Service)は、分散アプリケーションにおけるワークフローの管理とオーケストレーション(システムやサービスの構築、運用管理の自動化)を容易にするサーバーレスワークフローサービスです。
複数のサービス間で複雑なワークフローを定義、実行、監視できます。
この記事では、AWS SWFの概要や、料金、メリットなどについてわかりやすく解説します。
【参考】:Amazon Simple Workflow Service(クラウドワークフロー管理)|AWS
ワークフローとは
ここで、ワークフローの概念について確認しておきましょう。ワークフローとは、人などが仕事を行う際の開始から終了までの仕事の進め方を説明したり、管理したりするためのドキュメントです。ワークフローは仕事のプロセスにおける各ステップと、その状態によって構成されています。
またワークフローは、チェックリストの各ステップや、そのステップを視覚化したものとして、図表などで表現されます。
【参考】:ワークフローとは? |AWS
AWS SWFの概要
ここでは、AWS SWFの機能や導入メリット、料金などの概要について紹介します。
AWS SWFの機能
AWS SWFを利用することで、以下のような6つの機能を利用できます。1つずつ見ていきましょう。
■ ワークフローの定義 エンジニアはドラッグ&ドロップ型のワークフローデザイナーを使用して、ワークフローを視覚的に定義できます。ワークフローは、一連のタスクと、それらのタスク間の依存関係で構成されます。
■ タスクの実行 AWS SWFは、タスクの実行をさまざまなワーカーに分散させることができます。ワーカーは、Amazon EC2インスタンス、AWS Lambda関数、またはコンテナ化されたアプリケーションなどになる可能性があります。
■ ワークフローの実行ステータスの追跡 AWS SWFは、ワークフローの実行ステータスを可視化し、ワークフローの実行中に発生したイベントに関する詳細な情報を提供します。
■ ワークフローの自動スケーリング AWS SWFは、ワークフローの実行量に応じて自動的にスケールできます。これにより、ワークロードの増加に対応し、コストを最適化できます。
■ ワークフローの信頼性 SWFは、ワークフローの実行を永続化し、障害が発生した場合には自動的に再実行することで、ワークフローの信頼性を高めます。
【参考】:Amazon SWF API を使用する - Amazon Simple Workflow Service|AWS
AWS SWFのユースケース
AWS SWFはどのような使い方をするのでしょうか?以下のようなユースケースが適していますので、それぞれを紹介します。人間系の処理からコンピューティング処理まで多岐に渡っていることが分かります。
■ メディア処理ワークフロー ビデオのエンコード、トランスコーディング、配信などのタスクを自動化します。
■ Web アプリケーションのバックエンド 受注処理、顧客管理、コンテンツ管理などのタスクをオーケストレーションします。
■ ビジネスプロセスワークフロー 承認ワークフロー、オンボーディングワークフロー、経費報告ワークフローなどの業務ワークフローシステムのタスクを自動化します。
■ 分析パイプライン データの収集や処理、分析などのタスクをオーケストレーションします。
SWFの3つのコンポーネント
AWS SWFは以下3つの主要なコンポーネントで構成されており、複数のサービス間で複雑なワークフローを定義、実行、監視する上で重要な役割を担っています。コンポーネントについて1つずつ見ていきましょう。
1.ディサイダー ワークフローの実行を制御するロジックを記述するプログラムです。ステートマシン、条件分岐、ループなどを用いて、ワークフローの進行を定義します。また独自のプログラミング言語で記述したり、Amazon SWF Flow Frameworkを使用したりしてワークフローを構築することができます。
【参考】:Amazon SWF でのディサイダーの開発 - Amazon Simple Workflow Service |AWS
2.アクティビティワーカー ディサイダーから割り当てられたタスクを実行するワーカープロセスで、Amazon EC2インスタンス、AWS Lambda関数、コンテナ化されたアプリケーションなど、さまざまな環境で実行できます。タスクの実行中に発生したイベントやステータスを、ディサイダーに報告します。
【参考】:Amazon SWF でのアクティビティワーカーの開発 - Amazon Simple Workflow Service |AWS
3.ワークフローストア ワークフローの実行に関するデータを永続的に保存するストアで、ワークフローの定義、実行履歴、ステータス、イベントログなどが保存されます。ワークフローの実行を監査したり、障害が発生した場合にワークフローを復元したりするために使用されます。
AWS SWFとAWS Step Functionsとの違い
AWS SWFの類似のサービスとしては、AWSのStep Functionsが挙げられます。Step Functionsは、AWS SWFの後継サービスとして推奨されており、より現代的なワークフロー管理機能を提供しています。主な違いを見てみましょう。
他、データ統合サービスのAWS Glueにもワークフロー作成機能が備わっていますが、あくまでもAWS Glue専用機能であるため、ここでは比較しません。
■ AWS Step Functions SWFと比べて、より直感的なワークフローの設計と管理が可能になっています。またステートマシンとしての機能を持っており、容易に状態の可視化が行えます。さらに、AWS Lambdaなど他のAWSサービスとの統合が強化されています。
■ AWS SWF タスク指向で、ワーカーとディサイダーを使用してワークフローを管理します。利用する場面としては、長時間実行されるワークフローや人的介入が必要なワークフローに適しています。複雑なワークフローの管理には強みがありますが、後発のStep Functionsと比較すると設定が複雑で難易度が上がります。
【参考】:AWS Step Functions(分散アプリケーションの調整)| AWS 【参考】:AWS Glue のワークフローの概要 - AWS Glue| AWS
AWS SWFの料金
Amazon SWFは、従量課金制のサービスです。つまり、実際に利用したサービスに対してのみ料金が発生します。具体的には、以下の3つの要素に基づいて料金が課金されます。
▪ワークフロー実行数:ワークフローの実行回数に対して課金されます。 ▪ワークフローステップ実行数:ワークフロー内で実行されたステップ数に対して課金されます。 ▪ワークフローストア保存容量:ワークフローストアに保存されているデータ量に対して課金されます。
具体的には、次の単価で計算されます。(執筆時点:2024年4月)現在
▪ワークフロー実行:1回あたり $0.0000175 ▪ワークフローステップ実行:1回あたり $0.0000002 ▪ワークフローストア保存容量:1GB あたり $0.005216
ただし、無料利用枠があり、1か月あたり 100,000ワークフロー実行、300,000ワークフローステップ実行、10GBのワークフローストア保存容量まで無料で利用ができます。
【参考】:料金 - AWS SWF|AWS
AWS SWFのメリットとデメリット
AWS SWFの特徴を理解したところで、利用するメリットとデメリットについて見てみましょう。
SWFのメリット
AWSの主なメリットについて、4項目にまとめてみました。利用シーンや追及するメリットを明確にしてから利用することをおすすめします。
1.ワークフローの開発と管理を容易になる ドラッグ&ドロップ型のワークフローデザイナーを使用して、ワークフローを視覚的に定義することができます。
また、ワークフローの実行を可視化し、ワークフローの実行中に発生したイベントに関する詳細な情報を確認できます。さらに、ワークフローの実行履歴を監査したり、問題が発生したワークフローをデバッグしたりすることができます。
2.分散アプリケーションのスケーラビリティと信頼性向上 ワークフローの実行量に応じて自動的にスケーリングします。またワークフローの実行を永続化し、障害が発生した場合に自動的に再実行することで、ワークフローの信頼性が高まります。またワークフローの実行を補償付きトランザクションで実行することで、データの一貫性を保証できます。
3.ワークフローの実行コスト削減 ワークフローの実行数、ワークフローステップ実行数、ワークフローストア保存容量に基づいて従量課金されるため、無駄なコストが発生しません。また無料利用枠も設けられており、基本的なワークフローであれば無料での利用が可能です。
4.その他のメリット セキュリティ面では、ワークフローの実行を認証方式にすることで、不正アクセスから保護することができ、ワークフローデータを暗号化することで、機密情報の保護も行えます。また、ワークフローの実行ステータスを可視化し、実行中に発生したイベントに関する詳細な情報を確認できます。
SWFのデメリット
SWFはさまざまなメリットがある反面、デメリットとなる要素もあるため、利用にあたってはデメリットを理解しておきましょう。以下、主なデメリットについて解説します。
1.カスタマイズの自由度が低い ワークフローデザイナーを使用してワークフローを定義しますが、ワークフローデザイナーでは、すべてのワークフローシナリオを表現できないケースもあります。ただし、カスタムコードを使用することで、ワークフローデザイナーで表現できない機能の追加が可能です。
2.学習が必要 複雑なワークフローを設計し、管理するためには、AWS SWFの知識と経験が必要です。AWS SWFのドキュメントやトレーニングリソースを活用することで、知識と経験を習得することができますので、利用に当たってはあらかじめ学習しておくことをおすすめします。
3.他のクラウドへの転用や移行が困難 AWS SWFは独自のワークフローサービスのため、他のクラウドプラットフォームに移行することは困難で、マルチクラウド環境で共用ができません。
SWFを利用してストリーミングデータを有効活用しよう
ここまで、AWS SWFの概要や料金、メリット・デメリットについて解説しました。Amazon SWF は、分散アプリケーションにおけるワークフローの管理とオーケストレーションを容易にする強力なサービスです。
メリットとデメリット、使い方を理解した上で、利用の可否を判断してから採用することをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから