Lập trình Go 22/09/2026 9 phút

CQRS trong Go: tách mô hình đọc khỏi mô hình ghi, và cái giá của read model

CQRS tách đường ghi (command, chuẩn hóa) khỏi đường đọc (query, gộp sẵn) để mỗi bên tối ưu độc lập. Đo thật trong Go 1.23: đọc từ read model dựng sẵn nhanh hơn tính lại từ 100k đơn khoảng 328 lần, đổi lại mỗi lệnh ghi phải chiếu và có thể trễ nhất quán.

Lập trình Go 22/09/2026 10 phút

Event sourcing trong Go: lưu chuỗi sự kiện thay vì trạng thái, và snapshot cứu tốc độ

Event sourcing lưu chuỗi sự kiện bất biến thay vì trạng thái hiện tại; trạng thái được dựng lại bằng replay. Đo thật trong Go 1.23: dựng lại số dư tài khoản từ chuỗi sự kiện, truy vết lịch sử tại mọi thời điểm, và snapshot làm việc dựng lại nhanh hơn replay đầy đủ khoảng 1443 lần.

Lập trình 22/09/2026 8 phút

Event sourcing: lưu chuỗi sự kiện thay vì trạng thái, và dựng lại mọi thứ bằng replay

Thay vì lưu 'số dư = 200' rồi ghi đè mỗi lần đổi, event sourcing lưu từng sự kiện (nạp 100, rút 30, nạp 50...) và tính trạng thái bằng cách replay chúng. Bài này chạy thật trên Kafka: replay toàn bộ event log dựng lại balance 200, time-travel về quá khứ cho balance 100 tại thời điểm cũ, thêm event rồi replay vẫn đúng 700, và toàn bộ 7 sự kiện còn nguyên làm audit. Đổi lại là chi phí replay.