Code Orange: Fail Small が完了。より強固な Cloudflare ネットワークの実現
過去2四半期以上にわたり、Cloudflare は「Code Orange: Fail Small」という内部コード名のもと、すべての顧客に対してインフラストラクチャの耐障害性、セキュリティ、信頼性を向上させるための集中的なエンジニアリング活動に取り組んできました。今月初旬、Cloudflare チームはこの作業を完了しました。
耐障害性の向上は「完了」することはなく、開発ライフサイクル全体を通じて常に最優先事項となりますが、2025年11月18日および2025年12月5日のグローバル障害を回避するための作業は完了しました。
主要な改善領域
この作業は以下の主要領域に焦点を当てました:
- より安全な設定変更
- 障害の影響を軽減
- 「break glass」手順とインシデント管理の改訂
- 時間経過に伴うドリフトと回帰を防ぐための対策の導入
- 障害時の顧客への通信方法の強化
より安全な設定変更
あなたにとっての意味: ほとんどの場合、Cloudflare の内部設定変更はネットワークに即座に到達することはなく、代わりにリアルタイムのヘルスモニタリングを伴う段階的なロールアウトが行われます。これにより、可観測性ツールが問題をキャッチし、トラフィックに影響を与える前に問題を解決できます。
顧客トラフィックを処理し、設定変更を受け取るネットワーク上で実行されるプロダクトについては、これらの変更を即座にネットワーク全体にデプロイすることはなくなりました。代わりに、関連チームはソフトウェアリリース時に使用するのと同じ「health-mediated deployment」方法論をすべての設定デプロイメントに採用しました。
Snapstone の導入
この中心となるのが、設定変更に health-mediated deployment をもたらすために構築した新しい内部コンポーネント「Snapstone」です。Snapstone は設定変更をパッケージにバンドルし、ヘルスメディエーション原則を伴う段階的なリリースを可能にするシステムです。
Snapstone の特に強力な点は、その柔軟性です。過去の特定の障害に対する修正ではなく、Snapstone は、2025年11月18日の障害を引き起こしたデータファイルであろうと、2025年12月5日の障害に関わったグローバル設定システムの制御フラグであろうと、ヘルスメディエーションが必要な設定ユニットを動的に定義することを可能にします。
障害の影響を軽減
あなたにとっの意味: ネットワーク上で問題が観察された場合、システムはより優雅に障害が発生するようになりました。これにより潜在的な影響範囲が大幅に削減され、最悪のシナリオでもトラフィックが配信されることが保証されます。
顧客トラフィック配信に重要なプロダクトのチームは、手動およびプログラム的な方法で潜在的な障害モードを慎重に検討しました。チームは非本質的なランタイム依存関係を削除し、より良い障害モードを実装しました。
障害モードの戦略
可能な限り最後の既知の良好な設定を使用する(「fail stale」)ようになりました。それが不可能な場合は、各障害ケースを検討し、機能が低下したトラフィック配信が望ましいか、トラフィック配信の失敗が望ましいかに応じて「fail open」または「fail close」を実装しました。
例として、2025年11月の障害を見てみましょう。この障害は Bot Management 検出機械学習分類器のロールアウト失敗によってトリガーされました。新しい手順では、システムが読み取れないデータが生成された場合、システムは更新された設定の使用を拒否し、代わりに古い設定を使用します。何らかの理由で古い設定が利用できない場合は、fail open して顧客本番トラフィックが配信され続けることを保証します。これはダウンタイムよりもはるかに良い結果です。
トラフィックコホートによるセグメンテーション
システムをさらにセグメント化し、異なるトラフィックコホートに対して独立したサービスコピーを実行するようになりました。例えば、Workers ランタイムシステムは異なるトラフィックコホートを処理する複数の独立したサービスにセグメント化されており、1つは無料顧客のトラフィックのみを処理します。
変更はカスタマーコホートに基づいてこれらのセグメントにデプロイされ、無料顧客から始まります。最も重要でないセグメントへの更新をより迅速かつ頻繁に送信し、最も重要なセグメントへはより遅いペースで送信しています。
改訂された「break glass」とインシデント管理手順
あなたにとっての意味: インシデントが発生した場合、より明確に通信し、より迅速に解決するためのツールとチームが揃っています。これにより、ダウンタイムが最小化されます。
Cloudflare は Cloudflare 上で実行されます。インフラストラクチャを保護するために独自の Zero Trust プロダクトを使用していますが、これは依存関係を作成します。ネットワーク全体の障害がこれらのツールに影響を与える場合、それらを修正するために必要なパスウェイを失います。
Code Orange イニシアティブ前は、「break glass」パスウェイは少数の人に限定され、ツールアクセスは限定的でした。障害時にこれらのツールとパスウェイをより広く利用可能にする必要がありました。
包括的な監査と準備
システムの可視性、デバッグ、本番環境の変更に不可欠なツールの包括的な監査を実施しました。最終的に、18の主要サービスのバックアップ認可パスウェイを開発し、新しい緊急スクリプトとプロキシでサポートしました。
Code Orange プログラム全体を通じて、理論から実践へ移行しました。小規模チームの演習の後、2026年4月7日に200人以上のチームメンバーが参加するエンジニアリング全体のドリルを実施しました。自動化がこれらのパスウェイを機能させ続ける一方で、このようなドリルはエンジニアが圧力下でそれらを使用するための筋肉記憶を確保します。
コミュニケーションの改善
この取り組みは情報フローにも焦点を当てました。内部可視性が中断されると、インシデント対応が遅くなり、外部世界との通信能力が低下します。歴史的に、その時点での技術的観察は常に顧客への明確な更新に変換されていませんでした。このギャップを埋めるために、主要なイベント中にインシデント対応者と連携して作業する専任のコミュニケーションチームを確立しました。
改善の成文化
あなたにとっての意味: インシデントからの学習を記憶し、解決策を成文化しました。ネットワークはより耐障害性が高くなるだけです。
Code Orange の一部として行われた作業の時間経過に伴うドリフトと回帰の再導入を避けるために、チームは明確で簡潔なルールにすべてのガイドラインを固めた内部 Codex を構築しました。Codex はすべてのエンジニアリングおよびプロダクトチームに対して必須となり、Cloudflare の内部手順の中心的な部分になりました。そのルールは AI コードレビューを通じて実装され、ガイドラインから逸脱する可能性のあるインスタンスを自動的にハイライトし、追加の手動レビューを実行する必要があります。これはコードベース全体に例外なく適用されます。
Codex の構造
11月と12月の障害は共通の障害モード:入力が常に有効であると仮定するコード、その仮定が破れた場合の優雅な低下がないコードを共有していました。Rust サービスは .unwrap() を呼び出す代わりにエラーを処理しました。Lua コードは存在しないオブジェクトをインデックスしました。両方のパターンは、教訓がキャプチャされ実装されれば防止可能です。
Codex は私たちの答えの一部です。Request For Comments(RFC)プロセスを通じてドメイン専門家によって書かれた、実行可能なルールに蒸留されたエンジニアリング標準の生きたリポジトリです。以前は上級エンジニアの頭の中に存在していた、またはインシデント後にのみ発見されたベストプラクティスは、すべてがアクセス可能な共有知識になりました。
各ルールは単純な形式に従います:「X が必要な場合は Y を使用する」と、なぜかを説明する RFC へのリンク。例えば、1つの RFC は現在「テストと build.rs の外で .unwrap() を使用しないでください」と述べています。別のものはより広い原則をキャプチャします:「サービスは処理前に上流の依存関係が予期された状態にあることを検証する必要があります。」
これらのルールが以前に実装されていた場合、11月と12月の障害はグローバルインシデントではなく、マージリクエストの拒否になっていたでしょう。
実装と継続的改善
ルールなしの実装は提案です。Codex は、設計レビューからデプロイメント、インシデント分析まで、ソフトウェア開発ライフサイクルのあらゆる段階で AI 駆動エージェントと統合されます。これにより、「グローバル障害」から「マージリクエストの拒否」への実装が左にシフトします。違反の影響範囲は、影響を受ける数百万のリクエストから、本番環境に到達する前に実行可能なフィードバックを受け取る単一の開発者に縮小します。
Codex は生きたドキュメントであり、時間経過に伴い継続的に改善されます。ドメイン専門家は RFC を書いてベストプラクティスを成文化します。インシデントはギャップを表面化させ、新しい RFC になります。承認されたすべての RFC は Codex ルールを生成します。これらのルールは次のマージリクエストをレビューするエージェントに供給されます。それは飛車輪です:専門知識は標準になり、標準は実装になり、実装はすべての人のフロアを上げます。
コードだけではない:コミュニケーションが重要
あなたにとっての意味: 透明性は私たちにとって重要です。何か問題が発生した場合、あなたが重要なことに焦点を当てられるように、すべてのステップで更新を続けることにコミットしています。
グローバル障害により、エンジニアリングおよびプロダクト開発を超えた、コアプロセスと文化的アプローチを見直すようになりました。より広い Code Orange イニシアティブの一部として、すべてのサービスに追加のサービスレベル目標(SLO)を導入し、グローバルチェンジログを実装し、すべてのチームをメンテナンス調整システムにオンボードし、会社全体の透明性を向上させました。