"... chúng tôi đã kết luận rằng một số kho lưu trữ nhỏ là lựa chọn rẻ hơn."
Thật tuyệt. Phân chia và chinh phục. Bạn chia nỗ lực thành những mảnh hợp lý, đưa từng mảnh cho một nhóm khó tính khác nhau, làm việc như điên trong vài tháng, mang mọi thứ lại với nhau, và ...
và ...
Chà, nó sẽ là một cơn ác mộng chết tiệt. Nó chắc chắn sẽ không rẻ hơn. Tại sao nó sẽ là?
"Chi phí" lớn nhất trong bất kỳ dự án phần mềm nào là truyền thông. Bạn không tiết kiệm tiền bằng cách viết mã nhanh hơn. Đó là những lập trình viên bí mật sẽ không thừa nhận. ( Psst. Đừng nói với ai. Thực sự không quan trọng bạn viết mã nhanh như thế nào. ) Thời gian viết mã hoàn toàn bị thu hẹp bởi thời gian dành cho việc lên kế hoạch và nói chuyện và đàm phán và chiến đấu và nói chuyện và gặp gỡ và nói chuyện nhiều hơn và thỏa hiệp và nhận ra bạn không nên thỏa hiệp và hứa sẽ làm tốt hơn và la hét và ước muốn và "giải quyết" (đó không phải là một từ, chết tiệt) và lặp đi lặp lại và vỗ về và nói chuyện và không thể ngủ.
Vì vậy, bạn chia công việc của bạn thành các phần riêng biệt và trao từng phần cho một nhóm riêng biệt. Bạn vừa làm gì vậy? Bạn thêm gánh nặng giao tiếp. Nếu bạn may mắn vàcác nhóm của bạn rất hoàn hảo, hoàn toàn không có sự khác biệt về chi phí giữa một kho lưu trữ lớn và một vài kho nhỏ. Nếu bạn không may mắn (một số ít), việc chia thành các nhóm riêng biệt sẽ thực sự tốn kém hơn. Nó đủ khó để duy trì đồng bộ khi tất cả các bạn ở trong cùng một cơ sở mã, bước lên từng ngón chân của nhau. Bây giờ hãy tưởng tượng sẽ khó đến mức nào khi ba đội khác nhau nghĩ rằng các yêu cầu có nghĩa là hơi khác một chút (không có cách nào sửa nhanh vì họ không phá vỡ nội dung của các đội khác), có văn hóa hơi khác nhau, và cuối cùng, là Rất có động lực để tránh đổ lỗi khi mọi thứ đi sai, vì vậy họ sẵn sàng ném các đội khác xuống xe buýt.
Tôi biết, tôi biết ... đội của bạn tốt hơn thế. Nhưng họ có thực sự? Bạn có đủ tự tin để đặt cược tiền vào nó?
Hãy nhìn xem, trong cả hai cách tiếp cận (repo lớn / nhiều repos nhỏ) bạn sẽ phải chế giễu một đống tào lao ngay từ đầu. Bạn bắt đầu làm việc mù. Càng sớm càng tốt, ngay khi chúng có sẵn, bạn nên bắt đầu sử dụng các triển khai cụ thể từ các lớp khác. Điều này sẽ xác định vấn đề và hiểu lầm sớm. Chắc chắn, nó sẽ có một chút gập ghềnh, nhưng đó là một địa ngục ít gập ghềnh hơn là phát triển độc lập với một thông số run rẩy và một cái bắt tay, và sau đó gấp mọi thứ lại với nhau muộn.
Quan điểm của tôi là, repo lớn / repos nhỏ không phải là vấn đề. Điều quan trọng là cách bạn cấu trúc các đội của bạn. Lý tưởng nhất, các nhóm của bạn có bản sắc độc lập nhỏ trong một bản sắc gắn kết lớn hơn. Kinda giống như các cơ quan trong một sinh vật hoặc có thể là nấm mốc . Bất kể bạn cấu trúc mã như thế nào, hãy cho mọi người cơ hội va vào nhau. Làm cho giao tiếp dễ dàng. Cùng mắc lỗi và sửa chúng sớm và thường xuyên.