Zero-downtime Migration — đổi schema khi app đang chạy
Đổi schema trên DB đang chạy production mà không downtime: expand-contract, ADD COLUMN an toàn, index CONCURRENTLY và backfill theo batch.
THE ENGINEERING JOURNAL
Các bài viết về engineering.
Đổi schema trên DB đang chạy production mà không downtime: expand-contract, ADD COLUMN an toàn, index CONCURRENTLY và backfill theo batch.
Chạy pprof đúng cách để tìm hot path CPU, memory leak và goroutine kẹt trong service Go — kèm code mẫu và mấy cái bẫy em từng dính.
Bật gzip chưa chắc đã nhanh. So sánh gzip, Brotli, zstd, cái bẫy Vary header, middleware nén trong Go và 3 cạm bẫy hay gặp.
Coverage 90% chưa chắc test tốt. Mutation testing tự sửa code để xem test có bắt được bug thật không, kèm ví dụ Go với gremlins.
Pod bị OOMKilled dù node còn dư RAM? Hiểu request vs limit, cgroup v2, GOMEMLIMIT và cách debug exit code 137 trong Kubernetes.
Đừng làm việc nặng ngay trong request HTTP. Bài này nói cách đẩy task vào hàng đợi, worker xử lý nền kèm retry + dead-letter queue bằng Go.
SETNX tưởng đủ để làm distributed lock nhưng giấu cả đống bẫy: key hết hạn, unlock nhầm, gặp critical section lâu. Đây là cách làm cho đúng.
OpenTelemetry giúp xâu chuỗi request qua nhiều service để tìm đúng nút thắt cổ chai thay vì đoán mò.
Hiểu 3 mức cô lập giao dịch trong PostgreSQL: Read Committed, Repeatable Read, Serializable — chọn đúng để khỏi ghi sai dữ liệu.
Goroutine rẻ nhưng không miễn phí. Bài này chỉ chỗ Goroutine leak thường gặp và cách bắt bằng runtime.NumGoroutine + pprof.