Tôi đã nghiên cứu các kiến trúc microservice cố gắng có được một cái nhìn tổng quan ở mức độ cao về tất cả các ưu và nhược điểm, whens và whys, v.v. Rất nhiều thông tin tôi đang đọc / xem đến từ Th thinkWorks (Martin Fowler, Neal Ford, et al).
Hầu hết các tác phẩm của Martin Fowler về chủ đề này đều đã được vài năm tuổi, khi microservice (như một tên hộ gia đình trong lập trình, nếu không phải trong thực tế nói chung) vẫn còn trẻ, do đó tôi dùng nhiều hạt muối.
Một điều đặc biệt là đây:
Khi tôi nghe những câu chuyện về các đội sử dụng kiến trúc microservice, tôi đã nhận thấy một mô hình chung.
- Hầu như tất cả các câu chuyện microservice thành công đã bắt đầu với một tảng đá quá lớn và đã bị phá vỡ
- Hầu như tất cả các trường hợp tôi đã nghe nói về một hệ thống được xây dựng như một hệ thống microservice từ đầu, nó đã gặp rắc rối nghiêm trọng.
Mô hình này đã khiến nhiều đồng nghiệp của tôi lập luận rằng bạn không nên bắt đầu một dự án mới với microservice, ngay cả khi bạn chắc chắn rằng ứng dụng của bạn sẽ đủ lớn để làm cho nó đáng giá. .
(ref: https://martinfowler.com/bliki/MonolithFirst.html - nhấn mạnh họ)
Bây giờ, 3 năm sau và với microservice một thuật ngữ phổ biến hơn, nói chung có thể đồng ý rằng một hệ thống mới thường được phục vụ tốt hơn bằng cách có các khối dịch vụ lớn hơn (-than-microservice-but-small-than-monolith) để bắt đầu và thực hiện chúng chi tiết hơn như là một phần của một biện pháp tiến hóa?
Hoặc, có một tiêu chuẩn để bắt đầu một dự án từ đầu với kiến trúc microservice dạng hạt, trái ngược với các tuyên bố trên không?
Có vẻ như một cách tiếp cận chung lành mạnh, nhưng tò mò về suy nghĩ của cộng đồng.