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

Clean Architecture trong Go: hướng phụ thuộc mà compiler tự ép

Clean Architecture đặt logic nghiệp vụ ở trung tâm, mọi phụ thuộc chỉ trỏ vào trong. Đo thật trong Go 1.23: domain định nghĩa interface (port), infra hiện thực, và lệnh cấm import cycle của Go biến quy tắc kiến trúc thành lỗi biên dịch — bạn không thể làm domain phụ thuộc hạ tầng.

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

Hexagonal (ports và adapters) trong Go: lõi ở giữa, đổi adapter không đụng lõi

Kiến trúc Hexagonal đặt lõi nghiệp vụ ở trung tâm với ports hai phía: driving (lõi cung cấp) và driven (lõi cần). Đo thật trong Go 1.23: đổi adapter gửi thông báo từ email sang SMS mà lõi không đổi một dòng, lõi cô lập hoàn toàn, và test lõi bằng spy không cần I/O thật.

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.