지속적인 통합
CI(지속적인 통합)는 하루에 여러 번 시스템의 깔끔한 빌드를 생성하는 것을 포함합니다.
지속적 통합(CI)은 일반적으로 Ant와 다양한 소스 제어 시스템을 사용하는 CruiseControl과 같은 도구를 사용하여 하루에 여러 번 시스템의 깔끔한 빌드를 생성하는 것을 포함합니다. 애자일 팀은 일반적으로 CI를 자동화된 컴파일, 단위 테스트 실행, 소스 제어 통합을 포함하도록 구성합니다. 경우에 따라 CI는 FitNesse를 사용하여 개발한 것과 같은 자동화된 인수 테스트를 자동으로 실행하는 것을 포함합니다. 실제로 CI는 빌드가 거의 항상 깔끔함을 의미합니다.
지속적인 통합 기술, 도구 및 정책
CI가 잘 작동하려면 몇 가지 구체적인 관행이 필요한 것 같습니다. 그의 사이트에서마틴 파울러는 지속적 통합이 무엇이고, 어떻게 구현할 수 있는지에 대해 길고 자세한 설명을 제공합니다.
널리 사용되는 CI 규칙 중 하나는 프로그래머가 하루가 끝날 때 어떤 것도 통합되지 않은 상태로 두지 않는다는 것입니다. 빌드는 결코 손상된 상태로 밤을 보내서는 안 됩니다. 이는 프로그래밍 팀에 어느 정도 작업 계획 원칙을 요구합니다. 더 나아가, 체크인 시 빌드를 망가뜨린 사람은 반드시 다시 수정해야 한다는 규칙이 있다면, 자연스럽게 하루 종일 코드를 자주 체크인할 유인이 생깁니다.
지속적인 통합의 이점
CI가 잘 작동하면 고객과 다른 이해관계자들이 언제든 코드를 자유롭게 수정할 수 있을 만큼 코드의 안정성을 유지하는 데 도움이 됩니다. 이는 전반적인 개발 작업의 흐름을 가속화하는데, 파울러가 지적했듯이 매우 다른 느낌을 줍니다. 또한 프로그래머와 고객 간의 피드백을 더 많이 유도하여 팀이 반복 작업 마감일 전에 작업을 완료하는 데 도움이 됩니다. 리팩토링과 마찬가지로, 지속적인 통합(CI)은 버그가 있는 코드를 커밋하지 않도록 보장하는 포괄적인 자동화된 단위 테스트가 있을 때 효과적입니다.
능숙한 CI는 통합이 결코 골치 아픈 일이 아니라는 것을 의미합니다. 왜냐하면 여러분의 작업이 코드베이스와 아주 미세한 차이만 반영하기 때문입니다. 팀이 작은 차이들을 정기적으로 처리해야 한다면, 정말 심각한 차이까지 다룰 필요는 없습니다. 또한, 문제가 발생하는 날 바로 다양한 디자인 접근 방식에 대해 논의할 기회도 얻게 됩니다. 통합을 통해 전체 팀원이 그 문제에 집중할 수 있기 때문입니다.