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

Repository pattern trong Go: tách tầng dữ liệu bằng interface, và khi nào nó thành lớp thừa

Repository pattern giấu chi tiết lưu trữ sau một interface, để logic nghiệp vụ không phụ thuộc CSDL cụ thể. Đo thật trong Go 1.23: repo dịch lỗi lưu trữ thành lỗi domain để errors.Is dùng ở tầng trên, service test được bằng fake, và nêu thẳng chỗ repository giấu mất tối ưu CSDL.

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 Go 22/09/2026 10 phút

DDD tactical patterns trong Go: value object, entity, aggregate — và cách Go thể hiện chúng

Domain-Driven Design tactical patterns — value object, entity, aggregate — có cách thể hiện riêng trong Go nhờ value semantics của struct. Đo thật trong Go 1.23: value object so theo giá trị bằng ==, entity so theo ID, aggregate root ép bất biến, và struct comparable làm map key miễn phí.

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

Middleware chain trong Go: xâu chuỗi xử lý HTTP bằng hàm bậc cao, gần như không tốn phí

Middleware trong Go là hàm func(http.Handler) http.Handler, xâu chuỗi được thành lớp xử lý HTTP kiểu củ hành. Đo thật trong Go 1.23: thứ tự thực thi vào-ra, middleware short-circuit dừng chuỗi, và một Chain combinator — 5 lớp middleware gần như không thêm chi phí vì chuỗi dựng một lần lúc khởi tạo.

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

Plugin architecture trong Go: package plugin (.so) vs registry, và vì sao Go ít nạp động

Go có hai lối làm plugin: package plugin nạp .so lúc chạy, và registry pattern biên dịch tĩnh tự đăng ký qua init(). Đo thật trong Go 1.23: nạp .so thành công nhưng ràng buộc khắc nghiệt (chỉ Linux/macOS, cùng phiên bản), còn registry cho một binary tĩnh gọn và di động — lý do đa số Go chọn nó.