지속적인 통합과 관련된 오버 헤드가 있습니다 (예 : 설정, 재교육, 인식 활동, 데이터 문제로 판명되는 "버그"수정을위한 중지, 프로그래밍 스타일의 강제 분리 등).
지속적인 통합은 어떤 시점에서 비용을 지불합니까?
편집 : 이들은 나의 발견이었다
설정은 VSS 또는 TFS에서 읽은 Nant와 함께 CruiseControl.Net이었습니다.
다음은 설정과 관련이없는 몇 가지 실패 이유입니다.
조사 비용 : 코드, 데이터 품질 또는 인프라 문제 (예 : 네트워크 문제, 소스 제어에서 시간 초과 읽기, 타사 서버)와 같은 다른 소스에서 빨간색 표시등이 논리적으로 일관성이 없는지 여부를 조사하는 데 소요 된 시간 다운 등)
인프라에 대한 정치적 비용 : 테스트 실행의 각 방법에 대해 "인프라"검사를 수행하는 것을 고려했습니다. 빌드 서버를 교체하는 것 외에는 시간 초과에 대한 해결책이 없었습니다. 빨간 테이프가 방해를 받고 서버 교체가 없었습니다.
단위 테스트 수정 비용 : 데이터 품질 문제로 인한 빨간색 표시등은 잘못 작성된 단위 테스트의 지표 일 수 있습니다. 따라서 데이터 의존성 단위 테스트가 다시 작성되어 나쁜 데이터로 인한 적색 등의 가능성을 줄였습니다. 많은 경우, 단위 테스트를 정확하게 실행할 수 있도록 테스트 환경에 필요한 데이터가 삽입되었습니다. 데이터를보다 견고하게 만들면이 데이터에 의존하는 경우 테스트가 더욱 강력 해집니다. 물론 이것은 잘 작동했습니다!
적용 비용, 즉 기존 코드에 대한 단위 테스트 작성 : 단위 테스트 범위에 문제가있었습니다. 단위 테스트가없는 수천 가지 방법이있었습니다. 따라서이를 만들려면 상당한 양의 인력이 필요합니다. 이것이 비즈니스 사례를 제공하기에는 너무 어려울 것이기 때문에, 앞으로 새로운 공개 방법에 대해 단위 테스트를 사용하기로 결정했습니다. 단위 테스트가없는 것을 '잠재적 적외선'이라고합니다. 여기서 중요한 점은 정적 메소드가 특정 정적 메소드가 실패한 방법을 고유하게 판별하는 방법에있어 어려운 점이라는 점입니다.
맞춤형 출시 비용 : Nant 스크립트는 지금까지만 진행되었습니다. 예를 들어 EPiServer, CMS 또는 UI 지향 데이터베이스 배포를위한 CMS 종속 빌드에는 유용하지 않습니다.
시간별 테스트 실행 및 야간 QA 빌드를 위해 빌드 서버에서 발생한 문제 유형입니다. 필자는 빌드 마스터가 릴리스시, 특히 하나의 맨 밴드와 작은 빌드로 이러한 작업을 수동으로 수행 할 수 있기 때문에 이러한 작업이 필요하지 않다는 점을 기쁘게 생각합니다. 따라서 단일 단계 빌드는 내 경험에서 CI 사용을 정당화하지 못했습니다. 더 복잡한 다단계 빌드는 어떻습니까? 특히 Nant 스크립트가 없으면 빌드하기가 어려울 수 있습니다. 따라서 하나를 만들었더라도 더 이상 성공하지 못했습니다. 적색 등 문제를 해결하는 데 드는 비용이 이점을 능가했습니다. 결국 개발자는 관심을 잃고 홍등의 타당성에 의문을 제기했습니다.
공정한 시도를 한 결과 CI가 비싸고 단지 작업을 수행하는 대신 많은 노력을 기울이고 있다고 생각합니다. 경보 시스템을 도입하고 유지 관리하는 것보다 대규모 프로젝트를 엉망으로 만들지 않는 숙련 된 개발자를 고용하는 것이 더 비용 효율적입니다.
이러한 개발자가 떠나도 마찬가지입니다. 그가 따르는 프로세스는 요구 사양, 디자인 사양, 코딩 가이드 라인을 고수하고 코드를 읽을 수 있도록 코드에 주석을 달아야하기 때문에 좋은 개발자가 떠나더라도 문제가되지 않습니다. 이 모든 것이 검토됩니다. 이런 일이 일어나지 않으면 그의 팀 리더는 자신의 직무를 수행하지 않는 것입니다.
CI가 작동하기 위해서는 단위 테스트 만 작성하고, 전체 범위를 유지하고, 규모가 큰 시스템을위한 작동 인프라를 확보하는 것만으로는 충분하지 않습니다.
결론 : 릴리스 전에 많은 버그를 수정하는 것이 비즈니스 관점에서 바람직한 지 여부에 의문을 가질 수 있습니다. CI에는 고객이 UAT에서 식별하거나 보증 기간이 만료 될 때 고객 서비스 계약의 일부로 회사가 수리 비용을 지불 할 수있는 몇 가지 버그를 포착하기위한 많은 작업이 필요합니다.