이미 소장하고 있다면 판매해 보세요.
|
PART I 지속적 통합의 배경: 원칙과 실천 방법 chapter1 시작하기   변경할 때마다 소프트웨어를 빌드하기   지속적인 통합의 특징   요약   질문 chapter2 지속적인 통합 도입하기   지속적인 통합과 함께 하는 하루 일과   지속적인 통합에는 어떤 가치가 있을까요?   지속적인 통합을 왜 도입하지 못할까요?   '지속적인' 통합을 도입하려면 어떻게 해야 할까요?   언제, 어떻게 프로젝트에 지속적인 통합을 도입해야 할까요?   통합의 진화   지속적인 통합은 다른 개발 실천 방법을 어떻게 보완할까요?   지속적인 통합을 수립하려면 얼마나 걸릴까요?   지속적인 통합과 나   코드를 자주 커밋하세요   깨진 코드를 커밋해선 안 됩니다   빌드가 깨지면 즉시 고치세요   자동화된 개발자 테스트를 작성하세요   테스트와 검사는 모두 통과해야 합니다   개인 빌드를 돌리세요   깨진 코드는 가져오지 마세요   요약   질문 chapter3 지속적인 통합을 이용해 위험 줄이기   위험 요소: 배포 가능한 소프트웨어의 부재   위험 요소: 뒤늦은 결함 발견   위험 요소: 프로젝트 가시성의 부재   위험 요소: 저품질의 소프트웨어   요약   질문 chapter4 변경될 때마다 소프웨어를 빌드하기   빌드를 자동화하기   명령어 하나로 빌드를 수행하기   IDE에서 빌드 스크립트를 분리해내기   소프트웨어 자산을 중앙 집중화하기   일관성 있는 디렉터리 구조를 만들기   빌드를 빨리 실패하게 만들기   어떤 환경에서라도 빌드하기   빌드 유형과 메커니즘   전용 통합 빌드 머신을 사용하기   지속적인 통합 서버를 사용하기   사람이 직접 통합 빌드를 돌리기   빌드 시간을 짧게 만들기   빌드를 여러 단계로 나누기   이런 게 과연 효과가 있을까요?   요약   질문 PART II 완전한 기능을 갖춘 지속적인 시스템 만들기 chapter5 지속적인 데이터베이스 통합   데이터베이스 통합을 자동화하기   로컬 데이터베이스 샌드박스를 사용하기   버전 관리 저장소를 사용해서 데이터베이스 자산을 공유하기   지속적인 데이터베이스 통합   개발자에게 데이터베이스를 수정할 권한을 주기   팀이 다 함께 깨진 빌드를 고치는 일에 집중하기   DBA를 개발 팀의 일원으로 만들기   데이터베이스 통합과 통합 버튼   요약   질문 chapter6 지속적인 테스트   단위 테스트 자동화하기   컴포넌트 테스트 자동화하기   시스템 테스트 자동화하기   기능 테스트 자동화하기   개발자 테스트를 여러 범주로 나누기   시간이 덜 걸리는 테스트부터 실행하기   결함 검사용 테스트 작성하기   컴포넌트 테스트를 반복할 수 있게 만들기   테스트 케이스 하나에 어썰트(assert) 하나로 제한하기   요약   질문 chapter7 지속적인 검사   검사와 테스트는 무엇이 다를까요?   검사기를 얼마나 자주 돌려야 할까요?   코드 메트릭: 그 역사   코드 복잡도를 줄이기   설계 검토를 지속적으로 수행하기   코드 심사(Audit)를 하여 조직에서 정한 표준을 잘 지키게 하기   중복 코드를 줄이기   코드 적용범위를 평가하기   코드 품질을 지속적으로 평가하기   요약   질문 chapter8 지속적인 배포   작동하는 소프트웨어를 언제, 어느 곳에서든 릴리즈하기   저장소 안의 자산에 꼬리표 붙이기   깨끗한 환경 만들기   각 빌드에 꼬리표 붙이기   테스트를 모두 돌리기   빌드 피드백 보고서 만들기   릴리즈를 롤백할 수 있는 능력 확보하기   요약   질문 chapter9 지속적인 피드백   적절하게   지속적인 피드백 메커니즘 사용하기   이메일   요약   질문 epilogue 지속적인 통합의 미래 appendixA CI 관련 리소스   지속적인 통합 도구와 제품   빌드 스크립트 리소스   버전 관리 리소스   다른 버전 관리 리소스   데이터베이스 리소스   테스트 리소스   자동화된 검사 리소스   배포 리소스   피드백 리소스   문서화 리소스 appendixB CI 도구 평가하기   도구를 평가할 때 고려할 점   자동화된 빌드 도구   빌드 스케줄러 도구   결론 |
|
소프트웨어 업계에서 근무한 지 얼마 되지 않았을 무렵엔 개별적으론 잘 동작하던 모듈도 한데 모으면, 도대체가 이해하기조차 어려운 형태로 모든 게 엉망이 되어 버리곤 했습니다. 하지만 지난 몇 년간, 통합은 프로젝트에서 가장 고생스러운 일에서 별 것 아닌 일로 축소되었습니다.
이렇게 된 가장 근본적인 원인은 좀더 자주 통합하는 실천 방법입니다. 한때는 매일 빌드하는 것을 야심 찬 목표로 생각한 적도 있었습니다. 지금 이야기하는 대부분의 프로젝트들은 하루에도 여러 차례 통합을 합니다. 참 이상하게도, 고생스러울수록 좀더 자주하는 것이 상책인 듯합니다. 지속적인 통합에 있어 흥미로운 것 중 하나는 지속적인 통합이 주는 효과에 사람들이 종종 놀란다는 겁니다. 우리는 사람들이 지속적인 통합의 효과를 별로 중요하지 않은 이점으로 치부해버리는 모습을 발견합니다. 하지만 지속적인 통합은 프로젝트에 완전히 다른 분위기를 불러일으킬 수 있습니다. 문제를 더 빨리 탐지해내기 때문에 가시성이 훨씬 좋아집니다. 잘못을 저지르고 그것을 발견해내는 간격이 줄기 때문에, 뭐가 변경됐는지 쉽게 살펴볼 수 있어서 원인을 찾아내는 데 도움이 되므로 결함을 찾아내기 더 쉽습니다. 이것이 테스트 프로그램과 결합하면, 버그를 획기적으로 줄일 수 있습니다. 그 결과, 개발자는 디버깅하는 데 시간을 덜 쓰고 기능을 넣는 데 시간을 더 쓰게 되며, 견고한 기초를 닦고 있다는 자신감을 갖게 됩니다. 물론, 통합을 더 자주하라고 말로만 해선 충분하지 않습니다. 이 간단한 캐치프레이즈 뒤에는 지속적인 통합을 현실로 만들어 주는 원칙과 실천 방법이 한 다발 있습니다. 원칙과 실천 방법에 관한 조언들은 대부분 여러 책과 인터넷에 흩어져 있었기 때문에 스스로 찾아서 탐구해야 했습니다. 그래서 폴이 이러한 정보들과 최고의 실천 방법들을 응집력 있는 한 권의 책으로 묶어서 이러한 책을 기다렸던 사람들에게 지침서를 만들어준 걸 보고 기뻤습니다. 간단한 실천 방법이 으레 그렇듯, 세세한 부분으로 들어가면 어려워집니다. 지난 몇 해에 걸쳐 우리는 그 같은 세부 사항에 대해 많은 것을 연구했고 어찌 대처하면 되는지를 공부했습니다. 이 책은 지속적인 통합이 소프트웨어 개발에 탄탄한 기초를 제공하듯, 지속적인 통합을 위한 탄탄한 기초를 마련해주는 이러한 교훈들을 모아 놓았습니다. -- 마틴 파울러의 머리말 |