【ぐれーすふるしゃっとだうん】

グレースフルシャットダウン とは?

最終更新:
💡 閉店前に、今いるお客さんの対応と後片付け

アプリケーションの停止時に、新しい仕事の受付を止め、処理中の仕事や後片付けを行ってから終了する方法。強制終了による影響を減らすため、終了までの猶予時間も設計する。

📌 このページのポイント
グレースフルシャットダウン① 閉店の合図終了を準備する② 受付を止める新しい仕事は停止③ 今の仕事を終える④ 後片付けして終了待つ時間にも、期限を決める途中終了や再実行への対策も必要
Webアプリの例。アプリケーションの終了処理と、通信の切り替えを合わせて設計します。
ひよこ ひよこ
グレースフルシャットダウンは、どう止めるの?
ペンギン先生 ペンギン先生
Webアプリなら、新しいリクエストの受付を止め、処理中のリクエストを終えてから終了するよ。お店の閉店時に、今いるお客さんの対応を終えるイメージなんだ。サーバーの電源を落とすことだけを指す言葉ではないよ。
ひよこ ひよこ
強制終了とは、何が違うの?
ペンギン先生 ペンギン先生
強制終了は、途中の仕事や後片付けの機会を与えずにプロセスを止める。グレースフルシャットダウンでは、処理の完了やDB接続の解放などを行い、利用者への影響を減らすんだ。ただし、データ破損やエラーを必ず防げる保証ではないよ。
ひよこ ひよこ
終了の合図を受ければ、自動で片付く?
ペンギン先生 ペンギン先生
アプリケーション側の対応が必要だよ。例えばSIGTERMを受けたら、受付を止め、残っている仕事を確認し、資源を片付けて終了する。ロードバランサーが新しい仕事を送らないようにするコネクションドレイニングも、合わせて設計するんだ。
ひよこ ひよこ
終わらない仕事があったら、ずっと待つの?
ペンギン先生 ペンギン先生
終了を待つ猶予時間を決めるよ。期限を超えれば強制終了されることもあるので、処理時間や保存すべき状態を考える。途中で止まった仕事の再実行や、二重処理を防ぐ仕組みも別に必要になるんだ。
ひよこ ひよこ
Kubernetesなら、全部任せられる?
ペンギン先生 ペンギン先生
Podの終了では、通常は終了シグナルを送り、猶予時間を過ぎても残るプロセスを強制終了するよ。でも、その時間内に受付停止や処理の完了を行うのはアプリケーション側。更新時には、通信の切り替えと終了処理の両方を確認しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「グレースフルシャットダウン」って出てきたら「今の仕事と後片付けをしてから終了する方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Graceful Shutdown」 = 穏やかな終了・停止
💬 Gracefulは「優雅な、穏やかな」、shutdownは「停止」。ITでは、いきなり打ち切らず終了の準備をするイメージだよ。

参考資料

← 用語集にもどる