PaPoo
cover
technews
Author
technews
世界の技術ニュースをリアルタイムでキャッチし、日本語でわかりやすく発信。AI・半導体・スタートアップから規制動向まで、グローバルテックシーンの「今」をお届けします。

RailwayがGCP停止で全体障害に──「1つのクラウド障害」が全ユーザーに波及した理由

記事のキーポイント

何が起きたのか

Railwayが公開したIncident Reportによると、2026年5月19日、同社はGoogle Cloudの誤った処理により、production accountが suspended status(停止状態)にされたことで、プラットフォーム全体の障害に見舞われました。

障害時間は、​5月19日 22:20 UTC から 5月20日 06:14 UTC 頃まで。ざっくり約8時間です。

対象になったのは、Railwayの中核機能です。

つまり、ユーザーから見える画面だけでなく、裏側の心臓部まで止まったということです。これはかなり重い。サービスの「見た目が遅い」ではなく、​サービスそのものが機能しないレベルです。

Railwayは、まずGCP上のインフラ停止を受けましたが、さらに厄介だったのは、​キャッシュされていたネットワーク経路情報(route table)が期限切れになると、MetalやAWS上のワークロードまで到達不能になったことです。

ここがこの事故の面白い、というか怖いところです。
「GCPが止まったならGCPだけの問題でしょ」と思いたくなりますが、実際にはそう単純ではありませんでした。ネットワークの案内役であるcontrol planeがGCPに依存していたため、​他のクラウドや自社基盤まで巻き込まれたわけです。

ユーザーへの影響

ユーザー側では、かなり分かりやすく不便が出ています。

専門用語を少し補足すると、

つまり、障害の初期は「裏側が死んでるから返せない」、後半は「行き先そのものがわからない」という状態になっていた、という理解でよさそうです。

また、障害の余波としてGitHub側のOAuthやwebhook連携がrate limitingされたとも書かれています。
rate limiting は「短時間に呼び出しが集中したので、いったん制限する」という仕組みです。障害復旧時にリトライが一気に増えたことで、GitHub側から見ても「ちょっと多すぎる」と判断されたのでしょう。こういう障害の二次災害は、地味ですが本当に面倒です。

さらに、​Terms-of-service acceptance records がリセットされ、ユーザーに再同意を求める状態にもなったとのこと。
これは地味に嫌ですね。私はこういう「機能停止ではないけど、ユーザー体験を壊す副作用」がいちばん現場を疲れさせると思います。

時系列で見る復旧の流れ

Railwayはかなり細かく時系列を公開しています。ここ、誠実さを感じます。隠さず出すのは簡単ではないので、広報的にも価値が高いです。

主要タイムライン

image_0002.jpg

この流れを見ると、アカウントアクセス自体はすぐ戻っても、​実際にサービスとして回る状態へ戻すには別作業が山ほどあるのがわかります。
クラウド事故のやっかいさはここです。「アカウントが戻った=全部復旧」ではない。現実はそんなに甘くない。

何が原因だったのか

Railwayの説明をまとめると、原因は大きく2層あります。

1. 直接原因: Google Cloud側の誤った停止処理

5月19日 22:20 UTC、Google Cloudが自動処理の一環としてRailwayのproduction accountを誤って停止状態にしたとされています。
しかもこれはGoogle Cloud内の多くのアカウントに対して行われたplatform-wide actionで、個別事前連絡はなかったとのことです。

ここはRailwayだけの責任ではありません。
むしろ直接原因としては、​Google Cloud側の誤処理です。これははっきり言っていいと思います。

2. 構造的な原因: 1つの依存が広すぎた

ただし、Railwayははっきりこうも述べています。

We take full responsibility for the architectural decisions that allowed a single upstream provider action to cascade into a platform-wide outage.

つまり、
​「1つの上流プロバイダの操作で、プラットフォーム全体が落ちる構成にしてしまった」責任は自分たちにある
ということです。

これは重要です。
事故の引き金は外部でも、​燃え広がる構造を作っていたのは自分たち、という認識です。こういう自己批判があるレポートは、読む価値が高いです。単なる他責では学びがありませんから。

Railwayのネットワークは、Metal・GCP・AWSをまたぐmesh ring​(複数経路を持つネットワーク構成)だと説明されています。
一見すると冗長性がありそうですが、実際にはワークロード発見(どの実体がどこで動いているか)を担うcontrol plane APIがGCP上に依存していた。ここが弱点でした。

そのため、ルートキャッシュが生きている間は何とか動いても、期限が切れた瞬間にrouting tablesを再生成できず、全体が迷子になったわけです。

この設計、理屈としては「冗長に見える」のがまた怖いところです。
表面上はマルチクラウドでも、​本当に重要な部分が1か所に寄っていると、結局は単一障害点になります。クラウド設計あるあるですが、かなり刺さる話です。

Railwayはどう復旧したのか

復旧は段階的でした。

  1. GCPのアクセスを戻す
  2. persistent disks を復旧する
  3. compute instances を起こす
  4. networking を戻す
  5. edge traffic を再開する
  6. orchestration/build を復旧する
  7. deploys を少しずつ再開する
  8. GitHub連携のrate limiting を乗り越える

ここで印象的なのは、​いきなり全デプロイを流さず、キューをゆっくり捌いたことです。
復旧直後に一気に全部動かすと、今度は復旧したシステム自身が過負荷で再び落ちることがあります。だから“落ち着いて戻す”のは正解です。派手さはないけど、実務ではこういう判断が大事です。

再発防止策

Railwayは今後の対策もかなり具体的に示しています。

1. Google Cloud依存を減らす

GCPサービスをdata planeのhot path(最重要経路)から外し、secondary/failover用途に限定していく方針です。

image_0003.jpeg

これは要するに、
​「GCPが死んでも、即サービス全体は死なない構成にする」​
ということです。

2. true mesh にする

今のmeshは完全ではなく、まだGCP上のcontrol plane APIに依存していました。
これをなくし、​どのインターコネクトが死んでも別経路が残る本当のmeshにする、としています。

この “true mesh” という表現、なかなか強いです。
ネットワークって、図面上は美しくても、実際には「ここだけ別管理」が残りがちなんですよね。そこを潰すのは地味だけど超重要です。

3. database shard を AWS と Metal に広げる

高可用性のために、​database shardを複数クラウドに広げる予定です。
shard はデータベースを分割した単位のこと。分散して持つことで、1か所が壊れても全滅しにくくなります。

4. data plane と control plane を新アーキテクチャへ

Railwayは、

の両方を新しい構成へ移行中だとしています。

ここまで読むと、今回の事故を単なる「復旧報告」で終わらせず、​設計の作り直しに踏み込んでいるのがわかります。
こういうのは大変ですが、やらないとまた同じことが起きる。正直、ここは逃げずにやってほしいです。

この事故から見えること

個人的には、このレポートはかなり教訓的だと思います。

1. クラウド事故は「外部のせい」で終わらない

Google Cloud側の誤停止が引き金だったとしても、ユーザーにはRailwayの障害として見える。
結局、​自分のサービスの可用性は自分の責任という話になります。

2. マルチクラウドでも安心とは限らない

AWS、GCP、Metalを使っていても、​重要な制御点が1つならそこが弱点です。
分散しているようで、実は集中している。これ、設計の罠としてかなり典型的です。

3. 復旧時の副作用まで含めて設計が必要

GitHubのrate limitingや、再同意が必要になった件を見ると、障害は「止まる」だけでは終わりません。
復旧後の雪崩まで含めて考えないといけない。ここは現場感が強く出ています。

4. ちゃんとレポートを書くのは強い

責任の所在をあいまいにせず、時系列と対策まで公開しているのは評価したいです。
正直、こういうインシデントレポートは読んでいて胃が痛くなることもありますが、学びは大きい。隠すより、出して改善するほうがずっと健全です。

まとめ

今回のRailwayの障害は、単なる「GCPが落ちた」話ではありませんでした。
GCPの誤ったアカウント停止をきっかけに、​control plane依存route cache切れが連鎖し、最終的に全リージョン・全ワークロードが到達不能になる、かなり深刻な事故でした。

ただ、Railwayがこの事故を

まで公開しているのは、とても価値があります。

クラウド時代の教訓としては、やっぱりこれに尽きると思います。
​「便利な依存は、雑に置くと一番高くつく」​
そして、ユーザーは内部事情を見てくれない。だからこそ、最終的な可用性はサービス提供者が背負うしかない。Railwayのコメントは、その現実をかなりストレートに言い当てているように感じました。


参考: Incident Report: May 19, 2026 - GCP Account Suspension

同じ著者の記事