Table of Contents |
---|
지속적인 통합(Continuous Integration)이란
소프트웨어 개발 프로젝트는 다음 그림처럼 비슷한 생명 주기를 지니고 있으며 각 단계는 프로젝트가 진행되는 동안 계속 반복적으로 실행되는 경우가 많다.
...
- 소스의 변경은 버전 관리 서버를 통해 관리하는 게 좋다.
- 소스가 변경되면 수시로 커밋한다. CVS나 서브버전은 분기(branch)와 병합(merge)이 어려워서 트렁크 트리에서만 커밋 하는 경향이 있으므로 소스의 병합이 어렵고 충돌이 많이 발생하는 문제가 있다.
또 미완성 소스 커밋으로 빌드가 깨질까봐 완성전까지 아예 커밋을 안 하는 나쁜 버릇을 갖게 되는 경우도 있다. 이 문제는 git 같은 분산 버전 관리를 도입하고 git flow 같은 검증된 분기 전략을 사용하여 해결하는 게 좋다. - 수시로 빌드한다. 빌드는 매우 복잡한 절차를 거쳐야 하고 반복 작업 및 수작업을 통해 진행되는 경우가 많다. 빌드를 자동화하면 반복 작업이 줄어들고 프로세스가 단순화되므로 잦은 빌드가 가능해 진다.
- 빌드마다 자동화된 테스트를 구동하며 테스트가 100% 통과되도록 한다. 테스트 환경은 실제 운영 환경과 최대한 유사하게 구축한다.
- 모든 프로젝트 참여자가 빌드의 산출물과 빌드 결과를 확인할 수 있도록 한다.
- 빌드가 깨졌을 경우 테스트와 패키징등 다음 단계로 진행할 수가 없으므로 깨진 빌드를 수정하는 일에 우선순위를 높게 부여한다.
- 빌드 결과물을 WAS 등 외부 서비스에 디플로이 해야 한다면 가능하다면 지속적인 통합 서버에서 이런 작업을 자동화 한다. 단 운영 서버에 바로 디플로이하는 것은 많은 고려 사항이 있으므로 충분한 검토가 필요하다.
지속적인 통합 제품
현재 시장에는 다양한 지속적인 통합 도구가 출시되어 있다. 이중에는 오픈소스 기반으로 무료로 사용할 수 있는 제품도 있고 비용을 지불해야 하는 상용 제품도 있다.
...
그러면 출시되어 있는 제품중에 많이 알려지고 사용자층이 두터운 대표적인 지속적인 통합 제품들에 대해서 알아 보자.
Cruisecontrol
오픈소스로 제공되는 제품으로 오래전부터 사용되어 온 도구이다. 단점은 업그레이드가 거의 안 되고 있으며 설정과 사용이 불편하다.
TeamCity
유명한 자바 IDE 인 IntelliJ IDEA의 개발사인 JetBrain 사의 제품이다. 무료로 사용할 수 있는 프로 페셔널 서버(Professional Server)와 상용인 엔터프라이즈 서버(Enterprise Serve)로 나뉘어져 있다.
...
기존에 제트브레인사의 이슈 관리 시스템을 사용한다면 도입을 검토해 볼 만한 가치가 있다.
Hudson
썬 마이크로 시스템즈의 엔지니어인 코수케 가와구치가 주도적으로 개발한 CI 제품이다. 오라클이 썬을 인수한 이후로 허드슨 개발 커뮤니티에 많은 이슈가 있었고 주요 개발자들은 허드슨 프로젝트를 떠나서 젠킨스 프로젝트를 만들었다.
...
특별한 이유가 있지 않은 이상 허드슨보다는 젠킨스를 사용하기를 권장한다.
Bamboo
컨플루언스와 지라의 개발사인 atlassian 사의 제품이다. 아틀라시안 사의 다른 제품처럼 기업에서 사용하려면 돈을 주고 구매해야 하며 오픈 소스 프로젝트를 진행하면 무료로 제공하고 있다.
...
활용 가능한 예산이 있다면 구매해서 사용해 보기를 권장한다.
Jenkins
Scroll ignore |
---|
OpenStack 의 CI 로 사용됨(http://ci.openstack.org/) |
...