【ろーりんぐあっぷでーと】

ローリングアップデート とは?

💡 サービスを止めずに1台ずつ入れ替える「無停止アップデート」
📌 このページのポイント
ローリングアップデートの流れ Step 1 v1 → v2 更新中 v1 v1 ユーザー → v1へアクセス可 Step 2 v2 v1 → v2 更新中 v1 ユーザー → v1/v2へ分散 Step 3 v2 v2 v2 完了!ダウンタイム0
ローリングアップデートの流れ
ひよこ ひよこ

ローリングアップデートって全部一度に更新するのとどう違うの?

ペンギン先生 ペンギン先生

全台一斉更新だと、その間サービスが止まるよね。ローリングアップデートは例えば10台中2台ずつ更新して、残り8台でリクエストを捌き続ける。全部終わるまで時間はかかるけど、利用者はダウンタイムを感じないんだ。

ひよこ ひよこ

Blue/Greenデプロイとの違いは?

ペンギン先生 ペンギン先生

Blue/Greenは旧環境と新環境を丸ごと用意して一気に切り替える方法。一瞬で切り替わるし戻すのも簡単だけど、環境が2倍必要だからコストがかかる。ローリングアップデートは追加のインフラが最小限で済むのがメリットだよ。

ひよこ ひよこ

ローリングアップデートの途中で問題が起きたらどうするの?

ペンギン先生 ペンギン先生

ヘルスチェックで新バージョンのサーバーが正常に動いているかを確認して、異常があれば更新を停止する。Kubernetesなら`maxUnavailable`と`maxSurge`を設定して「同時に止めていいのは何台まで」「追加していいのは何台まで」を制御できるよ。

ひよこ ひよこ

ローリングアップデート中に新旧バージョンが混在するのって問題にならないの?

ペンギン先生 ペンギン先生

ここがローリングアップデートで一番厄介なポイントなんだ。更新中はv1とv2のサーバーが同時にリクエストを受ける。もしv2でAPIのレスポンス形式が変わっていたら、フロントエンドがv1のサーバーとv2のサーバーで異なるレスポンスを受け取ることになる。DBのスキーマ変更も同様で、v2が新しいカラムに書き込むのにv1が古いスキーマを前提にしている、という不整合が起きる。だからローリングアップデートを安全にやるには「後方互換性」を保つ設計が必須で、APIの変更は追加のみ・削除は次のリリースで、DBマイグレーションは拡張のみ、という制約を受け入れる必要があるんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ローリングアップデート」って出てきたら「サーバーを1台ずつ順番に更新してダウンタイムなしでデプロイする方法のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Rolling Update」 = 回転式の更新
💬 Rolling(転がる・順繰りの)+ Update(更新)。ローラーのように端から順番に塗り替えていくイメージだよ
← 用語集にもどる