Có một chi phí liên quan đến tích hợp liên tục, ví dụ: thiết lập, đào tạo lại, các hoạt động nhận thức, ngừng hoạt động để sửa các "lỗi" hóa ra là vấn đề dữ liệu, thực thi tách biệt các kiểu lập trình quan ngại, v.v.
Tại thời điểm nào tích hợp liên tục trả tiền cho chính nó?
EDIT: Đây là những phát hiện của tôi
Thiết lập là CruiseControl.Net với Nant, đọc từ VSS hoặc TFS.
Dưới đây là một vài lý do cho sự thất bại, không liên quan gì đến việc thiết lập:
Chi phí điều tra : Thời gian điều tra xem đèn đỏ có phải là do sự không nhất quán logic thực sự trong mã, chất lượng dữ liệu hoặc một nguồn khác như sự cố cơ sở hạ tầng (ví dụ: sự cố mạng, thời gian chờ đọc từ kiểm soát nguồn, máy chủ bên thứ ba đang giảm, v.v.)
Chi phí chính trị đối với cơ sở hạ tầng : Tôi đã cân nhắc thực hiện kiểm tra "cơ sở hạ tầng" cho từng phương pháp trong quá trình chạy thử. Tôi không có giải pháp nào cho thời gian chờ ngoại trừ việc thay thế máy chủ xây dựng. Băng đỏ cản đường và không có máy chủ thay thế.
Chi phí sửa chữa các bài kiểm tra đơn vị : Đèn đỏ do vấn đề chất lượng dữ liệu có thể là một chỉ báo của bài kiểm tra đơn vị được viết kém. Vì vậy, các thử nghiệm đơn vị phụ thuộc dữ liệu đã được viết lại để giảm khả năng đèn đỏ do dữ liệu xấu. Trong nhiều trường hợp, dữ liệu cần thiết đã được chèn vào môi trường thử nghiệm để có thể chạy chính xác các thử nghiệm đơn vị của nó. Thật ý nghĩa khi nói rằng bằng cách làm cho dữ liệu mạnh mẽ hơn thì thử nghiệm sẽ trở nên mạnh mẽ hơn nếu nó phụ thuộc vào dữ liệu này. Tất nhiên, điều này làm việc tốt!
Chi phí bảo hiểm, nghĩa là viết các bài kiểm tra đơn vị cho mã đã có sẵn : Có vấn đề về phạm vi kiểm tra đơn vị. Có hàng ngàn phương pháp không có bài kiểm tra đơn vị. Vì vậy, một số lượng lớn ngày người sẽ cần thiết để tạo ra chúng. Vì điều này quá khó để cung cấp một trường hợp kinh doanh, nên đã quyết định rằng các thử nghiệm đơn vị sẽ được sử dụng cho bất kỳ phương pháp công khai mới nào trong tương lai. Những người không có bài kiểm tra đơn vị được gọi là "có khả năng hồng ngoại". Một điểm đáng chú ý ở đây là các phương thức tĩnh là một điểm cần thiết để làm thế nào có thể xác định duy nhất cách thức một phương thức tĩnh cụ thể đã thất bại.
Chi phí phát hành bespoke : kịch bản Nant chỉ đi cho đến nay. Chúng không hữu ích đối với các bản dựng phụ thuộc CMS cho EPiServer, CMS hoặc bất kỳ triển khai cơ sở dữ liệu hướng UI nào.
Đây là các loại sự cố xảy ra trên máy chủ bản dựng để chạy thử hàng giờ và bản dựng QA qua đêm. Tôi giải trí rằng những thứ này là không cần thiết vì một bậc thầy xây dựng có thể thực hiện các tác vụ này một cách thủ công tại thời điểm phát hành, đặc biệt, với một ban nhạc một người đàn ông và một bản dựng nhỏ. Vì vậy, các bước xây dựng đơn lẻ chưa chứng minh việc sử dụng CI theo kinh nghiệm của tôi. Điều gì về các bản dựng phức tạp hơn, nhiều bước? Đây có thể là một nỗi đau để xây dựng, đặc biệt là không có một kịch bản tiếng Nam. Vì vậy, ngay cả khi đã tạo ra một, những thứ này không còn thành công nữa. Các chi phí sửa chữa các vấn đề đèn đỏ vượt xa lợi ích. Cuối cùng, các nhà phát triển đã mất hứng thú và đặt câu hỏi về tính hợp lệ của đèn đỏ.
Đã cho nó một sự cố gắng công bằng, tôi tin rằng CI là đắt tiền và có rất nhiều công việc xung quanh các cạnh thay vì chỉ hoàn thành công việc. Đó là hiệu quả chi phí hơn để sử dụng các nhà phát triển có kinh nghiệm, những người không tạo ra một mớ hỗn độn của các dự án lớn hơn là giới thiệu và duy trì một hệ thống báo động.
Đây là trường hợp ngay cả khi những nhà phát triển rời đi. Sẽ không có vấn đề gì nếu một nhà phát triển giỏi rời đi vì các quy trình mà anh ta tuân theo sẽ đảm bảo rằng anh ta viết các thông số kỹ thuật yêu cầu, thông số kỹ thuật thiết kế, tuân thủ các nguyên tắc mã hóa và nhận xét mã của mình để có thể đọc được. Tất cả điều này được xem xét. Nếu điều này không xảy ra thì trưởng nhóm của anh ta không làm việc của mình, điều này nên được người quản lý của anh ta chọn và cứ thế.
Để CI hoạt động, việc viết các bài kiểm tra đơn vị, cố gắng duy trì phạm vi bảo hiểm đầy đủ và đảm bảo cơ sở hạ tầng hoạt động cho các hệ thống khá lớn là không đủ.
Điểm mấu chốt: Người ta có thể đặt câu hỏi liệu việc sửa nhiều lỗi trước khi phát hành có được mong muốn từ quan điểm kinh doanh hay không. CI liên quan đến rất nhiều công việc để nắm bắt một số lỗi mà khách hàng có thể xác định trong UAT hoặc công ty có thể được trả tiền để sửa chữa như một phần của thỏa thuận dịch vụ khách hàng khi hết thời hạn bảo hành.