Vercel Daemons に liveness check、異常プロセスを自動再起動
VercelDaemonsliveness check監視運用インフラ
Vercel の Daemons が HTTP ベースの liveness check に対応した。応答しなくなったプロセスを検知して先回りで再起動するため、常駐ワーカーが無言で止まったまま放置される事故を防げる。
何が発表されたか
- Daemons が HTTP の liveness check に対応。設定したエンドポイントが応答しない状態を検知すると、そのプロセスを先回りして再起動する。
- 同日、Daemons には service bindings(同一デプロイ内の非公開サービス呼び出し)も追加されている。
開発者への影響
常駐プロセスの一番たちの悪い壊れ方は、クラッシュではなく生きているのに仕事をしていない状態。外部APIのハングで待ち続ける、メモリリークで実質停止する、イベントループが詰まる——いずれもプロセスは存在するのでプラットフォーム側の死活監視をすり抜ける。
受託案件では、この種の無言の停止が「注文の取り込みが3日止まっていた」「問い合わせメールが届いていなかった」という形で発覚し、信用の問題になる。liveness check を1つ足しておけば、少なくとも自動復帰する側に倒せる。
実装の勘所は、ヘルスチェックのエンドポイントを「HTTPが返るか」ではなく「実際に処理が進んでいるか」で書くこと。最終処理時刻が一定を超えていたら異常を返す、といった中身にしないと、プロセスが生きているだけの状態を正常と報告してしまう。あわせて、再起動が繰り返される状態に気づけるよう通知側の設定も見ておきたい。
利用条件
Daemons 利用時に設定可能。チェック間隔や再起動の挙動の詳細はチェンジログに記載がないため、ドキュメントでの確認が必要。
