ローリングアップデートって何?わかりやすく解説

スマホのアプリを更新するとき、「ただいまメンテナンス中です」って表示が出て使えなくなった経験、ない?あれ、地味にストレスだよね。でも最近のサービスって、更新してるのにずっと使えるものが多い。「なんで?」って思ったことない?実はそこにローリングアップデートという仕組みが隠れていることが多いんだ。この記事を読めば、その仕組みがどういうものか、なぜ便利なのか、どんな落とし穴があるのかまで、全部わかるよ。

「ローリングアップデート」って聞いたことあるけど、ローリングってどういう意味?転がるってこと?

いい疑問!英語の “rolling” には「順番に波のように進む」っていうニュアンスがあるんだ。ローリングアップデートとは、サーバーやアプリを一気に全部更新するんじゃなくて、少しずつ順番に入れ替えていく更新方法のことだよ。ドミノ倒しが一個ずつ倒れていくイメージに近いかな。
一気に更新すればいいじゃん。なんで少しずつやるの?

たとえば、学校の文化祭で売り場のスタッフ全員が同時に休憩に入ったら、売り場が無人になって困るよね。サーバーも同じで、全部を一気に止めて更新すると、その間サービスが使えなくなっちゃう。これをダウンタイム、つまり「サービスが止まる時間」というんだ。ローリングアップデートなら一部のサーバーが更新中でも、残りのサーバーがちゃんと動いていてくれるから、ユーザーは止まったことに気づかないで使い続けられるんだよ。
じゃあ、もし新しいバージョンにバグがあったらどうなるの?全部に広がっちゃうの?

そこがポイント!ローリングアップデートは順番に更新するから、バグを早めに発見できれば途中で止められるんだ。これをロールバック、つまり「元のバージョンに戻す」という。全部一気に更新してしまったら全滅だけど、少しずつなら被害を最小限に抑えられる。新しいメニューを一部のお店だけでテスト販売して、問題なければ全店舗に展開するチェーン店の戦略に似てるよね。
なるほど!じゃあローリングアップデートって完璧な方法なの?

残念ながら完璧ではないんだ。更新の途中は古いバージョンと新しいバージョンが混在する状態になる。つまり同じサービスなのに、あるユーザーは古いバージョン、別のユーザーは新しいバージョンを使ってる状態になるんだよ。これが原因で「自分には見えてるのに友だちには見えない機能がある」みたいなことが一時的に起きることがある。だからデータの管理方法とかには特別な注意が必要なんだ。
📝 3行でまとめると
  1. サーバーを少しずつ順番に更新する方法が ローリングアップデート で、サービスを止めずに更新できる
  2. 問題が起きたときに途中で止めて ロールバック できるから、全体への影響を最小限にできる
  3. 更新の途中は新旧バージョンが 混在 するため、データ設計などに注意が必要というデメリットもある
目次

もうちょっと詳しく

ローリングアップデートは、特にたくさんのサーバーを同時に動かす大規模なWebサービスで使われる手法だよ。たとえばAmazonやNetflixのような巨大サービスは、世界中に何千台ものサーバーを持っていて、それらを一気に更新することは現実的じゃない。そこで「今日は10台ずつ更新しよう」「問題なければ次の10台へ」というように、段階的に進めていく。この仕組みを自動で管理してくれるのがKubernetes(クーバネティス)というツールで、つまり「コンテナと呼ばれるアプリのまとまりを自動で管理するシステム」のことだよ。現代のクラウドサービスのほとんどがこの仕組みを使っているんだ。

💡 ポイント
Kubernetesでは更新する割合(何台ずつか)を設定ファイルで自由に変えられるよ!

⚠️ よくある勘違い

❌ 「ローリングアップデートなら絶対に障害は起きない」
→ 更新の途中でバグが見つかれば一部のユーザーに影響は出る。あくまで「影響を最小化できる」方法であって、完全無敵な方法ではないよ。
⭕ 「障害の影響範囲を小さく抑えられる方法」
→ 全サーバー一斉更新と比べて「被害が全体に広がる前に止められる」のが最大のメリット。問題ゼロを保証するものじゃないんだ。
なるほど〜、あーそういうことか!

[toc]

ローリングアップデートってそもそも何?基本をおさえよう

「更新」にも種類がある

スマホのアプリを更新するとき、App StoreやGoogle Playで「アップデート」ボタンを押すよね。あれは自分のスマホ1台だけの話だけど、企業が運営するWebサービスの場合はもっと複雑なんだ。Webサービスは1台のサーバーじゃなくて、何十台・何百台というサーバーで動いている。だから「更新する」といっても、どのサーバーをどの順番でどうやって更新するか、しっかり戦略を立てないといけないんだよ。

更新の戦略には大きく分けて3つある。

  • 一斉更新(ビッグバン方式):全サーバーを一気に止めて更新する。シンプルだけどダウンタイムが発生する。
  • ローリングアップデート:サーバーを少しずつ順番に更新する。ダウンタイムなしで更新できる。
  • ブルーグリーンデプロイメント:古い環境(ブルー)と新しい環境(グリーン)を並行して用意して、一気に切り替える方法。

この中でローリングアップデートは、コストを抑えながらダウンタイムをなくせる現実的な方法として、多くのサービスで採用されているんだ。

「サーバー」って何台あるの?

身近なイメージで説明すると、人気ラーメン店が複数の厨房スタッフで回してるのと同じ感覚だよ。お客さん(ユーザー)がたくさん来ても対応できるように、サーバーをたくさん並べて処理を分担させているんだ。これをスケールアウト、つまり「台数を増やして処理能力を上げること」という。大きなサービスになると数千台以上のサーバーが動いていることもある。そんな環境でローリングアップデートは特に力を発揮するんだよ。

ローリングアップデートの仕組みをステップで理解しよう

順番に「交代」していくイメージ

具体的にどう動くか、10台のサーバーがある場合を例に説明するよ。まず最初に2台のサーバーを「更新待ち」の状態にする。この2台はいったん処理を止めて、新しいバージョンのソフトウェアを受け取る。その間、残りの8台がちゃんと動いてユーザーのリクエストに応え続ける。2台の更新が終わったら、その2台を再び稼働させて、次の2台を更新待ちにする……これを繰り返すんだ。

ちょうど、運動会のリレーで一人ひとりバトンをつないでいく感じだよ。全員が一斉に走り出したらリレーにならないよね。ローリング(転がるように順番に)という名前の意味がわかった?

自動でやってくれるツールがある

このやり取りを手動でやろうとしたら大変すぎる。だから現代では自動で管理してくれるツールを使う。代表的なのがKubernetes(クーバネティス)だよ。Kubernetesは「コンテナオーケストレーションツール」、つまり「アプリをまとめた箱(コンテナ)を自動で管理してくれる指揮者のようなシステム」のことだ。Kubernetesに「10台のうち2台ずつ更新してね」と設定しておけば、あとは自動でローリングアップデートを進めてくれる。

この設定で重要なのが2つの数値だよ。

  • maxUnavailable(マックスアンアベイラブル):同時に更新に回していい台数の上限。「2台まで同時に落としていい」という設定。
  • maxSurge(マックスサージ):一時的に増やしていい台数の上限。「更新中に一時的に2台余分に立ち上げていい」という設定。

この2つをうまく調整することで、スピードと安全性のバランスをとることができるんだ。

ローリングアップデートのメリットをしっかり理解しよう

一番のメリット:サービスが止まらない

ローリングアップデートの最大のメリットは、ゼロダウンタイム、つまり「サービスを止めずに更新できること」だよ。昔のWebサービスはメンテナンスのたびに「本日2:00〜4:00はメンテナンスのため停止します」みたいなお知らせが出てたよね。でも今のサービスはそういう告知をほとんど見ない。それはローリングアップデートのおかげで、ユーザーに気づかれることなく裏側を更新できているからなんだ。

特に世界中のユーザーに24時間使われているサービスにとって、ダウンタイムは致命的だよ。たとえばAmazonは1分のダウンタイムで数百万円の損失が出るとも言われている。止まれない、だからローリングアップデートが必要なんだ。

問題をすぐに発見して止められる

2つ目のメリットは、バグや問題が出たときに早期発見・早期停止できることだよ。全サーバーを一気に更新したら、バグが発覚した瞬間にはもう全員に影響が出てしまっている。でもローリングアップデートなら、最初の数台だけ更新した段階でバグを発見できれば、残りの更新を止めればいい。

これを「カナリアリリース」と組み合わせることもある。カナリアリリースとは、つまり「まず全体の1%のユーザーだけに新バージョンを届けて様子を見る」テスト的な手法のことだよ。炭鉱で毒ガスを検知するためにカナリアという鳥を先に入れていたことが語源で、少数でリスクを確かめてから全体に展開するイメージだ。ローリングアップデートはこのカナリアリリースの考え方と相性がとてもいい。

既存のサーバーをそのまま使えてコストが低い

3つ目のメリットはコスト効率だよ。ブルーグリーンデプロイメントという別の手法では、新旧2セットのサーバー環境を同時に用意するから、一時的にサーバーの台数が2倍になってしまう。ローリングアップデートは既存のサーバーを順番に更新していくだけだから、大幅に台数を増やす必要がない。クラウドサービスのコストを節約しながら、安全な更新ができるんだ。

ローリングアップデートのデメリットと注意点

古いバージョンと新しいバージョンが混在する問題

ローリングアップデートの一番の難しさは、更新の途中で古いバージョンと新しいバージョンが同時に動く「混在状態」が生まれることだよ。具体的にどんな問題が起きるか想像してみよう。

たとえば、サービスのデータベースの構造(つまりデータの保存の仕方)を変える更新をしたとする。新しいバージョンのサーバーは新しいデータ形式で動くけど、まだ更新されていない古いバージョンのサーバーは古い形式でしか動けない。このとき、同じデータに対して古いサーバーと新しいサーバーが別々のやり方でアクセスしようとすると、データが壊れたりエラーになったりするリスクがあるんだ。

だからローリングアップデートを使うときは「新旧両方のバージョンで動くように設計する」ことが大切。これを後方互換性の確保、つまり「古いバージョンとも一緒に動けるようにしておくこと」というよ。

更新に時間がかかる

全部を一気に更新する方法と比べると、ローリングアップデートは時間がかかる。100台のサーバーを5台ずつ更新していったら、単純計算で20ステップ必要だよね。各ステップで「ちゃんと動いてるか確認する時間」も必要だから、全体としては結構な時間がかかることがある。

急いで全体を更新したいときや、古いバージョンと新しいバージョンが共存できないような大きな変更のときは、ローリングアップデートが向いてないこともある。その場合はメンテナンスウィンドウ、つまり「あらかじめ告知したうえで短時間だけサービスを止める時間帯」を設けて、一気に更新する選択もある。

途中で止まると中途半端な状態になる

更新の途中で何らかの問題が起きて止まると、サーバーによってバージョンがバラバラな「中途半端な状態」が長引く可能性がある。この状態をスプリット・ブレインとか「不整合な状態」と呼ぶことがある。つまり「システムの一部が別々の判断をしてしまう分裂した状態」のことだよ。こうなると原因の特定や修正が難しくなるから、更新を監視する体制をきちんと整えておくことが重要なんだ。

実際のサービスでどう使われているの?事例で見てみよう

YouTubeやGoogleの場合

Googleのサービスはほぼ24時間365日ダウンしない。YouTubeで動画を見てるときに「メンテナンス中」の画面が出たことってほとんどないよね。これはGoogleが何万台というサーバーを世界中に持っていて、ローリングアップデートで少しずつ更新しているからだよ。GoogleはKubernetesを社内で開発した会社でもあって、ローリングアップデートのノウハウを積み上げてきた先駆者なんだ。

Netflixの「カオスエンジニアリング」との組み合わせ

Netflixは「カオスエンジニアリング」という、つまり「わざとシステムに障害を起こして、どれだけ耐えられるかを試す手法」を実践していることで有名だよ。ローリングアップデートと組み合わせることで、「新しいバージョンが本番環境でも壊れにくいか」を厳しくテストしながら展開している。障害に強いシステムを作るためには、実際に障害を経験させることが大切という考え方なんだ。

スマホゲームでの活用

人気スマホゲームのサーバーも同じ仕組みを使ってることが多い。イベント期間中はプレイヤーが一気に増えるから、その時間帯に更新するのは難しい。ローリングアップデートを使えば、アクセスが少ない深夜に少しずつサーバーを更新できる。プレイヤーからすると「ゲームが止まってない」ように見えるけど、その裏ではサーバーが順番に入れ替わっているんだよ。

こういう技術が、私たちが日常的に「当たり前」だと思っているサービスの裏側を支えてるんだ。「更新してるのに使えるのが当たり前」じゃなくて、たくさんの工夫があって初めて実現できていることを知っておいてほしいな。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大人になってから「これ知らなかった…」と恥ずかしい思いをした経験から、このサイトを作りました。お金・仕事・社会のしくみって、学校で教えてくれないのに知らないと損することだらけ。むずかしい言葉を「あーそういうことか!」って思えるまでかみ砕いて説明するのが得意です。主に経済・法律・税金・ライフイベント周りの用語を毎日更新中。

目次