Làm thế nào để tránh phân nhánh với các tổ chức lớn?


10

Làm thế nào để bạn tránh một tình huống phân nhánh khi làm việc với các tổ chức lớn?

Chúng tôi làm việc với một số tổ chức tài chính lớn có cách tiếp cận là không cập nhật phần mềm, mà thay vào đó chỉ là các bản vá bảo mật cao / quan trọng và chức năng bespoke. Các tổ chức này sẽ chỉ lấy các bản vá và phát hành tùy chỉnh ở giữa các bản cập nhật lớn. Các cập nhật lớn có thể cách nhau nhiều năm và mang chi phí cao. Cách tiếp cận này khiến chúng tôi (nhà phần mềm) có một nhánh mã của chúng tôi cho mỗi khách hàng lớn, mang tất cả các chi phí và sự thiếu hiệu quả của việc phân nhánh dài hạn.

Câu hỏi của tôi cho cộng đồng là:

  • Bạn đã có kinh nghiệm tiếp cận chấp nhận cập nhật tương tự từ khách hàng của bạn?
  • Bạn có đề xuất gì để giúp làm việc với phương pháp này?
  • Bạn có đề xuất gì để giúp thay đổi cách tiếp cận của các tổ chức trong việc cập nhật phần mềm?

Này Mark, có vẻ như bạn có một tình huống khó xử thú vị. Làm thế nào để bạn quản lý phát triển những cập nhật trên mỗi khách hàng? Bạn có phát triển chúng trên cơ sở một lần cho mỗi khách hàng hay đó là thứ bạn phát triển và áp dụng cho tất cả khách hàng?
PrestonM

Cá nhân, tôi có thể tìm kiếm việc làm khác trong tình huống này. Điều này nghe có vẻ như là một sự cố bảo mật đang chờ xảy ra ... Tôi có thể nói với bạn về nhà cung cấp thiết bị mà tôi đã làm việc, họ có một lỗi lớn đã được sửa trong bản cập nhật mà họ báo cáo là không thể xảy ra. Họ muốn sửa chữa tùy chỉnh. Chúng tôi đã từ chối xây dựng chúng và nói với họ rằng họ cần phải sửa chữa các chính sách kinh doanh của mình - chúng tôi sẽ không đưa ra một hotfix tùy chỉnh cho một lỗi mà chúng tôi đã vá để họ có thể tránh các vấn đề chính trị nội bộ.
James Shewey

Chúng tôi quản lý các bản cập nhật cụ thể của khách hàng thông qua nhiều nhánh mã và sửa lỗi cập nhật bảo mật cho tất cả các nhánh và sửa lỗi mã nhánh trở lại vào thân cây. Thông thường khách hàng A sẽ không lấy bản cập nhật của khách hàng B trong chi nhánh của họ, họ sẽ chỉ lấy bản cập nhật và bản vá bảo mật của riêng họ. Điều này được thúc đẩy bởi mong muốn sự ổn định trong chi nhánh của họ và vì vậy họ chỉ phải kiểm tra các bản cập nhật liên quan đến họ. Họ thực hiện cập nhật trung kế ít thường xuyên hơn (tức là vài tháng đến nhiều năm) khi họ sẵn sàng chạy các bản chạy thử hoàn chỉnh, có thể mất vài tháng để hoàn thành. Kiểm tra tự động có thể là câu trả lời!
Mark Wheeler

Câu trả lời:


3

Như Michael đã đề cập, cung cấp một giải pháp tiêu chuẩn dựa trên các phiên bản / số phát hành, với tuổi thọ khá dài cho ngành của bạn (có thể xen kẽ với một hoặc nhiều phiên bản trung gian có tuổi thọ ngắn hơn, nếu nó hợp lý với khách hàng tiêu biểu của bạn).

Cung cấp cho khách hàng của bạn tùy chọn bắt tay vào bản phát hành tiêu chuẩn này, có thể với thời hạn di chuyển hợp lý.

Nếu họ nhấn mạnh vào chiến lược hỗ trợ chi nhánh tùy chỉnh đầy đủ, chỉ cần tính phí cho họ, để trang trải đúng tất cả các chi phí bổ sung của bạn để cung cấp hỗ trợ tùy chỉnh đầy đủ như vậy - điều đó chỉ có ý nghĩa kinh doanh. Một số khách hàng sẽ di chuyển để giảm chi phí của họ (điều này sẽ giúp bạn giảm số lượng chi nhánh tùy chỉnh), một số sẽ không.

Thanh toán hỗ trợ biến đổi, tăng dần theo tuổi của các phiên bản phát hành mà các nhánh tùy chỉnh bắt nguồn cũng có thể là một động lực để khách hàng di chuyển đến các chi nhánh mới nhanh hơn, giúp đóng các nhánh tùy chỉnh cũ nhanh hơn. Điều này có thể giúp giảm số lượng chi nhánh tùy chỉnh trên mỗi khách hàng - nếu bạn có khách hàng chạy đồng thời nhiều phiên bản phần mềm của bạn.

Hãy chắc chắn rằng bạn không rơi vào bẫy thực hiện sáp nhập toàn bộ chi nhánh từ / đến bất kỳ nhánh phát hành nào (cả tiêu chuẩn và tùy chỉnh), tất cả các thay đổi đối với chúng phải là các bản sửa lỗi được hợp nhất được phát triển riêng lẻ hoặc được chọn.

Bởi vì mỗi nhánh này sẽ dần dần phân tách khỏi nhau, số lượng hotfix yêu cầu tùy chỉnh / phát triển riêng lẻ sẽ tăng theo cấp số nhân (việc hợp nhất chọn cherry đơn giản sẽ thất bại). Bạn cần phải tính chi phí phát triển cho những điều này.

Không có sự hợp nhất nhánh nào (đáng kể) trong hình ảnh mà bạn có thể (và nên, tôi không thể nhấn mạnh đủ tầm quan trọng của nó) xây dựng các đường ống CI / CD hoàn toàn tự động cho các nhánh này, đi kèm với một hệ thống quản lý / theo dõi hotfix tốt, giúp phân phối hotfix chỉ là thói quen (hoặc gần như).


Dan - rất rõ ràng và đơn giản nhưng nó có ý nghĩa hoàn hảo. Tiền làm cho thế giới quay vòng và lần lượt sẽ giúp chúng ta bù đắp chi phí cho các chi nhánh tồn tại lâu dài hoặc khuyến khích khách hàng nâng cấp và ở gần thân cây. Cảm ơn bạn cho lời khuyên tốt.
Mark Wheeler

1

Có lẽ nếu bạn duy trì chi nhánh cho mỗi phiên bản thay vì mỗi khách hàng, điều đó có thể giúp giảm số lượng của họ không?

Mặt khác, cách duy nhất để thực sự thoát khỏi nó là có thể tự lưu trữ phần mềm và chuyển sang mô hình SaaS nơi bạn chỉ có thể duy trì một phiên bản của nó.


Thật không may, khách hàng của chúng tôi thường hoạt động trong môi trường rất im lặng vì dữ liệu tài chính mà họ đang làm việc, vì vậy mô hình SaaS sẽ không được chấp nhận.
Mark Wheeler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.