Blog Posts
- Home /
- Blog Posts

Graceful Shutdown: Benefits and Reasons to Have It
There was a time when our team deployed a new version at 11 pm. After running kubectl rollout restart, 30 seconds later, PagerDuty alerted: 200 502 errors in 5 seconds. Customers were placing orders when they encountered a timeout. We quickly rolled back, then checked the logs - it turned out that the old pod was terminated with SIGTERM, the HTTP server shut down immediately, and 50 requests being processed were cut off entirely.
Read More
Goroutine management: errgroup, leak-proof, backpressure
Last month, one of our team’s services suddenly slowed down like a turtle. The p50 latency jumped from 50ms to 3 seconds. Upon checking Grafana, there were 120,000 goroutines running - normally, there are only 200. Someone had just pushed code and forgotten to call defer cancel() in a batch processing loop.
Read More
When to use cache and when not to
There is a production bug that I still remember vividly: user A cancels an order, but the app still displays “delivering” for the next 10 minutes. Support receives 30 tickets in one morning. The reason: cache TTL is 10 minutes, but no one invalidates it when the order status changes.
Read More
API Filtering: retrieving data like a coffee connoisseur
In my first year of working, I once wrote an endpoint GET /api/menus that returned… the entire menu. 200 items every time it was called. The JSON was 1.2MB heavy. The frontend only needed the name and price of 10 active dishes. I remember the first thing my lead said: “You’re sending the entire warehouse to someone who just needs to view the menu, aren’t you?”
Read More
Context in Go: passing data, deadline, cancel - use correctly or die of performance
When I first coded in Go, I encountered a strange production bug: after running for 3-4 days, the service suddenly consumed 8GB of RAM and caused an OOM error. I spent the entire Friday afternoon debugging and finally discovered the issue: a goroutine never ended because I forgot to pass the context to the gRPC call. Each request leaked a goroutine, and after 100K requests, the server was overwhelmed.
Read MoreCategories
Tags
- 9router
- Agent
- Agent-Harness
- Agnes-Ai
- Ai-Agent
- Ai-Agents
- Ai-Coding
- Ai-in-Production
- Ai-Models
- Ai-Router
- Ai-Tools
- Anthropic
- Aphrodite
- Api
- Architecture
- Automation
- Aws
- Backend
- Best-Practices
- Browser
- Cache
- Caveman
- Claude-Code
- Cloud-Cost
- Codex
- Comparison
- Concurrency
- Context
- Context-Compression
- Context-Engineering
- Cost-Saving
- Database
- Deepseek
- Devops
- Distributed-Monolith
- Engineering
- Filtering
- Ford
- Gemini
- Git
- Golang
- Goroutine
- Gpt-5
- Graceful-Shutdown
- Headless
- Headroom
- Hermes-Agent
- Incident-Management
- Interview
- Kubernetes
- Lean-Ctx
- Llm
- Llm-Safety
- Matplotlib
- Mcp
- Memory
- Meta
- Microservices
- Microsoft
- Models
- Monolith
- Mvcc
- Mysql
- Network
- Open-Source
- Openclaw
- Opencode-Go
- Performance
- Pi-Agent
- Platform-Engineering
- Plugin
- Post-Mortem
- Postgresql
- Proxy
- Pubsub
- Reality-Check
- Reliability
- Routing
- Runtime
- Rust
- Sapiensai
- Scraping
- Search
- Security
- Self-Hosted
- Setup
- Singapore
- Skill
- Software-Engineering
- Storage
- System-Design
- Tcp
- Team-Topologies
- Telemetry
- Terraform
- Thinking-Budget
- Token-Optimization
- Trellis
- Version-Control
- Web-Scraping
- Webhook
- Workflow
- Zig