Drainは、サーバやワーカーを停止・切り離しするときに、新規の処理は受け付けず、すでに進行中の処理だけを終わらせる運用手順。
HTTPサーバであれば、新規リクエストの流入を止めてから既存の接続や in-flight request を待つ動きが drain にあたる。Kubernetes では readiness を落として endpoint から外し、そのあとに graceful shutdown へ進む流れで出てくることが多い。
実務での使いどころ
- サーバ再起動や rolling update の直前
- queue worker の停止前
- load balancer 配下のノード切り離し時
補足
Drainは即時停止ではなく、処理中の仕事を荒らさずに退かせるための段階。強制終了とは目的が異なる。
実務メモ
Drain は、ops、http、kubernetes、deployment の文脈で出てくることが多い。辞書的な定義だけでなく、この語で何を短く言い表したいのかまで揃えておくと会話がぶれにくい。
近い言葉と混ぜると説明が曖昧になりやすいので、対象、役割、使う場面を一段だけ具体化して捉えるのが楽。用語集では、その入口として押さえておくと十分。
hsb.horse