Outbox Pattern — Ghi DB rồi publish event, không lo mất
Outbox Pattern giải bài toán dual-write: ghi DB vừa publish event vừa an toàn, không mất mát. Có code Go và relay thực chiến.
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.
Outbox Pattern giải bài toán dual-write: ghi DB vừa publish event vừa an toàn, không mất mát. Có code Go và relay thực chiến.
Cache-aside tưởng đơn giản mà dính Cache Stampede, thiếu TTL jitter, ghi nhầm thứ tự. 3 cái bẫy làm chậm hệ thống dù đã bọc Redis.
CI/CD bằng GitHub Actions từ A đến Z: workflow syntax, cache dependency, matrix build, secrets và deployment tự động lên production an toàn.
Vì sao mở kết nối PostgreSQL mỗi lần request là chậm? Học cách tinh chỉnh connection pool trong Go: MaxOpenConns, MaxIdleConns, ConnMaxLifetime và các cái bẫy dễ dính.
Flaky test âm thầm giết chết niềm tin vào CI. Tìm hiểu 4 nguyên nhân chính và cách sửa dứt điểm để test chạy 100 lần vẫn xanh.
Hướng dẫn dùng Idempotency-Key + unique constraint để API retry an toàn, không ghi trùng order hay thanh toán 2 lần — kèm code Go + PostgreSQL.
CAP là gì, vì sao không thể có đủ Consistency, Availability, Partition tolerance cùng lúc, và cách chọn combo đúng cho hệ thống thực tế.
Graceful shutdown trong Go: bắt SIGTERM, dừng nhận request mới, chờ request dở xong rồi mới tắt. Code mẫu + kinh nghiệm thực tế.
CQRS tách command với query, mỗi chiều một model riêng. Xem cách triển khai thực tế + khi nào nên (và không nên) dùng.
Học table partitioning trong PostgreSQL: chia bảng to đã tăng tốc query, dọn data cũ nhanh gọn, kèm code thực chiến.