Robert Teah

DevOps Engineer

Cloud Engineer

Infra Engineer

Site Reliability Engineer

DevSecOps Engineer

Robert Teah

DevOps Engineer

Cloud Engineer

Infra Engineer

Site Reliability Engineer

DevSecOps Engineer

Senior DevOps / Platform / SRE Engineer with 10+ years of experience operating production infrastructure at enterprise scale across AWS and Kubernetes environments.

A Peak-Traffic RDS Failover Outage, and Why Disaster Recovery Isn’t a Configuration

September 27, 2026 Uncategorized

At Home Depot, a Prometheus alert fired on elevated write-error rates across the checkout service during a peak shopping window — write operations spiked from a 0.1% baseline to over 18% in four minutes, with live revenue impact.

What happened

We rolled back the most recent deployment as a precaution. The error rate didn’t move — the deployment wasn’t the cause. The actual root cause was two compounding problems: the application was hardcoded to the primary RDS instance endpoint instead of the cluster endpoint, and when Multi-AZ failover promoted the standby, the cluster endpoint updated automatically but the application kept routing writes to the old primary, now a read-only standby. The connection pool held those stale connections for five minutes before timing out. The failover itself worked exactly as designed — the application just wasn’t written to survive one.

The fix

We updated the application config to use the RDS cluster endpoint and performed a rolling restart. Write errors dropped to zero within three minutes of the restart completing. Total incident duration: 47 minutes. Afterward, I built an automated CI/CD check that fails the build if it detects a hardcoded RDS instance endpoint in an application config, added monthly failover testing in staging via AWS Fault Injection Simulator, and cut the connection pool timeout from five minutes to thirty seconds.

The lesson

Multi-AZ failover protects the database. It does not protect you from applications that were never written to handle one gracefully. Infrastructure resilience and application resilience are two separate engineering problems, and testing one doesn’t validate the other — this incident is part of why I rebuilt our monitoring around SLIs and SLOs afterward, replacing confidence based on configuration with confidence based on evidence.

Write a comment