Chúng tôi đang thiết kế một hệ thống dựa trên các dịch vụ siêu nhỏ độc lập (được kết nối qua xe buýt RabbitMq). Mã sẽ (ít nhất là cho các thành phần đầu tiên) được viết bằng python (cả python2 và python3). Chúng tôi đã có một ứng dụng nguyên khối triển khai một số logic nghiệp vụ mà chúng tôi muốn cấu trúc lại dưới dạng microservice và mở rộng. Một câu hỏi khiến tôi lo lắng là:
Cách tốt nhất để chia sẻ mã giữa các microservice khác nhau là gì. Chúng tôi có các chức năng trợ giúp chung (xử lý dữ liệu, ghi nhật ký, phân tích cấu hình, v.v.), phải được một số microservice sử dụng.
Các microservice sẽ được phát triển thành các dự án riêng biệt (kho git). Các thư viện chung có thể được phát triển như một dự án khép kín. Làm cách nào để chia sẻ các thư viện này giữa các dịch vụ?
Tôi thấy một số cách tiếp cận:
- sao chép xung quanh phiên bản của thư viện cần thiết cho mỗi microservice và cập nhật khi cần
- phát hành các thư viện chung cho PyPi nội bộ và liệt kê các thư viện đó dưới dạng phụ thuộc trong các yêu cầu của microservice
- bao gồm kho thư viện như là một mô hình con git
Tôi muốn đọc thêm một chút về các phương pháp được đề xuất, thực tiễn tốt nhất, kinh nghiệm trong quá khứ trước khi quyết định cách tiến hành. Bạn có bất kỳ đề nghị hoặc liên kết?
fib(n)
(triển khai chuỗi trò chơi). Bạn không muốn lặp lại việc thực hiện đó trong mỗi microservice. Điều đó thuộc về một utils
thư viện (phiên bản, cho các tính năng và sửa lỗi). Đó không phải là nguyên khối phân tán, đó chỉ là một lớp chức năng phổ biến. Câu hỏi của tôi là làm thế nào để xử lý lớp này ở mức thực hiện?