SAP資格の模擬試験の中でStepFunctionsに関する問題が出たのだけど、 StandardワークフローとExpressワークフローの違いに関する内容でさっぱりだった。
そもそも、StepFunctionsの認識としてはLambdaを順序を持って呼び出すことができるという程度の認識なので、これを機に再確認してみる。
Step Function Integrations
Step Functions で呼び出すことができるのはLambdaだけでなく
- AWS Batch のジョブ実行
- ECSタスクの実行、完了までの待ち
- DynamoDBへのデータ挿入
- SNS,SQSへのPublish
- EMR、Glue、SageMakerジョブの実行
- 別のStepFunctions実行
ができるようだ。最初の表示画面でも人気の高い順としていくつか出ている
Flow
順次実行だけでなくワークフローの選択肢としていくつか用意されている中からワークフローを構成することができる
このあたり、処理の分岐も少しはかけるので、Lambdaを細かい単位で用意してStepFunctionsでロジックを・・・・なんてできるのかもしれない。
ただ、StepFunctionsのフローもJSON形式でコードに落とすことができるとはいえ、管理面で考えればやはりロジックはロジックとしてソースリポジトリで管理したほうが良いように感じる。
Settings
きっかけとなったワークフローのタイプは、日本語のAWSコンソール上では”タイプ”となっていた
What is Step Functions? – AWS Step Functions (amazon.com)
上記ページでは、Standard と Expressの違いが表にまとめられている
Standard workflows | Express workflows |
---|---|
2,000 per second execution rate | 100,000 per second execution rate |
4,000 per second state transition rate | Nearly unlimited state transition rate |
Priced by state transition | Priced by number and duration of executions |
Show execution history and visual debugging | Show execution history and visual debugging based on log level |
See execution history in Step Functions | Send execution history to CloudWatch |
Support integrations with all services.Support optimized integrations with some services. | Support integrations with all services. |
Support Request Response pattern for all servicesSupport Run a Job and/or Wait for Callback patterns in specific services (see following section for details) | Support Request Response pattern for all services |
Expressのほうが秒間の同時実行数などが高く、大規模になる。
実行時間の最大長さという比較で考えると、Standardが1年間でExpressが5分となっている。
この最大実効時間が正直ピンと来ないんだけど、StepFunctionsでECSなどのタスクも動かせるのでそうしているのだろうか。
課金体系
面白いなと思ったのが、課金体系の違い。
Standardが状態の変化(Stepの移行回数)で課金されるのに対し、Expressは実行回数や実行時間、メモリ消費量などで決まるということだった。
Standardの場合は状態が変わらなければ、最長1年まで実行可能で料金一定と考えると、処理内容によってはリーズナブルな運用ができるのかもしれないな?と思った。
ただ、StepFunctionsに対する課金としてはそうなのかもしれないけれど、それだけの長期間、何かの処理を走らせるのかと考えると別途お金が掛かりそうだなぁとも思った。
設定などを見てみると、いろいろな選択肢が書かれていて、これはやはり大変だなと改めて思ってしまう毎日だ。