オンプレで8時間かかる夜間バッチはAWSに移すと何時間になるか——答えは「設計次第で3時間にも12時間にもなる」です。無責任に聞こえますが、速くなる条件と遅くなる条件は明確に分かれています。移行前に自分の環境がどちらか判定できるように整理します。

01速くなる条件①:ボトルネックがストレージI/Oだった

オンプレの夜間バッチの多くは、CPUではなくディスクI/Oで詰まっています。HDDのRAIDグループ(実効数百IOPS)で頭打ちだった処理は、gp3やio2に載せ替えるだけでI/O上限が一桁上がり、素直に速くなります。ただしボリューム側のIOPSを上げても、インスタンス側のEBS帯域上限(インスタンスタイプ・サイズに依存)がボトルネックにならないか確認が必要です。まず現行環境で「バッチ中のCPU使用率とI/O待ち」を実測してください。CPUが遊んでいてI/O待ちが長いなら、期待できます。

02速くなる条件②:時間帯だけ大きくする

クラウドの本領はここです。バッチが走る数時間だけインスタンスを大きくし、終わったら戻す(または止める)。オンプレでは「ピークに合わせて買って、昼間は遊ばせる」しかなかった設備投資が、従量課金では時間単位の意思決定になります。ただしインスタンスタイプの変更には対象インスタンスの停止が必要で(無停止のその場リサイズはできません)、SSM Automation+スケジュールでこの停止→タイプ変更→起動のシーケンスを自動化できます。

03速くなる条件③:並列化できる処理構造

店舗別・支社別・月別のように分割できる処理なら、Step FunctionsのMapステートやAWS Batchで並列実行し、「8時間×1本」を「1時間×8並列」にできます。ただしこれは処理構造の改修を伴うので、移行パターンでいう書き換え系の話です。効果は大きいが、タダではありません。

04遅くなる典型:ハイブリッドの「またぎ」

最も多い劣化パターンは、アプリ(またはバッチ)だけAWSに移してDBがオンプレに残った構成です。1件ごとにSELECT/UPDATEを繰り返すバッチは、往復レイテンシ(10〜20ms)×実行回数がそのまま加算されます。100万回の往復なら、それだけで数時間の悪化です。

現場のコツ:移行の順番を決めるとき、「バッチとそのデータソースは同じ側に置く」を原則にしてください。やむを得ずまたぐ期間が生じるなら、その期間のバッチ時間悪化を事前に試算し、業務側と合意しておくこと。事後に発覚すると、移行全体への信頼が崩れます(切り分け手順)。

05判定の手順

夜間バッチの実測→ボトルネック判定→移行後の時間予測は、EMWのアセスメントで定型化しています。「8時間バッチが何時間になるか」に根拠付きで答えます。

相談する
← ブログ一覧へ戻る