Tôi đang bắt đầu một dự án mới tại nơi làm việc và có khả năng sẽ gần như là nhà phát triển duy nhất trong dự án, mặc dù một hoặc hai nhà phát triển khác sẽ cần tích hợp các ứng dụng hiện có hoặc các tập lệnh đơn giản vào dự án chính. Dự án cần xử lý việc xử lý / xử lý dữ liệu hàng loạt và truyền dữ liệu quy mô nhỏ và cả thực thi mã theo yêu cầu và theo yêu cầu. Một số phần của khung sẽ bị ràng buộc nhiều bởi CPU và một số phần có thể bị ràng buộc I / O nặng; hầu hết dữ liệu phải nằm trên một máy, nhưng chúng tôi có thể tạo một cụm và kết nối VM để tăng sức mạnh tính toán có sẵn. Có thể sẽ có một hoặc nhiều ứng dụng web nhỏ phụ thuộc vào các dịch vụ được cung cấp khung cốt lõi này. Ngôn ngữ chính sẽ là Python cho mọi thứ.
Câu hỏi của tôi là liệu tôi nên thực hiện một cách tiếp cận microservice cho một nỗ lực như thế này hay gắn bó với một ứng dụng nguyên khối, với điều kiện là tôi sẽ tự mình thực hiện hầu hết sự phát triển. Tôi nghĩ rằng microservice (sử dụng Nameko) cung cấp sự phân tách tự nhiên giữa các yếu tố của khung có các mô hình thực thi khác nhau (đường ống dữ liệu, khởi chạy sự kiện, theo yêu cầu, ứng dụng web, v.v.) và cách rõ ràng để phân phối khối lượng công việc và giao tiếp qua nhiều quá trình. Mối quan tâm của tôi là có lẽ tôi sẽ kết thúc với cụm Kubernetes để quản lý (Tôi quen thuộc với Docker, nhưng vẫn còn khá mới đối với Kubernetes), nhiều dịch vụ (rabbitmq, redis, v.v.) chỉ cần để hỗ trợ chạy hệ thống, và có khả năng rất nhiều đoạn mã nhỏ để thực sự triển khai tất cả các khả năng cần thiết mà chúng ta '
Đối với một dự án có ít hơn một nhà phát triển, liệu microservice vẫn đơn giản hóa việc phát triển và duy trì một hệ thống phức tạp như thế này? Có phương pháp / hệ thống / khung nào tôi nên xem xét sử dụng thay thế, hoặc để giảm chi phí liên quan đến việc thiết kế hệ thống theo cách này không?