EXPLAIN ANALYZE — Vũ khí săn query chậm trong database
Tối ưu SQL query bằng EXPLAIN ANALYZE: đọc execution plan, tìm sequential scan, thêm index đúng chỗ, biến query 3 giây thành 30ms.
THE ENGINEERING JOURNAL
Những điều mình xây, những vấn đề mình gặp, và những gì mình học được. Về phần mềm, từ bên trong.
Tối ưu SQL query bằng EXPLAIN ANALYZE: đọc execution plan, tìm sequential scan, thêm index đúng chỗ, biến query 3 giây thành 30ms.
Connection pooling tái sử dụng kết nối database, giảm latency và tránh lỗi 'too many connections'. Kinh nghiệm config pool đúng cách trong Go.
Blue-Green và Canary release giúp deploy không downtime, rollback nhanh. Kèm ví dụ nginx + docker-compose và kinh nghiệm thực tế.
Property-based testing thay vì đoán input, máy tự sinh hàng trăm ngàn case để tìm bug — kèm ví dụ Go thực chiến.
Idempotency key giúp API xử lý an toàn khi client retry: trùng request vẫn trả kết quả cũ, không bao giờ trừ tiền 2 lần.
Profile CPU, heap và goroutine bằng pprof trong Go: cách bật endpoint, đọc flame graph và kinh nghiệm bắt bottleneck thực tế.
Hiểu Hexagonal Architecture (Ports & Adapters) qua ví dụ Go: tách business logic khỏi framework và database, code dễ test và dễ thay đổi hơn hẳn.
Migrate schema Postgres an toàn trên production: expand & contract, backfill theo batch, chuyển code từng phase — không cần tắt service.
Generics trong TypeScript qua ví dụ thực tế: generic function, extends, keyof, infer và cách tránh over-engineering khi áp dụng vào dự án.
Afterword Building Microservices: khi nào nên và không nên dùng microservices, cạm bẫy tách nhỏ quá sớm và khởi đầu an toàn với monolith.