티스토리 뷰
지속적인 통합 : 소프트웨어 품질을 높이고 위험을 줄이기
|
이 책은 '지속적인 통합'을 위한 좋은 입문서이자 지침서이다. 지속적인 통합을 해야 하는 이유와 실천(도입) 방법과 유용한 도구들을 소개하고 있다. 지속적인 통합이란 다음을 의미한다.
지속적인 통합이란?
소프트웨어 공학에서, 지속적인 통합(continuous integration, CI)은 지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것이다. - 작은 단위의 작업, 빈번한 적용. 지속적인 통합은 모든 개발을 완료한 뒤에 퀄리티 컨트롤을 적용하는 고전적인 방법을 대체하는 방법으로서 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이 맞추어져 있다.
- 위키백과
아래 그림은 CruiseControl이라는 CI 서버를 이용한 일반적인 지속적인 통합 시나리오를 보여준다.
출처 : http://www.ibm.com/developerworks/rational/library/sep05/lee/
CI 시스템 구성
통합은 버튼 하나 누르는 것과 같이 쉽고 간편하게 작동하도록 스템화되어 있어야 한다. 2인 이상 협업으로 개발하는 프로젝트에서 통합에 많은 시간 빼앗기고 있다면 지속적인 통합을 심각하게 고려할 필요가 있다. 지속적인 통합은 통합하는데 낭비하는 시간을 줄여주고 개발자가 더 가치있고 생산적인 일에 시간을 쓸수 있도록 도와준다.
지속적인 통합의 이점
- 프로젝트 상의 위험을 줄여준다.
- 빠른 피드백으로 시스템 개발의 문제점 발견
- 비용, 일정, 예산 상의 위험 감소
- 반복적인 프로세스를 줄여준다.
- 언제 어느 때라도 배포할 수 있는 소프트웨어를 생성해낸다.
- 프로젝트 가시성을 보다 좋게 해준다.
- 추세를 인지하고 효율적인 의사결정을 내릴 수 있게 도와줌
- 코드 품질 확보
- 개발 팀이 소프트웨어 제품에 대해 보다 큰 자신감을 갖게 해준다.
지속적인 통합 도구들
CI 도구는 아래 표를 참고해서 개발 환경에 적합한 도구를 선택한다.
출처 : http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
CI 도구 비교표
자동화된 빌드 도구
Maven, https://maven.apache.org/
NAnt, http://nant.sourceforge.net/
Rake, https://github.com/ruby/rake
빌드 스케줄러 도구
AnthillPro, https://developer.ibm.com/urbancode/plugins/anthillpro/
Continuum, https://continuum.apache.org/
CruiseControl, http://cruisecontrol.sourceforge.net/
CruiseControl.NET, http://www.cruisecontrolnet.org/
Draco.NET, http://draconet.sourceforge.net/
Luntbuild, http://luntbuild.javaforge.com/
Hudson, http://hudson-ci.org/
Jenkins, https://jenkins-ci.org/
참고
Continuous Integration, Martin Fowler
원문 : http://martinfowler.com/articles/continuousIntegration.html
번역 : http://pragmaticstory.com/224
책 홈페이지 http://www.integratebutton.com
Realizing continuous integration, Kevin A. Lee, http://www.ibm.com/developerworks/rational/library/sep05/lee/
Automation for the people: Continuous feedback, PaulDuvall, http://www.ibm.com/developerworks/library/j-ap11146/
Automation for the people: Continuous Inspection, PaulDuvall, http://www.ibm.com/developerworks/java/library/j-ap08016/
Automation for the people: Remove the smell from your build scripts, PaulDuvall, http://www.ibm.com/developerworks/java/library/j-ap10106/
Daily Build and Smoke Test, Steve McConnell, http://www.stevemcconnell.com/ieeesoftware/bp04.htm
Managing Duplicated Code with Linked Editing, Michael Toomim, Andrew Begel, Susan L. Graham, http://harmonia.cs.berkeley.edu/papers/toomim-linked-editing.pdf
How to Use FxCop, Anil_Saran http://www.codeproject.com/Articles/78599/How-to-Use-FxCop
Comparison of continuous integration software, http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
개발 일정에 쫓기는 개발자에게 지속적인 통합을 테스트, 검사, 배포까지 고려해서 이상적으로 프로젝트에 적용하기란 쉬운 일은 아니다. 그러나 앞에서 언급한 지속적인 통합의 이점은 프로젝트를 관리하는 장기적인 관점에서 봤을 때 오히려 프로젝트 관리 비용을 절감시켜주는 효과를 가져온다. 프로젝트 초기에 지속적인 통합 시스템을 구축하는 것이 최선이다. 하지만 프로젝트 후반에 도입한다면 팀원들이 지속적인 통합 문화에 거부감없이 동참하도록 조금씩 시스템을 자동화하는 것이 좋을 것이다. 성공적인 프로젝트를 위해서는 지속적인 통합 도입은 선택이 아닌 필수 사항이다.
- James Song
'Books_tech' 카테고리의 다른 글
<Effective Modern C++> Item 2 요약 (0) | 2015.09.04 |
---|---|
<Effective Modern C++> Item 1 요약 (0) | 2015.08.09 |
<code : 하드웨어와 소프트웨어에 숨어 있는 언어> (0) | 2015.05.07 |
경쟁하지 말고 독점하라 <제로 투 원> (0) | 2015.05.02 |
HTTP 교과서 <HTTP 완벽 가이드> (0) | 2015.04.09 |
- #제럴드와인버그
- Effective C++
- #로버트마틴
- #세미나
- #알고리즘
- 책
- #ModernCPP
- #cpp
- #build2016
- #마이클페더스
- Effective Modern C++
- 객체 지향 설계
- #scottmeyers
- #코드최적화
- #임백준
- #팀개발
- #레거시코드
- #uwp
- 상속
- #프로그래밍심리학
- #cplusplus
- #csharp
- #클린코드
- Scott Meyers
- #techdays2015
- #스콧마이어스
- #ndc
- #mva
- #자녀교육
- #EffectiveModernCpp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |