コードオレンジ:小規模障害対策完了によりクラウドフレアネットワークが強化
Cloudflare は、2025 年 11 月と 12 月の大規模障害を回避するための「Code Orange: Fail Small」プロジェクトを完了し、設定変更の安全性とネットワーク復元力を大幅に強化した。
キーポイント
Snapstone システムの導入
設定変更をパッケージ化し、リアルタイムのヘルスモニタリングに基づく段階的ロールアウトと自動ロールバックを実現する新システム「Snapstone」を導入した。
ヘルス仲介型デプロイメントの実施
ネットワーク処理に関わる設定変更を即座に展開せず、ソフトウェアリリースと同様の手法で問題を検知してロールバックできる仕組みを採用した。
インシデント管理とコミュニケーションの強化
「ブレークグラス」手順の見直しや、障害発生時の顧客への通信体制を改善し、再発防止のためのドリフト防止策も講じた。
Snapstone の柔軟性と安全なデプロイ
Snapstone は特定の過去の失敗への対応ではなく、データファイルや制御フラグなど任意の構成単位を動的に定義し、安全な展開を保証する。
障害時のGraceful Failure 戦略
最新かつ信頼できる設定(fail stale)の使用、または機能低下を許容してトラフィックを継続させる(fail open/close)などの戦略により、影響範囲を最小化する。
システムセグメンテーションによる障害拡大防止
異なるトラフィックコホートに対して独立したサービスコピーを実行するセグメンテーションを導入し、障害の波及半径(blast radius)をさらに縮小する。
セグメント化されたデプロイ戦略
Workers ランタイムを顧客層ごとに分割し、非致命的なセグメントから順次変更を適用することで、障害の影響範囲を最小限に抑えつつ自動検出とロールバックを実現しています。
影響分析・編集コメントを表示
影響分析
このニュースは、大規模クラウドインフラの信頼性向上における「設定管理」の重要性を再認識させるものであり、単なるバグ修正ではなく、プロセスとツールの根本的転換を示しています。業界全体にとって、障害発生後の復旧だけでなく、予防的なアーキテクチャ設計(Fail Small)の具体例として極めて重要なケーススタディとなります。
編集コメント
設定変更のリスク管理に特化したこの取り組みは、大規模ネットワーク運営における「失敗を小さくする」哲学の成功事例として高く評価されます。
過去2四半期と少しにわたり、私たちは「Code Orange: Fail Small」という内部コードネームのもと、すべての顧客のために Cloudflare のインフラをよりレジリエントで安全かつ信頼性の高いものにするための集中的なエンジニアリング取り組みを行いました。
今月初め、Cloudflare チームはこの作業を終了しました。
レジリエンスの向上は決して「完了した仕事」ではなく、開発ライフサイクル全体を通じて常に最優先事項であり続けるものの、2025 年11月18日および2025年12月5日に発生したグローバルな障害を回避できたはずの作業については、すでに完了しています。
この取り組みは、より安全な設定変更の実施、障害の影響範囲の縮小、そして「緊急時対応(break glass)」手順とインシデント管理の見直しといういくつかの主要分野に焦点を当てていました。また、時間経過に伴うドリフトや回帰を防ぐための措置を導入し、障害発生時に顧客へ伝えるコミュニケーション方法も強化しました。
ここでは、私たちが提供した内容と、それがあなたにとって何を意味するのかについて詳しく説明します。
より安全な設定変更の実施
あなたにとっての意味: ほとんどの場合、Cloudflare 内部の設定変更はもはやネットワークに即座に反映されることはなく、リアルタイムのヘルスモニタリングを伴って段階的に展開されます。これにより、観測ツールが問題を検知し、お客様のトラフィックに影響を与える前に問題の修正やロールバックを行うことが可能になります。
潜在的に危険なデプロイメントが生産環境に到達する前に検出するため、私たちは高リスクの設定パイプラインを特定し、設定変更をより適切に管理するための新しいツールを開発しました。
ネットワーク上で顧客トラフィックを処理し、設定変更を受け取る製品については、今後はこれらの変更をネットワーク全体に即座に展開することはなくなりました。代わりに、関連するチームはソフトウェアリリース時と同じ「ヘルスベースのデプロイメント」手法を、すべての設定展開に対して採用しています。これには、インシデントによって直接影響を受けた製品チームも含まれますが、それに限定されません。
このアプローチの中核となるのが、私たちが「Snapstone」と呼ぶ新しい内部コンポーネントです。これは設定変更に対するヘルスベースのデプロイメントを実現するために構築されたシステムで、設定変更をパッケージにバンドルし、ヘルスモニタリングの原則に基づいて段階的な展開を可能にします。Snapstone 以前は、この手法を設定へ適用することは可能でしたが困難であり、各チームごとに多大な労力を要し、ネットワーク全体で一貫して適用されるものではありませんでした。Snapstone は、デフォルトで漸進的ロールアウト、リアルタイムのヘルスモニタリング、自動ロールバックを設定展開に統合する統一された手段を提供することで、このギャップを埋めます。
Snapstone が特に強力である理由は、その柔軟性にあります。Snapstone は特定の過去の失敗に対する修正策というだけでなく、チームが必要に応じて任意の構成ユニットに健康状態の仲介機能を動的に定義できるようにします。例えば、11 月 18 日の障害の原因となったデータファイルや、12 月 5 日の障害に関与したグローバル構成システム内の制御フラグなどが該当します。チームは必要な時にこれらの構成ユニットを作成し、Snapstone がそれらが使用されるあらゆる場所で安全にデプロイされることを保証します。
これにより、以前には存在しなかった機能が得られました。リスクレビューや運用経験によって危険な構成パターンが特定された場合、対応策は明確です——Snapstone に取り込むだけで、その構成パターンは即座に安全なデプロイの特性を引き継ぎます。
障害の影響を軽減する
あなたにとっての意味:ネットワーク上で問題が検出された場合、システムは今後より優雅にフォールバックします。これにより潜在的な影響範囲が大幅に縮小され、最悪のシナリオにおいてもトラフィックが確実に配信されることを保証します。
プロダクトチームは、顧客トラフィックの提供に不可欠な製品について、手動およびプログラム的な両方の観点から潜在的な障害モードを慎重に見直しました。チームは非必須の実行時依存関係を削除し、より優れた障害モードを実装しました。今後は可能な限り最終的に正常だった設定を使用する("fail stale")方針を採用し、それが不可能な場合は各障害ケースを見直し、機能低下した状態でもトラフィックを提供することが望ましいか、それとも提供を停止するかによって、「オープンに失敗」または「クローズに失敗」を実装しました。
この仕組みの例を見てみましょう。2025 年 11 月のサービス停止は、Bot Management の検出用機械学習分類器のロールアウト失敗が引き金となりました。新しい手順の下では、システムが読み取れないデータが再度生成された場合、システムは更新された設定の使用を拒否し、代わりに古い設定を使用します。何らかの理由で古い設定が利用できない場合は、顧客の生産トラフィックの提供を継続させるために「オープンに失敗」して、ダウンタイムよりもはるかに良い結果となるようにします。
その結果、11 月に障害を引き起こした Bot Management の変更が現在ロールアウトされた場合、システムはその変更がトラフィックのわずかな割合に影響を与える前に、展開の初期段階で障害を検知することになります。
また、システムのさらなるセグメンテーションを開始し、異なるトラフィックのグループに対してサービスの独立したコピーを実行するようにしました。Cloudflare は現在も、トラフィック管理技術を用いて顧客のグループごとに影響範囲を緩和するためにこれらの顧客グループを活用していますが、この追加的なプロセスセグメンテーション作業は、今後の私たちに強力な信頼性機能を提供します。
例えば、Workers ランタイムシステムは、異なるトラフィックのグループを処理する複数の独立したサービスにセグメント化されており、そのうちの一つは無料顧客からのトラフィックのみを処理しています。変更は顧客のグループに基づいてこれらのセグメントにデプロイされ、まず無料顧客から開始されます。また、最も重要度の低いセグメントにはより迅速かつ頻繁に更新を送信し、最も重要なセグメントにはより緩やかなペースで送信しています。
その結果、Workers ランタイムシステムに変更がデプロイされてトラフィックが停止した場合でも、現在は自動的に検出されロールバックされる前に、影響を受けるのは無料顧客のほんの一部のみとなります。
例として引き続き Workers ランタイムシステムを取り上げると、今月初めの 7 日間の期間中、デプロイプロセスは 50 回以上トリガーされました。各変更がエッジに伝播する際、しばしば前後のリリースと並行して「波」のように発生する様子を以下で確認できます:

今後、このデプロイメントのパターンをさらに多くのシステムに拡張していく予定です。
改訂された「緊急時アクセス(ブレイクグラス)」およびインシデント管理手順
あなたにとっての意味:もしインシデントが発生した場合、私たちはより明確なコミュニケーションと迅速な解決のために必要なツールとチームを備えており、ダウンタイムを最小限に抑えることができます。
Cloudflare は Cloudflare 上で稼働しています。当社のインフラストラクチャを保護するために、独自の Zero Trust プロダクトを使用していますが、これにより依存関係が生じます。つまり、ネットワーク全体の障害がこれらのツールに影響を与えた場合、それらを修復するために必要な経路自体を失ってしまうのです。
今回の Code Orange イニシアチブ以前、「ブレイクグラス」の経路は限られた数人の人員にのみ制限されており、利用可能なツールのアクセスも限定的でした。障害発生時に、これらのツールと経路をより広く利用可能にする必要がありました。
この課題を解決するため、システムの可視化、デバッグ、本番環境の変更に必要なツールについて包括的な監査を実施しました。その結果、18 の主要サービスに対するバックアップ認証経路を開発し、新しい緊急用スクリプトとプロキシによってサポートされる体制を整えました。
Code Orange プログラムを通じて、私たちは理論から実践へと移行しました。小規模チームによる演習の後、2026 年 4 月 7 日には 200 名以上のメンバーが参加するエンジニアリング全体での訓練を実施しました。自動化によってこれらの経路は機能し続けていますが、こうした訓練により、エンジニアたちは圧力下でもそれらを活用するための筋肉記憶を身につけることができます。
この取り組みはまた、情報の流れにも焦点を当てました。内部の可視性が阻害されるとインシデント対応が遅れ、外部世界とのコミュニケーション能力も低下します。歴史的に見れば、現場の緊迫した状況からの技術的観察が、必ずしも顧客向けの明確な更新情報として伝わるわけではありませんでした。
このギャップを埋めるため、主要なイベント時にはインシデント対応者と連携して活動する専任のコミュニケーションチームを設置しました。エンジニアたちが「緊急時使用手順(break glass procedures)」を練習したように、このチームも Code Orange プログラムを通じて、顧客向け更新情報の頻度と明確さを効率化する訓練を行いました。情報を把握するためのツールと、発信するための構造の両方を確保することで、インシデントをより迅速に解決し、顧客をより適切に情報提供することができます。
私たちの改善事項を文書化しました
あなたにとっての意味:私たちはインシデントから得た教訓を記憶し、解決策を文書化しました。当社のネットワークはさらに強靭なものとなります。
ドリフトの発生や、Code Orange の取り組みの一部として行われた作業への回帰を時間とともに再導入しないよう、チームはすべてのガイドラインを明確かつ簡潔なルールに固めるための内部 Codex を構築しました。
Codex は現在、すべてのエンジニアリングおよびプロダクトチームに対して必須となっており、Cloudflare 社内手続きの中核部分を担っています。そのルールは AI によるコードレビューを通じて強制され、ガイドラインから逸脱する可能性のあるあらゆる事例が自動的に強調表示され、追加の手動レビューの実行が必要となります。これは例外なく全コードベースに適用されます。目的はシンプルです:自己を強化する組織的記憶を構築すること。
11 月と 12 月の障害には共通の失敗モードがありました。それは「入力は常に有効である」という前提に基づいたコードであり、その前提が崩れた際に優雅な劣化(graceful degradation)を行わないというものです。Rust のサービスでは .unwrap() を使用してエラーを処理せず、Lua コードでは存在しないオブジェクトにインデックスアクセスを行いました。これらのパターンは、教訓が記録され強制されることで防止可能です。
Codex はその解決策の一部です。これはドメインの専門家によって RFC(Request For Comments)プロセスを通じて書かれたエンジニアリング標準の生きたリポジトリであり、実行可能なルールへと凝縮されたものです。以前はシニアエンジニアの頭の中に存在していたか、インシデント発生後にのみ発見されていたベストプラクティスが、今や誰でもアクセスできる共有知識となりました。各ルールは「X が必要なら Y を使用せよ」というシンプルな形式で記述され、その理由を説明する RFC へのリンクが添付されています。
例えば、ある RFC では「テストおよび build.rs の外では .unwrap() を使用しない」と明記されています。また別の RFC ではより広範な原則を捉えており、「サービスは処理を行う前に、上位依存関係が期待された状態にあることを検証しなければならない」と規定しています。
これらのルールが早期に適用されていれば、11 月と 12 月の障害はグローバルなインシデントとなるのではなく、マージリクエストの却下という形で止まっていたはずです。
強制力のないルールは単なる提案に過ぎません。Codex は、設計レビューからデプロイ、インシデント分析に至るまで、ソフトウェア開発ライフサイクルのあらゆる段階で AI 駆動のエージェントと統合されています。これにより、対応のタイミングを「グローバル障害」から「マージリクエストの却下」へと左側にシフトさせます。違反による影響範囲は、数百万件の影響を受けるリクエストから、コードが本番環境に到達する前に開発者に具体的なフィードバックを提供できる単一の開発者へと縮小します。
Codex は生きた文書であり、時間とともに継続的に改善されていきます。ドメインの専門家が RFC を作成してベストプラクティスを法典化し、インシデントから浮き彫りになったギャップが新たな RFC となります。承認されたすべての RFC が Codex ルールを生成し、そのルールが次のマージリクエストを検証するエージェントにフィードバックされます。これはフラインホイール効果です:専門知が標準となり、標準が強制力となり、強制力が全員のための基盤を引き上げます。
単なるコードの話ではありません:コミュニケーションが鍵となります
あなたにとっての意味:透明性は私たちにとって重要です。何か問題が発生した場合は、あなたが重要なことに集中できるよう、一歩一歩情報を提供し続けることを約束します。
グローバルな障害により、エンジニアリングや製品開発を超えて、コアプロセスと文化アプローチを見直すことになりました。より広範な Code Orange イニシアチブの一環として、すべてのサービスに追加のサービスレベル目標(SLOs)を導入し、グローバルな変更ログを強制適用し、全チームをメンテナンス調整システムに登録し、インシデント防止チケットのバックログに関する社内の透明性を向上させました。
また、障害発生時の顧客へのコミュニケーション方法を強化しました。私たちの目標は、問題を確認した瞬間に、お客様が問題を気づく前にアラートを送ることです。ラグやエラーに気づいた頃には、すでに通知に更新情報が待っている状態を目指しています。
アクティブなインシデント中も、予測可能な間隔(例えば 30 分または 60 分ごと)で更新情報を提供します。たとえ更新内容が「まだ修正をテスト中です。新しい変更はありません」というものでも構いません。これにより、お客様はステータスページを絶えず刷新する必要なく、一日の予定を立てることができます。
ステータスが通常に戻ったからといって、私たちの仕事は終わりではありません。何が起きたのか、なぜ起きたのか、そして二度と起きないようにするために具体的にどのような構造的変更を行うのかを説明する詳細な事後分析(ポストモーテム)を提供します。
このイニシアチブは完了しました。しかし、レジリエンスに関する私たちの取り組みは決して終わることはありません。
私たちはこれらのインシデントを非常に深刻に受け止め、Cloudflare の組織全体で共有所有権の概念を導入しました。各チームに対して「何をより良くできたか」を問いかけました。これが過去 2 クォーターにかけて行った作業の指針となりました。
この取り組みは決して完全に完了するものではありませんが、私たちははるかに良い状況にあると確信しており、Cloudflare はその結果として以前よりもはるかに強固なものとなっています。
原文を表示
Over the past two and a bit quarters, we've undertaken an intensive engineering effort, internally code-named "Code Orange: Fail Small", focused on making Cloudflare's infrastructure more resilient, secure, and reliable for every customer.
Earlier this month, the Cloudflare team finished this work.
While improving resiliency will never be a “job done” and will always be a top priority across our development lifecycle, we have now completed the work that would have avoided the November 18, 2025 and December 5, 2025 global outages.
This work focused on several key areas: safer configuration changes, reducing the impact of failure, and revising our “break glass” procedures and incident management. We also introduced measures to prevent drift and regressions over time, and strengthened the way we communicate to our customers during an outage.
Here we explain in depth what we shipped, and what it means for you.
Safer configuration changes
What it means for you: In most cases, Cloudflare internal configuration changes no longer reach our network instantly and are instead rolled out progressively with real-time health monitoring. This allows our observability tools to catch problems and revert issues before they affect your traffic.
In order to catch potentially dangerous deployments before they reach production, we've identified high-risk configuration pipelines, and built new tools to manage configuration changes better.
For products that run on our network processing customer traffic and receive configuration changes, we no longer deploy these changes instantly across the network. Instead, relevant teams have adopted a “health-mediated deployment” methodology, the same we use when releasing software, for all configuration deployments. This includes but is not limited to the product teams that were directly affected by the incidents.
Central to this is a new internal component we call Snapstone, which we built to bring health-mediated deployment to configuration changes. Snapstone is a system that bundles configuration change into a package, and then allows gradual release of the configuration change with health mediation principles. Before Snapstone, applying this methodology to config was possible but difficult. It required significant per-team effort and wasn't consistently applied across the network. Snapstone closes this gap by providing a unified way to bring progressive rollout, real-time health monitoring, and automated rollback to configuration deployments by default.
What makes Snapstone particularly powerful is its flexibility. Rather than being a fix for specific past failures, Snapstone allows teams to dynamically define any unit of configuration that needs health mediation, whether that's a data file like the one that caused the November 18 outage, or a control flag in our global configuration system like the one involved in the December 5 outage. Teams create these configuration units on demand, and Snapstone ensures they are deployed safely everywhere they're used.
This gives us something we didn't have before: when a risk review or operational experience identifies a dangerous configuration pattern, the fix is straightforward -- bring it into Snapstone, and the configuration pattern immediately inherits safe deployment.
Reducing the impact of failure
What it means for you: In the event an issue is observed on our network, our systems now fail more gracefully. This vastly reduces the potential impact radius, to ensure your traffic is delivered even in worst-case scenarios.
Product teams have carefully reviewed, both in a manual and programmatic fashion, their potential failure modes for products that are critical for serving customer traffic. Teams have removed non-essential runtime dependencies and implemented better failure modes. We will now use the last known good configuration where possible (“fail stale”), and if that isn’t possible we have reviewed each failure case and implemented “fail open” or “fail close” depending on whether serving traffic with reduced functionality is preferable to failing to serve traffic.
Let’s look at an example of how this works. Our November 2025 outage was triggered by a failed rollout of our Bot Management detection machine learning classifier. Under our new procedures, if data were generated again that our system could not read, the system would refuse to use the updated configuration and instead use the old configuration. If the old configuration was not available for some reason, it would fail open to ensure customer production traffic continues to be served, which is a much better outcome than downtime.
As a result, if the same Bot Management change that caused the failure in November were to roll out now, the system would detect the failure in an early stage of the deployment, before it had affected anything more than a small percentage of traffic.
We have also begun further segmenting our system so that independent copies of services run for different cohorts of traffic. Cloudflare already takes advantage of these customer cohorts for blast radius mitigation with traffic management techniques today, and this additional process segmentation work provides a powerful reliability capability for us going forward.
For example, the Workers runtime system is segmented into multiple independent services handling different cohorts of traffic, with one handling only traffic for our free customers. Changes are deployed to these segments based on customer cohorts, starting with free customers first. We’re also sending updates more quickly and frequently to the least critical segments, and at a slower pace to the most critical segments.
As a result, if a change were deployed to the Workers runtime system and it broke traffic, it would now only affect a small percentage of our free customers before being automatically detected and rolled back.
Sticking to the Workers runtime system as an example, in a seven-day period earlier this month, the deployment process was triggered more than 50 times. You can see how each happens in “waves” as the change propagates to the edge, often in parallel to the following and prior releases:
image
We’re working on extending this pattern of deployment to many more of our systems in the future.
Revised “break glass” and incident management procedures
What it means for you: If an incident does occur, we have the tools and teams to communicate more clearly and resolve it faster, minimizing downtime.
Cloudflare runs on Cloudflare. We use our own Zero Trust products to secure our infrastructure, but this creates a dependency: if a network-wide outage impacts these tools, we lose the very pathways we need to fix them. Before this Code Orange initiative, our "break glass" pathways were restricted to a handful of people and offered limited tool access. We needed these tools and pathways to be more broadly available during an outage.
To solve this, we conducted a comprehensive audit of the tools essential for system visibility, debugging, and production changes. We ultimately developed backup authorization pathways for 18 key services, supported by new emergency scripts and proxies.
Throughout the Code Orange program, we moved from theory to practice. After small-team exercises, we conducted an engineering-wide drill on April 7, 2026, involving more than 200 team members. While automation keeps these pathways functional, drills like these ensure our engineers have the muscle memory to use them under pressure.
This effort also focused on the flow of information. When internal visibility is disrupted, our incident response slows down, and our ability to communicate with the outside world suffers. Historically, technical observations from the heat of the moment didn't always translate into clear updates for our customers.
To bridge this gap, we established a dedicated communications team to work in lockstep with incident responders during major events. Just as our engineers practiced their "break glass" procedures, this team used the Code Orange program to drill on streamlining the cadence and clarity of customer updates. By ensuring we have both the tools to see and the structure to speak, we can resolve incidents faster and keep our customers better informed.
We have codified our improvements
What it means for you: We will remember the learnings from our incidents and have codified the resolutions. Our network will only become more resilient.
To avoid drift and reintroducing regressions to the work done as part of Code Orange over time, the team has built an internal Codex that solidifies all our guidelines in clear and concise rules.
The Codex is now mandatory for all engineering and product teams, and has become a central part of Cloudflare internal procedures. Its rules are enforced via AI code reviews that automatically highlight any instance that might diverge from the guidelines, requiring additional manual reviews be performed. This is applied without exception to our entire codebase. The goal is simple: Build institutional memory that enforces itself.
The November and December outages shared a common failure mode: code that assumed inputs would always be valid, with no graceful degradation when that assumption broke. A Rust service called .unwrap() instead of handling an error; Lua code indexed an object that didn't exist. Both patterns are preventable if the lessons are captured and enforced.
The Codex is part of our answer. It's a living repository of engineering standards written by domain experts through our Request For Comments (RFC) process, then distilled into actionable rules. Best practices that previously lived in the heads of senior engineers, or were discovered only after an incident, now become shared knowledge accessible to everyone. Each rule follows a simple format: "If you need X, use Y" with a link to the RFC that explains why.
For example, one RFC now states: "Do not use .unwrap() outside of tests and build.rs." Another captures a broader principle: "Services MUST validate that upstream dependencies are in an expected state before processing."
Had these rules been enforced earlier, the November and December outages would have been rejected merge requests instead of global incidents.
Rules without enforcement are suggestions. The Codex integrates with AI-powered agents at every stage of the software development lifecycle, from design review through deployment to incident analysis. This shifts enforcement left, from "global outage" to "rejected merge request." The blast radius of a violation shrinks from millions of affected requests to a single developer getting actionable feedback before their code ever reaches production.
The Codex is a living document and will be continuously improved over time. Domain experts write RFCs to codify best practices. Incidents surface gaps that become new RFCs. Every approved RFC generates Codex rules. Those rules feed the agents that review the next merge request. It's a flywheel: expertise becomes standards, standards become enforcement, enforcement raises the floor for everyone.
It’s not just about code: communication is key
What it means for you: Transparency is important to us. If something goes wrong, we’re committed to keeping you updated every step of the way so you can stay focused on what matters to you.
The global outages have made us review core processes and cultural approaches even beyond engineering and product development. As part of the broader Code Orange initiatives, we have introduced additional service level objectives (SLOs) to all our services, enforced a global changelog, onboarded all teams to our maintenance coordination system, and improved transparency across the company on our incident “prevents” ticket backlog.
We have also strengthened the way we communicate to our customers during an outage. Our goal is to alert you to an issue the moment we confirm it, before you even notice a problem. By the time you notice a lag or an error, our aim is to have an update already waiting in your notifications.
During an active incident, we now provide updates at predictable intervals (e.g., every 30 or 60 minutes), even if the update is simply, "We are still testing the fix; no new changes yet." This allows you to plan your day rather than constantly refreshing a status page.
Our job isn't done when the status returns to normal. We provide detailed post-mortems explaining what happened, why it happened, and the specific structural changes we are making to ensure it doesn't happen again.
This initiative is complete. But our work on resiliency is never done.
We take the incidents very seriously and adopted a shared ownership across the entire Cloudflare organization by asking every team: What could have been done better? This guided the work that we carried out over the last two quarters.
While this work is never truly done, we are confident that we are in a much better position and Cloudflare is now much stronger because of it.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み