- Monolith: toàn bộ ứng dụng trong một codebase/deploy. Ưu: đơn giản, dễ dev/test/deploy lúc đầu, gọi hàm trong tiến trình rất nhanh, không có độ phức tạp phân tán. Nhược: khi lớn thì build/deploy chậm, coupling tăng, khó scale từng phần.
- Microservices: chia thành nhiều dịch vụ nhỏ, deploy độc lập, mỗi dịch vụ sở hữu dữ liệu riêng. Ưu: scale và deploy độc lập, đội nhóm tự chủ, cô lập lỗi tốt hơn. Nhược: độ phức tạp phân tán (mạng, nhất quán, quan sát), chi phí vận hành cao, test end-to-end khó.
Lời khuyên thực tế (monolith-first): bắt đầu bằng monolith được module hóa tốt; tách microservice khi đội nhóm/domain đã đủ lớn và ranh giới rõ. Tách sớm dễ trả giá cho phức tạp không cần thiết.