Cloud Outages 2025–2026: What the Post-Mortems Mean for Your Architecture
AWS, Azure Front Door and Cloudflare twice: four outages in seven weeks, triggered by automation and configuration, not hardware. What this means for dependencies, recovery and RTO/RPO.

Summary
The four major outages of autumn 2025 (AWS us-east-1, Azure Front Door and Cloudflare twice) were not caused by a fire or an attack, but by an automation bug and a configuration change that spread globally within minutes. None of them would have been solved simply by deploying across multiple availability zones. Conversely, the events of March 2026 in the United Arab Emirates showed that even the physical loss of two zones in a single region is a realistic scenario. The practical takeaway: map hidden dependencies on a single region and on the control plane, design recovery so that it requires no changes during an outage, and actually test it.
What happened: four incidents in seven weeks
The overview below is based solely on the providers’ official post-mortems. They are worth reading in full – they are the best textbooks on operating distributed systems you can get.
| Incident | Duration of impact | Trigger | Why it spread |
|---|---|---|---|
| AWS us-east-1, 19–20 Oct 2025 | DynamoDB roughly 3 hours, EC2 and NLB until the afternoon of 20 Oct (PDT) | Race condition in the DNS automation for DynamoDB, empty DNS record for the regional endpoint | Internal EC2 systems depended on DynamoDB; the DNS fix was followed by a cascading breakdown of other subsystems |
| Azure Front Door, 29–30 Oct 2025 | 15:41–00:05 UTC | A sequence of configuration changes produced incompatible metadata and exposed a latent bug in the data plane | A global entry-point service; Azure Portal, Entra ID and Microsoft 365 depended on it too |
| Cloudflare, 18 Nov 2025 | 11:28–14:30 UTC main impact, full recovery at 17:06 UTC | A database permissions change doubled the contents of the Bot Management configuration file | The file was generated every five minutes and distributed across the whole network; the proxy crashed when the limit was exceeded |
| Cloudflare, 5 Dec 2025 | 08:47–09:12 UTC, about 25 minutes | A WAF configuration change deployed globally without a gradual rollout | The change propagated across the whole network within seconds and hit roughly 28% of HTTP traffic |
AWS: an empty DNS record and what came after it
The AWS summary describes the cause as a “latent race condition” in the DNS management system for DynamoDB: two automated processes interacted in such a way that the result was an empty record for dynamodb.us-east-1.amazonaws.com, which the automation did not repair on its own and which required manual intervention by operators. Elevated DynamoDB API error rates lasted from 23:48 PDT on 19 Oct to 2:40 PDT on 20 Oct – Monday morning in the Czech Republic.
The second half of the story matters more. After DynamoDB recovered, the EC2 subsystem that manages physical servers (DWFM) entered a state AWS calls “congestive collapse”, and engineers had to throttle incoming work and restart its hosts. Launching new EC2 instances fully recovered only at 13:50 PDT, and Network Load Balancer errors ended at 14:09 PDT. The original fault lasted under three hours; its consequences lasted more than fourteen.
And one detail for anyone running in a different region: according to AWS, customers signing in as root or via federation configured to use signin.aws.amazon.com had trouble logging in to the console even outside us-east-1.
Azure Front Door: when the front door goes down, you can’t even reach the controls
Microsoft’s Post Incident Review (tracking ID YKYN-BWZ) states that between 15:41 UTC on 29 October and 00:05 UTC on 30 October, Azure Front Door and Azure CDN customers experienced timeouts and DNS errors. The fault passed validation because not all features were tested across different control plane versions. Rolling back to the “last known good” configuration did not help directly – the faulty metadata was already in it – and the configuration had to be cleaned up manually. Among the affected services, the PIR also lists Azure Portal, Entra ID and Microsoft 365.
Cloudflare: configuration both times, not code
The November post-mortem: a permissions change in ClickHouse caused a query to return duplicate rows, and the Bot Management feature file grew. The proxy had a hard limit of 200 features (it normally used around 60) and panicked when the limit was exceeded. The December post-mortem: while mitigating a vulnerability in React Server Components (CVE-2025-55182), an internal WAF testing feature was switched off through the global configuration system without a gradual rollout, which triggered a bug in an older proxy version that had gone undetected for years.
The common pattern: control fails, not hardware
Three things recur across all four cases.
- The trigger was a change or automation, not hardware. DNS automation, configuration metadata, a generated file, a global switch.
- The change spread faster than it could be stopped. At Cloudflare, the December change went through the global configuration system, which does not perform gradual rollouts. In their remediation actions, Cloudflare and Microsoft both list introducing gradual rollouts and longer validation of configuration changes.
- Recovery took longer than the cause, because the systems needed for recovery depended on what was broken.
This matches the broader data. The Uptime Institute’s Annual Outage Analysis 2026 report (May 2026) states that the outage rate per data center has fallen for the fifth year in a row, but 57% of respondents put the cost of their most recent significant outage at more than $100,000, and one in five at more than a million. According to Uptime, third-party IT and data center service providers account for roughly two thirds of publicly reported outages over nine years of tracking.
Control plane and data plane
The control plane is the set of APIs that create and change resources (launching an instance, changing a DNS record, editing a rule). The data plane is what is already running and serving traffic. In its whitepaper on fault isolation boundaries, AWS explicitly states that the control plane is statistically more likely to fail than the data plane.
Lesson 1: hidden dependencies on a single region and on global services
A workload in Frankfurt or West Europe does not mean you have no dependencies elsewhere. Typical places where they hide:
- Identity and sign-in – sign-in endpoints, federation, an IdP hosted with the same provider or behind the same CDN.
- Global entry layer – CDN, WAF, global load balancer, DNS. A single service for all regions is, by definition, a single failure domain.
- Your suppliers’ suppliers – CI/CD as a service, image registries, monitoring, status page, incident tooling, payment gateway. If they run in the same region or behind the same CDN as you, they go down at the same moment.
- Recovery tooling – the pipeline you deploy from, Terraform state storage, the secrets vault, runbook documentation.
A sensible first step is a simple dependency register for each critical service. It does not have to be a tool; a file in the repository will do:
service: objednavky-api
rto: 60m
rpo: 5m
dependencies:
- name: primary database
scope: region (eu-central-1), multi-AZ
failure_mode: read-only mode from replica
- name: CDN / WAF
scope: global, single vendor
failure_mode: switch DNS directly to origin (runbook RB-12)
- name: sign-in (IdP)
scope: global SaaS
failure_mode: valid sessions run out, new sign-ins fail
- name: CI/CD
scope: SaaS, hosted in us-east-1
failure_mode: manual deployment from break-glass account (runbook RB-07)
recovery_requires_control_plane: true # candidate for redesign
last_restore_test: 2026-06-18
Orderly infrastructure is a prerequisite – whatever is not described as code is hard to get into such a register. More in the article on infrastructure chaos.
Lesson 2: static stability instead of heroic recovery
AWS defines static stability as a system continuing to operate unchanged when a dependency fails. The recommendation from the same document: instead of relying on the EC2 control plane to launch new instances after a zone failure, have the capacity provisioned in advance – and remove control plane dependencies from the recovery path.
The October incident is a precise illustration. Those who had enough running instances in us-east-1 on 20 October rode it out. Those who relied on autoscaling to add more under load or after a failure waited for hours, because launching new instances did not work.
How to recognize static stability in a design
- The recovery plan contains no “create”, “launch” or “change configuration” step at the provider – only redirecting traffic to what is already running.
- Capacity in the remaining zones can carry the traffic after losing one zone without scaling.
- The application survives the configuration or secrets source being unavailable, using the last known value from cache.
- Your own configuration changes (feature flags, WAF rules, DNS) are rolled out gradually and have a kill switch – the same lesson the providers learned.
The cost is obvious: pre-provisioned capacity costs money even when it is not being used. For an internal system that can tolerate an outage of several hours, it does not pay off, and it is legitimate to decide so – but consciously and in writing.
Lesson 3: multi-AZ, multi-region, multi-cloud – what each step solves
| Level | What it covers | What it does not cover | Cost reality |
|---|---|---|---|
| Multi-AZ within one region | Failure of a single data center or zone | Failure of a regional service or the control plane (AWS, October 2025); loss of several zones at once | Low; for most managed services it is an option chosen at provisioning |
| Multi-region (active/passive) | A regional outage, if data is replicated and failover is rehearsed | Failure of a global service (Front Door, CDN, identity); untested failover | Medium to high: data replication, a second environment, ongoing testing |
| Multi-region (active/active) | A regional outage without failover | Bugs in your own application and configuration deployed to all regions | High; requires dealing with data consistency |
| A second vendor for a selected layer | Global failure of one vendor in that layer (CDN, DNS) | Everything else | Double configuration, double expertise, risk of rules drifting apart |
| Full multi-cloud | In theory, an outage of an entire provider | Shared dependencies (DNS, identity, CI/CD) that remain single | Highest; the platform shrinks to the lowest common denominator |
At AWS, DynamoDB global tables kept working during the incident: according to the post-mortem, customers connected to replicas in other regions, and only replication to and from us-east-1 was delayed. Multi-region therefore helped those who had it prepared at both the data and the operational level.
For outages of the global entry layer, multi-region would not have helped at all. The answer is an alternative traffic path, but Microsoft itself, in its architecture guide on redundancy in front of Azure Front Door, warns that a poorly designed high-availability solution can make availability worse because it adds points of failure and operational complexity, and that most applications do not need such an architecture.
Multi-AZ does not protect against everything
According to a Data Center Dynamics report of 1 March 2026, AWS announced that a data center in the ME-CENTRAL-1 region had been struck by “objects” that caused a fire; after zone mec1-az2, mec1-az3 was affected as well, and AWS advised customers to redirect data storage to another region. For European regions this is an unlikely scenario, but for critical data the rule holds: keep copies outside the region, not just outside the zone.
When full multi-cloud makes no sense: almost always, unless it is required by regulation or a specific business reason. A second cloud deployed only on paper is the most expensive form of false security – a failover that has never been tested behaves like no failover at all during an incident.
Lesson 4: RTO and RPO are decisions, recovery is a skill
RTO (how quickly the service will be running again) and RPO (how much data you can afford to lose) are not technical parameters but business decisions with a price tag. Without them, you cannot say whether multi-AZ is too little or multi-region too much. Set them per service, not for the whole company, and have them signed off by the service owner.
The other half is verification. The post-mortems show that even providers with the best teams ran into recovery paths nobody had walked through in a long time – among its actions, AWS lists adding recovery tests for DWFM, and Microsoft cutting data plane recovery time to about an hour.
Minimum for a recovery test
For the last point, see the article on monitoring and logging; for deploying changes without impacting operations, see zero-downtime deployment in Kubernetes.
What regulation says
The following is not a legal interpretation, just a guide to where to look for the requirements.
DORA (financial sector)
Regulation (EU) 2022/2554 applies from 17 January 2025. Article 11(6) requires ICT business continuity plans and ICT response and recovery plans to be tested at least once a year and after substantive changes to systems supporting critical or important functions; testing plans must (except for microenterprises) also include scenarios of switching between the primary ICT infrastructure and redundant capacity. Article 12(6) requires that, when setting recovery time and recovery point objectives for each function, account is taken of whether it is a critical or important function. Article 28(8) requires exit strategies for ICT services supporting critical or important functions.
DORA does not mandate multi-cloud. It requires you to be able to demonstrate that you know and manage the risk of depending on a provider, and that your exit and recovery plan has been tested. How strictly the supervisor interprets this in a specific case is a question for compliance and lawyers.
NIS2 and the Czech Cybersecurity Act
The NIS2 Directive, in Article 21(2)(c), lists business continuity, including backup management and disaster recovery, among the mandatory measures, and in point (d) supply chain security. In the Czech Republic it is transposed into Act No. 264/2025 Coll. (the Cybersecurity Act, zákon o kybernetické bezpečnosti) and its implementing decrees. According to explanatory material from NÚKIB (the National Cyber and Information Security Agency) on Decree No. 409/2025 Coll. (the higher-obligations regime), business continuity management is governed by § 15: the obliged entity sets the minimum level of services provided, the recovery time and the data recovery point, and regularly tests its continuity and recovery plans. In other words, exactly what the previous section describes – only with an obligation to prove it.
The scope of obligations differs by regime (higher and lower), and the exact deadlines for implementing the measures depend on the registration date of the specific organization; check them in the Act and with NÚKIB.
What to do on Monday
- Pick three to five services whose outage really hurts the company, and record the RTO, RPO and owner for each.
- Write down their dependencies, including global services, SaaS tools and suppliers. For each, mark its scope (zone, region, global) and what happens when it fails.
- Go through the recovery plan and underline every step that requires a working provider control plane, CI/CD or SSO. These are candidates for pre-provisioning or an alternative path.
- Schedule one recovery test for the next quarter – start with restoring the database from backup and measuring the time.
- Decide on the entry layer: either you consciously accept the risk of a CDN/WAF outage, or you have a runbook to bypass it and know which security controls you temporarily lose by doing so.
- Check your own configuration changes: are they rolled out gradually, and can they be reverted quickly?
Only then does it make sense to open the debate about a second region or a second vendor. Without the first four steps, it would be an investment made blindfolded.
Key takeaways
- The major outages of 2025 were triggered by automation and configuration, not hardware failure; they spread globally within seconds to minutes.
- Recovery took longer than the cause: at AWS, under three hours of DNS fault, more than fourteen hours of impact on EC2 and NLB.
- Multi-AZ is the foundation, not the goal. It does not address a regional service, the global entry layer or the loss of several zones.
- Static stability: a recovery plan that creates or changes nothing during an outage is the most reliable.
- Redundancy has a cost and can do harm. An unrehearsed failover and duplicated configuration add points of failure.
- RTO, RPO and recovery tests are also exactly what DORA and the Czech Cybersecurity Act require of regulated entities.
Sources
- AWS: Summary of the Amazon DynamoDB Service Disruption in the Northern Virginia (US-EAST-1) Region (October 2025)
- Microsoft Azure: Post Incident Review – Azure Front Door, tracking ID YKYN-BWZ (October–November 2025)
- Cloudflare: Cloudflare outage on November 18, 2025 (November 2025)
- Cloudflare: Cloudflare outage on December 5, 2025 (December 2025)
- Data Center Dynamics: AWS UAE suffers AZ outage after “objects strike data center” (March 2026)
- Uptime Institute: Annual Outage Analysis Report 2026 – press release (May 2026)
- AWS: AWS Fault Isolation Boundaries – Static stability (whitepaper, continuously updated)
- Microsoft Learn: Global routing redundancy for mission-critical web applications (continuously updated)
- Regulation (EU) 2022/2554 (DORA), Articles 11, 12, 28 and 64 and Directive (EU) 2022/2555 (NIS2), Article 21 – unofficial article-by-article transcription of the text (December 2022)
- NÚKIB: Decree No. 409/2025 Coll., on security measures of a regulated service provider in the higher-obligations regime – video lecture handout (January 2026)