Architecture Cơ bản
“Code đang rối, hay là tách microservice?” trộn hai vấn đề. Tổ chức code và đơn vị triển khai là hai trục độc lập: một deployment vẫn có thể có module rõ ràng, và nhiều service vẫn có thể dính chặt nếu luôn phải deploy cùng nhau.
Lộ trình đọc
Phần tiêu đề “Lộ trình đọc”| Thứ tự | Bài | Câu hỏi nó trả lời |
|---|---|---|
| 1 | Monolith, modular monolith, microservices | Nên tách process chưa? Tín hiệu nào đo được? Ép ranh giới module bằng gì? |
| 2 | Bounded context | Đâu là nơi một model còn nhất quán? Các context nối với nhau theo pattern nào? |
| 3 | Hexagonal & clean architecture | Khi nào đáng tách lõi nghiệp vụ khỏi framework? Port, adapter, dependency rule và cái giá phải trả? |
| 4 | CQRS và event sourcing | Khi nào read model riêng đáng làm, khi nào event sourcing đáng cái giá của nó? Projection, snapshot và xoá dữ liệu cá nhân hoạt động thế nào? |
Hai bài bổ sung nhau
Phần tiêu đề “Hai bài bổ sung nhau”- Bài 1 hỏi “tách thành mấy deployment” và cho bảng so sánh ba kiểu kiến trúc cùng các tín hiệu quyết định (co-change, chờ deploy, tải lệch).
- Bài 2 hỏi “ranh giới model nằm ở đâu”: phân biệt subdomain với bounded context, vẽ context map, và tách Published Language (phía upstream) khỏi ACL (phía downstream).
Đọc kèm
Phần tiêu đề “Đọc kèm”- Adapter pattern: cách hiện thực lớp dịch (ACL) ở ranh giới tích hợp.
- Strategy pattern: tách phần biến thiên ở cấp nhỏ hơn.
- Tám ngộ nhận về hệ phân tán: những giả định hỏng khi lời gọi trong process thành lời gọi qua mạng.
- Transactional outbox: phát event cùng transaction khi vượt ranh giới.