- 2025年6月12日、Google Cloud、Google Workspace、Google Security Operationsで外部APIリクエストの503エラーが増加し、世界中の顧客に影響が及んだ
- Service Controlの新しいクォータポリシーチェックが空フィールドを含むポリシーデータと組み合わさり、null pointerによるクラッシュループを引き起こした。この経路はロールアウト中には実行されていなかった
- ポリシー変更がregional Spannerテーブルから数秒以内に世界中へ複製され、各リージョンのService Controlデプロイメントが同じ失敗経路をたどってグローバル障害へと広がった
- SREチームは2分以内に対応を開始し、10分以内に原因を特定、約40分以内にred-buttonのロールアウトを完了したが、us-central1の復旧には最大で約2時間40分を要した
- 再発防止策は、Service Controlの変更凍結、機能フラグのデフォルト無効化、グローバル複製データの段階的伝播、エラー処理とランダム化指数バックオフの改善に重点を置いている
障害の範囲とタイムライン
- Google Cloud、Google Workspace、Google Security Operations製品で外部APIリクエストの503エラーが増加し、顧客に影響が出た
- 主な時刻はすべてUS/Pacific基準
- 障害開始: 2025年6月12日 10:49
- us-central1を除くすべてのリージョンで緩和: 12:48
- 障害終了: 13:49
- 全体継続時間: 3時間
- 影響範囲: Global
- 顧客は、影響を受けたサービスで断続的なAPIおよびユーザーインターフェースへのアクセス問題を経験した
- 既存のストリーミングおよびIaaSリソースは影響を受けなかった
Service Controlが担っていたチェック経路
- GoogleおよびGoogle Cloud APIは、Google API管理および制御プレーンを通じて提供されている
- この管理・制御プレーンは各APIリクエストについて次を確認する
- リクエストが認可されているか
- ポリシーやクォータなどのチェックを通過してエンドポイントへ進めるか
- ポリシーチェックシステムの中核バイナリはService Controlである
- Service Controlはリージョン単位のサービスであり、クォータとポリシー情報を読むリージョンデータストアを使用する
- 当該データストアのメタデータは、Google Cloudと顧客のクォータポリシー管理のため、ほぼ即時に世界中へ複製される
直接原因: 空のポリシーフィールドとnull pointer
- 2025年5月29日、追加のクォータポリシーチェックのための新機能がService Controlに追加された
- コード変更とバイナリリリースはリージョンごとのロールアウトを経たが、失敗したコード経路は特定のポリシー変更があって初めて実行されるため、ロールアウト中には検証されなかった
- 問題のコードには、そのポリシー提供経路を無効化するred-buttonはあったが、適切なエラー処理と機能フラグによる保護がなかった
- null pointerが適切に処理されず、Service Controlバイナリのクラッシュにつながった
- Googleは、機能フラグで保護されていれば、内部プロジェクトからリージョンごとに段階的に有効化する中でstagingで問題を検出できたはずだと述べている
グローバル拡散の過程
- 2025年6月12日 10:45 PDTごろ、Service Controlがポリシーに使用するregional Spannerテーブルにポリシー変更が挿入された
- このポリシーデータには意図しない空フィールドが含まれていた
- クォータ管理がグローバルに動作するため、このメタデータは数秒以内に世界中へ複製された
- 各リージョンのService Controlがリージョンデータストア内のポリシーに対してクォータチェックを実行する際に空フィールドを読み取り、null pointerに到達するコード経路が実行された
- その結果、各リージョンのデプロイメントでバイナリがクラッシュループに陥った
対応と復旧遅延
- SREチームは障害開始から2分以内にトリアージと対応を開始した
- 10分以内に根本原因を特定し、red-buttonの適用に着手した
- red-buttonは障害開始から約25分後にロールアウト準備が完了した
- 障害開始から40分以内にred-buttonのロールアウトが完了し、小規模リージョンから復旧の兆候が現れた
- us-central1のような大規模リージョンでは、Service Controlジョブの再起動が依存インフラ、特にSpannerテーブルにherd effectを生み、過負荷を引き起こした
- Service Controlにはこれを回避するための適切なランダム化指数バックオフが実装されていなかった
- us-central1ではジョブ生成をthrottlingし、トラフィックをmulti-regional databaseへルーティングして負荷を下げた後、完全解決まで最大で約2時間40分を要した
- その後、Service ControlとAPI servingはすべてのリージョンで完全に復旧した
- 関連するGoogleおよびGoogle Cloud製品は、アーキテクチャに応じてさらに時間を要しつつ順次復旧した
ステータスページと顧客コミュニケーション
- 最初のCloud Service Health障害レポートは、クラッシュ開始から約1時間後に投稿された
- 遅延の原因は、この障害によってCloud Service Healthインフラ自体がダウンしていたためである
- 一部の顧客では、Google Cloud上で動作していた監視インフラも停止し、障害シグナルやビジネス・インフラへの影響範囲を把握できなかった
- Googleは、顧客が問題に対応し、システムを管理し、利用者を支援するために必要な情報をより早く受け取れるよう、自動および手動の外部コミュニケーションを改善すると述べた
- Google Cloudと標準の監視製品が停止していても、監視およびコミュニケーションインフラが顧客へ継続してサービス提供できることを保証すると述べた
即時対応と再発防止計画
- 復旧直後、Service Controlスタックの変更と手動ポリシープッシュはともに凍結された
- Googleは次の対応を優先して安全に完了すると述べている
- Service Controlアーキテクチャをモジュール化して機能を分離し、関連チェックが失敗してもAPIリクエストを処理し続けられるfail open構造へ変更
- 世界中に複製されるデータを消費するすべてのシステムを監査
- グローバルにほぼ即時の一貫性が必要なビジネス要件があっても、データ複製は問題の検証と検知のため十分な時間を確保したうえで段階的に伝播
- 重要なバイナリ変更はすべて機能フラグで保護し、デフォルトで無効化
- エラーを正しく処理し、必要に応じてfail openできるよう、静的解析とテストプラクティスを改善
- システムがランダム化指数バックオフを使用しているか監査し、確実にする
- 顧客コミュニケーションの改善
- Google Cloudおよび標準監視製品の障害中でも、監視・コミュニケーションインフラの運用を維持
影響を受けたサービスと残留影響
- 多数のGoogle Cloud製品が影響を受け、一覧にはIdentity and Access Management、Cloud Build、Google Cloud Storage、Cloud Monitoring、Cloud Run、Google BigQuery、Vertex Gemini API、Apigee、Google Cloud Bigtable、Cloud Functions、Cloud Load Balancing、Cloud Firestore、Cloud Logging、Cloud Spanner、Google App Engine、Google Cloud Console、Google Compute Engine、Cloud SQL、Cloud Pub/Sub、Persistent Disk、Google Security Operationsなどが含まれる
- Google Workspace製品では、AppSheet、Gmail、Google Calendar、Google Drive、Google Chat、Google Voice、Google Docs、Google Meet、Google Cloud Search、Google Tasksが影響を受けた
- 一部製品では主障害の緩和後も残留影響が残った
- Google Cloud Dataflowはbacklogが段階的に解消されたが、us-central1で遅延が残った
- Vertex AI Online PredictionはModel Gardenの一部モデルで高い5xxエラーが続いたが、その後18:18 PDT時点で完全復旧した
- Personalized Service Healthでは更新遅延があり、顧客にはCloud Service Healthダッシュボードの利用が推奨された
1件のコメント
GN+ではない版の記事リンクです。