graceful shutdown(グレースフルシャットダウン)とは、終了シグナルを受け取ったときにサーバーをクリーンに停止すること — 処理中のリクエストを完了させ、接続(DB など)を閉じ、リソースを解放すること — を意味し、突然プロセスを終了させてアクティブな処理を破棄することの対極にあります。ゼロダウンタイムのデプロイと信頼性のために不可欠です。
突然のシャットダウンが問題になる理由
text
graceful shutdown がないと、プロセスが kill されたとき(デプロイ、スケールダウン、クラッシュ):
✗ 処理中のリクエストが破棄される → ユーザーにエラーが返る
✗ DB トランザクションが未完了のまま残る
✗ 接続がクリーンに閉じられない → リーク/ロック
デプロイやオートスケーリングの間、プロセスは絶えず停止されます。これをクリーンに行うことが、デプロイをシームレスにします。
実装方法
js
http ;
server = http.(app);
server.();
() {
.();
server.( () => {
db.();
redis.();
.();
process.();
});
( {
.();
process.();
}, ).();
}
process.(, ());
process.(, ());
