📝

AWS Step Functions とは

2021/04/21に公開

概要

https://aws.amazon.com/jp/step-functions/?step-functions.sort-by=item.additionalFields.postDateTime&step-functions.sort-order=desc

AWS Step Functions は、AWS Lambda 関数および AWS の複数のサービスを、ビジネスに不可欠なアプリケーション内に簡単に配列することができるサーバーレスの関数オーケストレーターです。

Lambda とか他の AWS サービスを順番に実行するように管理できるようです。

https://aws.amazon.com/jp/step-functions/faqs/

AWS Step Functions は完全マネージド型のサービスで、視覚的ワークフローを使用して分散アプリケーションやマイクロサービスのコンポーネントを容易にコーディネートできます。

https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/getting-started.html

グラフィカルコンソールを使用して、アプリケーションのコンポーネントを一連のステップとして配置し、可視化できます。これにより、複数のステップからなるアプリケーションをシンプルに構築および実行できるようになります。

複数のLambda関数を順番に呼び出すような場合に便利です。

Step Functions では、各ステップが自動的にトリガーおよび追跡され、エラーが発生した場合は再試行されるため、アプリケーションが意図したとおりに整然と実行されます。また、各ステップの状態が記録されるため、問題が発生した場合は、問題を簡単に診断およびデバッグできます。

Lambda A が終わったら Lambda B を呼ぶみたいなことが順番に行われます。どのステップでエラーが起きたかも分かるので、どの Lambda を修正すればよいのかが分かります。

メリット

Q: オーケストレーションを使用してアプリケーションを設計することにおける利点は何ですか?

アプリケーションをサービスコンポーネント (またはステップ) に分割することで、1 つのコンポーネントで障害が発生した場合もシステム全体がダウンすることなく、各コンポーネントが独立してスケーリングされ、そして各変更後にシステム全体を再デプロイすることなくコンポーネントを更新できるという利点があります。

「疎結合」にできるということですね。
各処理が独立して動くことで、障害発生時の影響が最小限に抑えられます。
ちなみに、疎結合について以下の AWS の公式の例がすごく分かりやすかったので、参考までにご覧ください。
https://aws.amazon.com/jp/builders-flash/202003/metaphor-loose-coupling/

ユースケース

  • データプロセシング
    データをマルチデータベースから統一されたレポートにまとめる、大きなデータセットを便利な形式に精製して減らす、または手順の多い分析とマシンラーニングワークフローを整合します。
  • DevOps および IT オートメーション
    継続的インテグレーション、継続的デプロイメントのためにツールを構築、またはインフラストラクチャーの変化に自動的に応答する事象主動のアプリケーションを作成します
  • e コマース
    注文のフルフィルメントや在庫追跡など、ミッションクリティカルなビジネスプロセスを自動化する。
  • ウェブアプリケーション
    強力なユーザー登録プロセスとサインオン認証を実装する。

使ってみた感想

少しハードルが高いかなと思っていましたが、とりあえず Lambda を順番に実行するぐらいならすぐにできました。
Step Functions では Amazon States Language という JSON でフローを記述するのですが、コンソールで組み込みたいサービスを選択することで自動的にその部分のテンプレートを作成してくれました。

順番の設定など細かい部分は調整が必要ですが、シンプルなフローなら簡単でした。
Lambda 間でのデータの受け渡しは、関数内で return <渡したいデータ>と記述することで、Step Functions が次の関数に渡してくれました。

Lambda 以外にも SNS, SQS, ECS, DynamoDB などと連携できたり、API Gateway からも呼び出せるようです。

その他の参考記事

https://dev.classmethod.jp/articles/aws-step-functions-for-beginner/
https://dev.classmethod.jp/articles/first-aws-step-functions/

まとめ

今回は AWS Step Functions について調べてみました。
以下がポイントでした。

  • Lambda などの AWS サービスを順番に実行するように管理できる
  • コンポーネント間を疎結合にできる
  • コンソール上で視覚的に設定できる
  • 問題が発生した場合は、問題を簡単に診断およびデバッグできる

使いこなせれば普段の業務でも自動化できる部分があるかもしれません。
簡単な内容ですが、どなたかの参考になれば幸いです。

Discussion

ログインするとコメントできます