処理60個の図を、同時に動かす数を変えて回しました。1個から4個で891分が275分になります。
そこから8個に倍増しても275分のままでした。依存をたどった最長の道のりが下限になります。
処理そのものは他へ任せ、順番と分岐とやり直しだけを書きます。
AWS Step Functionsに書くのは、状態の並びです。公式はStep Functionsでは、状態機械は手順と呼ばれ、それは出来事に駆動される一連の段からなると定めています。
各段は他のサービスへの依頼になります。公式も作業の状態は、別のサービスが行う作業の単位を表すと説明しています。
4番目が、次の節で測る部分です。同時に動かす形が書けるので、どこまで効くかが問題になります。
処理の中身は書きません。各段が何をするかは、呼ばれる側にあります。
だから手順の側で見えるのは、依存関係と失敗の扱いだけです。中身の遅さは、段の所要としてしか現れません。
In Step Functions, state machines are called workflows, which are a series of event-driven steps.原文AWS ドキュメント「What is Step Functions?」 この内容の有効期限2027-02-18
並列に書けても、依存をたどった最長の道のりより短くはなりません。
AWS Step Functionsの標準の手順は、長く走らせられます。公式は標準の手順は、ちょうど1回だけ実行され、最大1年まで走らせられると述べています。
長い手順ほど、同時に動かす数が効きそうに見えます。実際にどこまで効くかを数えました。
処理60個の依存の図を作りました。依存が終わった処理から、空いている担当に割り当てます。
処理 60個。合計の作業時間 891分、依存をたどった最長の道のり 275分 依存が終わった処理から、空いている担当に割り当てる 同時に動かす数 全体の終了まで 1担当あたりの稼働率 1つ前からの短縮 1個 891分 100.0% — 2個 455分 97.8% 436分 4個 275分 81.0% 180分 8個 275分 40.5% 0分 16個 275分 20.3% 0分 32個 275分 10.1% 0分
4個までは倍にした分が返ってきます。1個から2個で436分、2個から4個で180分縮みました。
4個から8個は0分です。稼働率だけが81.0%から40.5%へ落ちます。
275分は依存をたどった最長の道のりです。この道の上の段は、どうやっても順番に動きます。
つまり並列に書く前に、その値を計算しておけます。合計891分を275分で割ると3.2で、効くのは4個あたりまでと分かります。
同じ形の測り方はApache Airflowの記事でも扱いました。手順を書く道具が違っても、下限は同じ式で決まります。
縮むのは4個まで。そこから先は動かない。
Standard workflows have exactly-once workflow execution and can run for up to one year.原文AWS ドキュメント「What is Step Functions?」 この内容の有効期限2027-02-18
段が多いほど、全部通る確率は下がります。やり直しは1回でほぼ足ります。
AWS Step Functionsには2つの種類があり、実行の保証が違います。公式は高速の手順は、少なくとも1回は実行され、最大5分まで走らせられると述べています。
「少なくとも1回」なので、同じ段が複数回動きうることになります。書く側は、それでも壊れない形にする必要があります。
一方、失敗した段をやり直す設定はどちらにもあります。その効き方を数えました。
同じ60個の図で、1回あたり2%の確率で一時的に失敗するとしました。
処理 60個。1回あたり 2%の確率で一時的に失敗する やり直す前に 5分待つ。全部成功しなければ、その日の結果は出ない やり直しの回数 最後まで通った割合 やり直した回数(平均) 遅れ(平均) 0回 30.4% 0.00回 0.0分 1回 97.7% 1.19回 23.9分 2回 99.9% 1.23回 24.4分 3回 100.0% 1.24回 24.1分
やり直しなしでは30.4%です。7割の日は、どこかで止まります。
1回入れると97.7%になります。増えた手間は平均1.19回のやり直しと23.9分の遅れでした。
2回にすると99.9%、3回で100.0%です。伸びしろは2.2ポイントしかありません。
やり直した回数も1.19回から1.24回までしか増えません。2回目を使う日がほとんどないためです。
同じ失敗が2回続くのは0.04%です。2回落ちたら一時的な失敗ではないと考えて、捕捉の側へ回すほうが早い場面もあります。
失敗は段ごとに独立として置きました。実際には上流が落ちれば下流もまとめて落ちるので、独立ではありません。2%という失敗率も置いた値です。依存の図も式で作ったもので、実際の手順ではもっと直列に寄ることがあります。ここで見せているのは、並列の効き目が最長の道のりで止まること、やり直しは1回でほぼ足りることの2つです。どちらも自分の手順の依存を書き出せば計算できます。
Express workflows have at-least-once workflow execution and can run for up to five minutes.原文AWS ドキュメント「What is Step Functions?」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る