Starting from Docker Machine Deprecation: 7 Production Decisions for GitLab CI Runner Elastic Architecture and Cache Governance

Overview 1 AM. You get an alert: GitLab CI pipeline queue has 47 pending jobs. The dev chat explodes—“code pushed 40 minutes ago, still not running"“is the Runner down?““just add more machines!” You check the console: all 3 Runners are at capacity, each running 10 concurrent jobs, 30 slots fully occupied. Add machines? Docker Machine executor needs 3 minutes to spin up a new EC2, then another 2 minutes to become Ready....

August 13, 2026 · 17 mins · 3581 words · ABao

Disaster Recovery Is Not Backup: Cross-Datacenter RPO<5min, RTO<30min Architecture Decisions and Lessons Learned

Overview At 2:17 AM, my phone buzzed with an alert: core datacenter A network equipment failure, database primary-standby sync interrupted. The on-call SRE switched to the disaster recovery datacenter B, only to find that after applications connected to the new primary, some order data was missing — the async replication window had lost 47 seconds of data. Recovery took 38 minutes, exceeding the RTO target by 8 minutes. This was a real failover incident....

August 11, 2026 · 26 mins · 5335 words · ABao

Managed Clusters Aren't Set-and-Forget: 5 Production Pitfalls After Migrating from Self-Hosted K8s to ACK

Overview “Fully managed control plane” — this phrase makes many teams think migrating to an ACK managed cluster means they can kick back and relax. In reality, managed only takes care of etcd, kube-apiserver, kube-controller-manager, and kube-scheduler. Data plane problems? Still all yours. I led a migration of 120+ microservices from a self-hosted K8s cluster to ACK Managed Cluster Pro. The migration took 3 months with zero-downtime cutover — but the first month after switching, 3 AM alerts never stopped....

August 8, 2026 · 23 mins · 4859 words · ABao

3 Days of Approval, Still Crashed: Replacing Manual CAB with Error Budget Gates Cut Change-Related Incidents by 60%

Overview 1:47 AM. Phone buzzes. The alert group explodes with 200+ messages. Order success rate drops from 99.8% to 92%. The on-call engineer restarts the service, rolls back the version, and fights for 40 minutes to restore service. Next day’s postmortem: root cause was a one-line database connection pool config change pushed during the afternoon release. This change went through the full approval process — developer submission, test verification, manager sign-off, SRE review....

August 6, 2026 · 23 mins · 4818 words · ABao

Don't Let Jenkins Dictate Your Release Cadence: Architecture Decisions and Lessons from Building a Go DAG Scheduler Engine

Overview 2 AM. A ride-hailing platform’s release window just opened. Jenkins Master suddenly hits CPU 100%. The build queue backs up with 200+ tasks. The entire deployment pipeline is frozen. The ops team spent 40 minutes finding the root cause: a legacy project’s Git repo had 15GB of binary files stuffed in it. A single clone took 20 minutes, exhausting all of Master’s thread pool. This isn’t an isolated case. Jenkins is a fine CI tool, but when you have 120+ microservices with tangled deployment dependencies and need fine-grained control over concurrency and rollback ordering, Jenkins’s Stage model starts to crack....

August 4, 2026 · 26 mins · 5482 words · ABao

Deploying IaC Without Tests? A Four-Layer Validation Pipeline That Cuts 3AM Alerts by 80%

Overview I took over a project last year where a former colleague’s Terraform code was running fine. One Monday morning, he changed a single line of instance_type. terraform plan looked clean. apply succeeded. Then the system blew up. The problem wasn’t a syntax error — the instance_type referenced an AMI that didn’t exist in the target availability zone. plan passed because it only checks “is this logically valid,” not “does this resource actually exist on the cloud....

August 1, 2026 · 20 mins · 4051 words · ABao

Reliability Measurement Is Not About Piling Metrics: Turning 'Is the System Stable?' into Decision-Driven Numbers with a Four-Layer Model

Overview 3 AM. You get woken up by an alert. You check: CPU normal, memory normal, pods running. But users are complaining the system is unusable. You open Grafana, stare at a wall of charts, and cannot answer one simple question: is this an incident or not? I have encountered this scenario repeatedly across multiple enterprise SRE consulting engagements. The core problem is not insufficient monitoring — it is that the measurement system is designed wrong: we keep monitoring internal system metrics instead of user-perceived service quality....

July 30, 2026 · 24 mins · 5062 words · ABao

MTTR from 40 Minutes to 8: Cutting Fault Localization Time by 5x with a Four-Layer Defense

Overview 3 AM, phone vibrating. The alert channel exploded with 200 messages, and user complaints are already flooding customer service. You scramble to your laptop, log into the bastion host, and discover a core API endpoint’s P99 latency spiked to 8 seconds. For the next 30 minutes, you dig through logs, check Grafana dashboards, and ping upstream and downstream teams—only to find that a config center pushed an incorrect parameter....

July 28, 2026 · 22 mins · 4552 words · ABao

Don't Get Fooled by Multi-Cloud: Architecture Decisions and Lessons from Vendor Lock-in to Cross-Cloud Disaster Recovery

Overview At 3 AM, your phone vibrates. An alert message: a major cloud provider’s East China region storage service is experiencing widespread unavailability. Your core business is fully deployed in this region, with the primary database there too. The outage has lasted 12 minutes, customers are complaining, and your boss is asking “how long to recover” in the group chat. You know the truth: the cross-region disaster recovery plan was reviewed six months ago but got cut due to “high costs....

July 25, 2026 · 7 mins · 1475 words · ABaoPlus

Lost Your State File? Terraform State Disaster Recovery and Production-Grade Backend Architecture

Overview 2 AM, my phone exploded. The ops channel for a ride-hailing project was flooding with alerts: RDS failover failed, EIP binding status abnormal, security group rules missing. After a long investigation, the root cause was someone manually modifying a security group rule through the console. Terraform’s state file was out of sync with the actual cloud state, and a routine terraform apply “corrected” the manually modified resources back to their old configuration—overwriting an emergency hotfix made on the production server....

July 25, 2026 · 16 mins · 3384 words · ABao