📝

AWS Step Functionsってなんだろ?

2021/04/21に公開約2,900字

今回は業務フローの自動化などで出てくるAWS Step Functionsというサービスについて調べてみました。

概要

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

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

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

コンソール上でできるので確かに視覚的に設定できます。
image.png
AWS Step Functionsの開始方法 - AWS Step Functionsより

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

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

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

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

メリット

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

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

「疎結合」にできるということですね。
各処理が独立して動くことで、障害発生時の影響が最小限に抑えられます。
ちなみに、疎結合について以下のAWSの公式の例がすごく分かりやすかったので、参考までにご覧ください。
技術用語を比喩から学ぼう ! - 第 1 回「疎結合」 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

ユースケース

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

使ってみた感想

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

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

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

その他の参考記事

AWS Step Functions をゼロからざっくり理解する | DevelopersIO
Step Functionsを使って初めてループや分岐をやってみた! | DevelopersIO

まとめ

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

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

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

Discussion

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