AWS Step Functions とは
概要
AWS Step Functions(分散アプリケーションの調整)| AWS
AWS Step Functions は、AWS Lambda 関数および AWS の複数のサービスを、ビジネスに不可欠なアプリケーション内に簡単に配列することができるサーバーレスの関数オーケストレーターです。
Lambda とか他の AWS サービスを順番に実行するように管理できるようです。
よくある質問 - AWS Step Functions | AWS
AWS Step Functions は完全マネージド型のサービスで、視覚的ワークフローを使用して分散アプリケーションやマイクロサービスのコンポーネントを容易にコーディネートできます。
AWS Step Functions とは? - AWS Step Functions
グラフィカルコンソールを使用して、アプリケーションのコンポーネントを一連のステップとして配置し、可視化できます。これにより、複数のステップからなるアプリケーションをシンプルに構築および実行できるようになります。
複数の Lambda 関数を順番に呼び出すような場合に便利です。
Step Functions では、各ステップが自動的にトリガーおよび追跡され、エラーが発生した場合は再試行されるため、アプリケーションが意図したとおりに整然と実行されます。また、各ステップの状態が記録されるため、問題が発生した場合は、問題を簡単に診断およびデバッグできます。
Lambda A が終わったら Lambda B を呼ぶみたいなことが順番に行われます。どのステップでエラーが起きたかも分かるので、どの Lambda を修正すればよいのかが分かります。
メリット
よくある質問 - AWS Step Functions | AWS
Q: オーケストレーションを使用してアプリケーションを設計することにおける利点は何ですか?
アプリケーションをサービスコンポーネント (またはステップ) に分割することで、1 つのコンポーネントで障害が発生した場合もシステム全体がダウンすることなく、各コンポーネントが独立してスケーリングされ、そして各変更後にシステム全体を再デプロイすることなくコンポーネントを更新できるという利点があります。
「疎結合」にできるということですね。
各処理が独立して動くことで、障害発生時の影響が最小限に抑えられます。
ちなみに、疎結合について以下の AWS の公式の例がすごく分かりやすかったので、参考までにご覧ください。
技術用語を比喩から学ぼう ! - 第 1 回「疎結合」 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS
ユースケース
よくある質問 - AWS Step Functions | AWS
- データ処理: 複数のデータベースのデータを統合して統一レポートを作成したり、大規模なデータセットを便利な形式に改良および縮小したり、Amazon Simple Storage Service (S3) バケット内の数百万のファイルを高い同時実行性ワークフローで反復処理したり、マルチステップ分析や機械学習ワークフローを連携させたりすることができます。
- DevOps および ITオートメーション: 継続的インテグレーション、継続的デプロイのためにツールを構築、またはインフラストラクチャーの変化に自動的に応答する事象主動のアプリケーションを作成します
- e コマース – 注文のフルフィルメントや在庫追跡など、ミッションクリティカルなビジネスプロセスを自動化する。
- ウェブアプリケーション – 強力なユーザー登録プロセスとサインオン認証を実装する。
使ってみた感想
少しハードルが高いかなと思っていましたが、とりあえず Lambda を順番に実行するぐらいならすぐにできました。
Step Functions では Amazon States Language という JSON でフローを記述するのですが、コンソールで組み込みたいサービスを選択することで自動的にその部分のテンプレートを作成してくれました。
順番の設定など細かい部分は調整が必要ですが、シンプルなフローなら簡単でした。
Lambda 間でのデータの受け渡しは、関数内で return <渡したいデータ>
と記述することで、Step Functions が次の関数に渡してくれました。
Lambda 以外にも SNS, SQS, ECS, DynamoDB などと連携できたり、API Gateway からも呼び出せるようです。
その他の参考記事
AWS Step Functions をゼロからざっくり理解する | DevelopersIO
Step Functionsを使って初めてループや分岐をやってみた! | DevelopersIO
まとめ
今回は AWS Step Functions について調べてみました。
以下がポイントでした。
- Lambda などの AWS サービスを順番に実行するように管理できる
- コンポーネント間を疎結合にできる
- コンソール上で視覚的に設定できる
- 問題が発生した場合は、問題を簡単に診断およびデバッグできる
使いこなせれば普段の業務でも自動化できる部分があるかもしれません。
簡単な内容ですが、どなたかの参考になれば幸いです。
Discussion