Kiến trúc monolithic xây dựng một ứng dụng như một khối thống nhất duy nhất, trong khi kiến trúc microservices xây dựng nó như nhiều service nhỏ, độc lập. Mỗi cách có những trade-off đáng kể về độ phức tạp, scalability, deployment, và tổ chức nhóm.
Monolith vs microservices
MONOLITH → toàn bộ ứng dụng như MỘT đơn vị triển khai (một codebase, một process):
✓ ĐƠN GIẢN → ban đầu dễ phát triển, test, deploy và debug hơn; không có độ phức tạp phân tán
✗ ở quy mô lớn → khó scale từng phần độc lập; codebase lớn trở nên phức tạp; một
lần deploy cho tất cả; một bug có thể ảnh hưởng tất cả
MICROSERVICES → nhiều service nhỏ, ĐỘC LẬP (mỗi cái sở hữu một năng lực + dữ liệu của nó):
✓ SCALING, DEPLOYMENT và nhóm độc lập; linh hoạt công nghệ; cô lập lỗi
✗ ĐỘ PHỨC TẠP PHÂN TÁN → gọi qua network, consistency dữ liệu xuyên service, độ phức tạp
deployment/vận hành, debug xuyên service, nhiều hạ tầng hơn
