Cache Hit Rate from 58% to 94%: Building a CDN Monitoring System and 5 Production-Grade Troubleshooting Decisions

Overview After deploying a CDN, many teams stop at glancing at the hit rate number on the vendor’s console. Hit rate at 90%? Looks fine, moving on. Then one day the origin bandwidth gets maxed out, pages take 8 seconds to load, user complaints flood in — and you discover that 90% was the request hit rate, not the byte hit rate. Large files were all going back to origin, while small requests inflated the number....

September 24, 2026 · 20 mins · 4104 words · Xu Baojin

VPC Peering Became Your Bottleneck: Cloud-Native Network Architecture Selection and 5 Production-Grade Decisions

Overview At 2 AM, the alert group for a ride-hailing project exploded. The order service P99 latency spiked from 80ms to 600ms, and client-side timeouts were spreading. After a full round of troubleshooting, the culprit turned out to be VPC Peering — the cross-VPC call volume between two core business VPCs had saturated the concurrent connection limit of a single Peering link during peak hours. Meanwhile, 3 out of 12 new Peering connections created via Full Mesh for another recently launched VPC failed due to CIDR overlap, causing routing table chaos that sent some traffic through suboptimal paths....

September 22, 2026 · 25 mins · 5314 words · Xu Baojin

Pushing the Same Image 3 Times to 3 Environments? CI/CD Artifact Promotion Pipeline Layered Design and 4 Production Decisions

Overview You’ve probably seen this release workflow: a developer builds a Docker image, tags it as dev, and pushes it to the dev registry. After testing passes, they re-tag it as staging and push it again. Finally, for production, they tag it as prod and push a third time. Same image, built once, pushed three times with three different tags. This seems fine — until one day you discover that the image validated in staging and the image running in prod are not the same artifact at all....

September 19, 2026 · 24 mins · 5110 words · Xu Baojin

3,000 Lines of HCL Nobody Dares to Touch? 5 Production Decisions and Migration Pitfalls of Redoing IaC in a Real Programming Language with Pulumi

Overview A team has been running Terraform for three years. Their main module has grown to 3,000 lines of HCL, with deeply nested variable definitions, multiple providers, and for_each loops that make code review a nightmare. Every change is like defusing a bomb—the pull request gets reviewed five times, tested in three environments, and the final plan output scrolls for 200+ lines before anyone clicks apply. The last guy who understood the module structure left two months ago, and the handover doc is an abandoned Notion page....

September 17, 2026 · 16 mins · 3398 words · Xu Baojin

Promised 99.9%, Got 0.7 Yuan Back: SLA Clause Breakdown and 6 Engineering Decisions for Internal Design

Overview Your company uses a cloud service with an SLA that clearly states 99.95% monthly availability. One night, the service goes down for 30 minutes. You file a compensation claim with the cloud provider. The calculation goes roughly: downtime as a fraction of total monthly minutes, multiplied by your monthly fee. Assuming you pay 1000 yuan/month, that’s 30 minutes divided by 43,200 minutes times 1000, giving you about 0.7 yuan....

September 15, 2026 · 33 mins · 6998 words · Xu Baojin

14-Day Change Freeze Still Blew Up P0: 5 Engineering Decisions from Manual Freeze to Dynamic Change Windows

Overview Fourteen days before Double 11 one year, an e-commerce platform initiated a full change freeze—all non-emergency changes were frozen, CI/CD pipeline gates were closed, and only a security patch channel remained. The ops team breathed a sigh of relief. This time, it would be stable. At 2 AM on the day of the big sale, the payment pipeline P0 alert blew up. The root cause wasn’t new code. It was a configuration change deployed 3 days before the freeze—a rate-limiting rule’s whitelist had the wrong IP range....

September 12, 2026 · 30 mins · 6243 words · ABao

2GB of Zombie Shared Memory Nobody Reclaimed: Linux IPC Mechanism Selection and Production Troubleshooting Journal

Overview At 1:47 AM, an alert popped up: 192.168.10.23 shared memory usage > 1.5GB. I logged in, ran ipcs -m, and found 14 shared memory segments — 9 of them with nattch=0 (no process attached), yet holding nearly 2GB of physical memory. Worse, ipcrm -m deleted 3 of them, but the rest returned Operation not permitted — the processes had exited a month ago, yet these “zombie segments” refused to leave....

September 10, 2026 · 22 mins · 4513 words · Xu Baojin

Error Budget Depleted, PM Still Pushing Releases: Three-Tier Gates Turning Reliability into Hard Product Decision Constraints

Overview You’ve probably been here: SLO set at 99.9%, error budget calculated, Grafana dashboard looking sharp. Then Friday afternoon, with the budget 87% consumed, the PM shows up carrying the boss’s mandate: “This feature must ship Monday.” You say no, the budget’s almost gone. PM asks “Then when?” Thirty minutes of arguing later, it ships anyway. Monday night, it blows up. This isn’t an isolated case. I’ve seen too many teams turn error budgets into “ops’ dashboard”—metrics defined, alerts configured, dashboards painted—but the moment a decision needs to be made, the whole thing collapses....

September 10, 2026 · 22 mins · 4527 words · Xu Baojin

Pods Stuck Pending After IP Pool Exhaustion: 5 Production Decisions for TKE Network Selection and Node Pool Governance

Overview 2 AM, phone buzzing with alerts. I open it up — 40+ pods in the TKE cluster suddenly enter Pending state, business APIs timing out across the board. A quick kubectl describe pod reveals the scheduling failure reason, crystal clear: Insufficient tke.cloud.tencent.com/eni-ip. This wasn’t some exotic technical puzzle. The root cause was straightforward: under VPC-CNI mode, the auxiliary IPs bound to the elastic network interfaces (ENIs) on the nodes were exhausted....

September 8, 2026 · 17 mins · 3587 words · ABao

Don't Manage Your Infrastructure Twice: The Terraform + Ansible Collaboration Boundary and 5 Production-Grade Decisions

Overview 2 AM, the alert channel exploded. A web server that went live two hours ago was at 100% CPU. SSH in — Nginx wasn’t installed, but an old Apache was squatting on port 80. Checked the deploy logs: Terraform had run terraform apply ten minutes ago, rebuilding the machine (someone changed instance_type), but Ansible’s configuration playbook never followed — fresh machine, all software configs gone. This isn’t an isolated incident....

September 5, 2026 · 22 mins · 4651 words · ABao