AWS Step Functions
# AWS Step Functions
https://d1.awsstatic.com/webinars/jp/pdf/services/20190522_AWS-Blackbelt_StepFunctions.pdf
## 概要
分散アプリケーション・マイクロサービス全体を「ステートマシン」と呼ばれるしくみでオートスケールできる。
定義したステートマシンはAWSコンソールから「ワークフロー」という形式で可視化できる。
- ステートマシンの作成
- ステートマシンの呼び出し元
- ステートマシンから呼び出し可能なAWSサービス
## ユースケース
- 相互に依存するような複数の処理を組み合わせたい場合に最適
- データプロセッシング
- 複数のデータストアを利用する分析や機械学習
- Eコマース
- 在庫追跡や処理注文
- 動画処理
- サムネイルの作成、ビデオのエンコーディング
- バッチ処理
- ウェブアプリケーション
- 複雑なユーザーの登録プロセス
- 管理者承認
- 管理者が承認した場合に限り処理を行う
## データの入出力
- InputPath / Parameters
- ResultPath
- OutputPath
## Stateの記述
- ASL でJSON形式で記述
- 複数のステートタイプが指定できる
## 実行状況の確認
- ステートマシンの実行には任意の名称を付与できる
- ステートごとに実行結果を確認可能
- ステートマシンの実行ステータスが変化した際に、CloudWatch Events に対してイベントを発行することができる
## その他のサービスとの使い分け
- SQS
- サービス間のメッセージ管理の場合は、信頼性のより高いSQS
- 処理の追跡や、サービス間のメッセージの受け渡しなど、アプリケーション開発に役立つ機能をマネージドに利用したい場合はStep Functions
- Simple Workflow Service
- 現状ではこれよりStep Functions を推奨(複雑化するため)
## 雑感
すでにあるパーツを組み合わせてワークフローを構築する際に利用するサービス。
これを有効に利用するにはUNIX哲学に基づいてパーツ化された部品が多くあると有効だと思うが、自然とそこにいたることは難しいのでパーツも含めて設計することになると思う。
シンプルなケースとしてはLambda をStep Functions でつないでいくのが考えられる。
https://yoshidashingo.hatenablog.com/entry/serverlss-usecases-2017