Khi nói đến microservice, vòng đời phát triển của dịch vụ cũng phải độc lập. *
SLDC khác nhau và các nhóm phát triển khác nhau
trong một hệ thống MS thực sự, có thể có một số nhóm tham gia vào việc phát triển hệ sinh thái, mỗi nhóm phụ trách một hoặc nhiều dịch vụ. Đổi lại, các nhóm này có thể được đặt tại các văn phòng, thành phố, quốc gia, kế hoạch khác nhau ... Có lẽ, họ thậm chí không biết nhau, điều này khiến việc chia sẻ kiến thức hoặc mã rất khó khăn (nếu có thể). Nhưng điều này có thể rất thuận tiện vì mã được chia sẻ cũng bao hàm một loại lý do chia sẻ và một điều quan trọng cần nhớ lại là, bất cứ điều gì có ý nghĩa đối với một nhóm cụ thể, không phải làm cho nhóm khác. Ví dụ: được cung cấp cho Khách hàng DTO , nó có thể khác nhau tùy thuộc vào dịch vụ đang chơi, bởi vì khách hàng được hiểu (hoặc nhìn thấy) khác nhau từ mỗi dịch vụ.
Nhu cầu khác nhau, công nghệ khác nhau
SLDC bị cô lập cũng cho phép các đội chọn ngăn xếp phù hợp nhất với nhu cầu của họ. Việc áp dụng các DTO được triển khai trong một công nghệ cụ thể sẽ hạn chế khả năng lựa chọn của các đội.
DTO không phải là quy tắc kinh doanh hay hợp đồng dịch vụ
DTOs thực sự là gì? Các đối tượng đơn giản không có mục tiêu nào khác ngoài việc di chuyển dữ liệu từ bên này sang bên khác. Túi của getters và setters. Nhìn chung, đây không phải là loại "kiến thức" đáng để sử dụng lại vì không có kiến thức nào cả. Sự biến động của họ cũng làm cho họ trở thành ứng cử viên tồi cho khớp nối.
Trái với những gì Dherik đã tuyên bố, nó phải có khả năng cho một dịch vụ để thay đổi DTOs của nó mà không cần phải thực hiện các dịch vụ khác để thay đổi cùng một lúc. Dịch vụ nên được độc giả khoan dung, nhà văn khoan dung và không khoan dung . Mặt khác, chúng gây ra khớp nối theo cách làm cho kiến trúc dịch vụ trở nên vô nghĩa. Một lần nữa, và trái với câu trả lời của Dherik, nếu ba dịch vụ cần chính xác các DTO giống nhau, thì có khả năng đã xảy ra sự cố trong quá trình phân tách dịch vụ.
Kinh doanh khác nhau, giải thích khác nhau
Mặc dù có thể có (và sẽ có) các khái niệm xuyên suốt giữa các dịch vụ, nhưng điều đó không có nghĩa là chúng ta phải áp đặt một mô hình chính tắc để buộc tất cả các dịch vụ diễn giải chúng theo cùng một cách.
Nghiên cứu điển hình
Nói rằng công ty chúng tôi có ba bộ phận, Dịch vụ khách hàng , Bán hàng và Vận chuyển . Nói mỗi trong số này phát hành một hoặc nhiều dịch vụ.
Dịch vụ khách hàng, do ngôn ngữ miền của nó , thực hiện các dịch vụ xung quanh khái niệm khách hàng, nơi khách hàng là người . Chẳng hạn, khách hàng được mô hình hóa như tên , họ , tuổi , giới tính , email , điện thoại , v.v.
Bây giờ hãy nói, Bán hàng và Vận chuyển cũng mô hình hóa các dịch vụ của họ theo ngôn ngữ tên miền tương ứng. Trong các ngôn ngữ này, khách hàng khái niệm cũng xuất hiện nhưng với một sự khác biệt tinh tế. Đối với họ, khách hàng không phải là (nhất thiết) người . Đối với bán hàng , khách hàng có một số tài liệu một thẻ tín dụng và địa chỉ thanh toán , cho Vận chuyển một tên đầy đủ và địa chỉ vận chuyển quá.
Nếu chúng tôi buộc Sales và Shipping áp dụng mô hình dữ liệu chính tắc của Dịch vụ khách hàng , chúng tôi buộc họ phải xử lý các dữ liệu không cần thiết có thể gây ra sự phức tạp không cần thiết nếu họ phải duy trì toàn bộ đại diện và giữ dữ liệu khách hàng đồng bộ với dịch vụ khách hàng .
Liên kết liên quan
* Đây là điểm mạnh của kiến trúc này
proto
tệp cho gRPC hoặcavro
lược đồ cho Kafka và tạo DTO trong cả hai dịch vụ, nhưng tôi sẽ không chia sẻ thư viện dùng chung giữa hai dự án.