지속적인 통합폴 M. 듀발 외 지음, 최재훈 옮김 / 위키북스 어떻게 골랐는지 기억이 안나네. 아마도 졸트상이라는 것 땀시 싶은데. daily build라는 용어를 알았었고, 해봐야 겠다 싶어서 인터넷을 검색했었다. daily build라는 용어로는 제대로 검색이 되지 않았고 이 대신 CI라는 용어가 더 많이 보편적으로 쓰이는 것을 알았다. Continuous Integration? 이것이 daily build와 뭐가 다르지? 주기적으로 소스를 가져와서 빌드한다는 daily build와 별 다를게 없는데, 쉽게 와닿지 않게 왜 CI라 하지? 서버를 설치하고 사용하면서도 CI가 곧 daily build라는 개념으로 있었다. SI에서 I가 Integration 약자 이고 통합을 의미하지만 SI라 하면 시스템 통합 자체의 의미 보다는 흔히 말하는 SI를 뜻하는 것처럼, CI역시 보다 보편적인 용어인가 싶었다. 이 책에서는 CI가 하는 것이 단지 build 뿐 아니라 다음과 같은 것이라 한다. - 지속적인 빌드 - 지속적인 테스트 - 지속적인 배포 - 지속적인 데이터베이스 통합 - 지속적인 검사 - 지속적인 피드백 이중 테스트와 빌드, 배포, 피드백은 계속 해오고 있던 것이고 익숙한 것인데 나머지 2개가 낯설다. 그것이 왜 CI에 포함되는 것인지. 하나 하나 읽어 보았다. 읽어 보면서 아차 싶었다. 현재 개발하고 있는 제품에서 DB의 역활은 그리 크지 않다. 제품자체가 repository를 필요로 하지 않기 때문에 DBMS를 사용하지 않고 단지 연동만 가능하면 되기 때문에 데이터베이스에 대한 것들은 svn에 포함되어 있지 않았었다. 책의 저자는 개발에 포함되는 모든것은 저장소에 포함시켜야 하고 하나의 키를 클릭함으로써 모든것이 구성가능하여야 한다고 하였다. 큰 비중이 아니라 DB관련 것들을 별 신경 쓰지 않았었는데, 당장이라도 DB가 문제가 생긴다면 테스트들이 실패할 것이고 빌드 자체가 안될 것이다. 아차 싶었다. 단순한 DTD뿐 아니라 DBMS의 설정까지도 모두 저장소에 두어야 한다고 한다. 맞는 얘기네. 그러네. 테스트가 코드에 대한 동적인 점검이라 하면 검사는 정적인 것에 해당한다. 코드 컨벤션은 잘 지켰는지, 테스트 코드의 커버리지가 충분한지. 코드의 복잡도가 크지 않은지. 일반적인 테스트케이스만으로는 찾을 수 없는 사항을 점검하기 위한 방법이다. 이러한 검사가 이루어지지 않고 있었다. 필요성은 어설픗 그렇다 했었지만 실제로 적용하자니 무얼 가져다 어떻게 할지 몰라 모른척 하고 있었던 것 같다. 현재 개발에서 JUnit, svn, ant 요 3가지 중 어느 하나만 없어도 개발이 불가능하다고 느낀다. 하지만 한때는 저중 아무것도 사용하지 않고도 개발을 했었다. 저런 것들이 쓰면 좋겠다 싶었지만 역시 이래저래 미루면서 개발하던 때가 있었다. 정적인 검사역시 마찬가지 아닐까 싶다. 적용하고 익숙해 지면 있어서 좋네가 아닌, 없이는 개발 자체가 불가능하다고 느낄 수도 있겠다 싶다. 지속적으로 컴파일하고, 테스트 하고, 패키징 하고 그 결과를 통보하는 것을 daily build로 알고 있었고, CI가 곧 daily build라 싶었는데 중요한 2가지가 누락된 것이다. daily build + 데이터베이스 통합 + 검사 = 지속적 통합이 되겠다. 아마도 CI에서 Integration이 의미하는 것은 통합테스트의 그것이라 싶다. 통합테스트를 패스한 상태라면 사용자에 의한 사용성 테스트만을 남겨둔 상태인 것이다. 각 개별 개발자 혹은 팀이 개발한 것 만으로는 제품이 되지 않고 전부 모아서 통합하여 테스트를 패스하였을 때만이 제품이 제대로 된것일테고. 이러한 통합을 끊기지 않고 지속적으로 하자는 것이다. 언제나 지속적인 통합이 가능하도록 노력한다면 결국 치루어야 할 문제해결을 저렴한 비용으로 처리할 수 있을 것이란 개념일 것이다. 지속적으로 통합테스트가 패스한 상태를 유지할 수 있다는 그 것 자체가 이미 배포할 수 있는 상태를 유지한 다는 것이고, 이는 성공적으로 프로젝트가 진행중임을 강하게 암시한다. 어떻게 보면 책 내용이 평이한 것인데 졸트상을 받은것이 의아스럽기도 하지만, 가장 보편적인 것이 진리인 예를 보는 듯 싶다. 그 보편적인 것을 못해서 문제이지. 책 자체가 참 예쁘다. 개발자 누구에게나 추천할만 하다.
|
![]() by 어플로잇 카테고리
이전블로그
이글루링크
최근 등록된 덧글
정말 최고의 설명입니다. ..
by 김태정 at 10/21 <팀장이 절대로 해서는.. by 책향기 at 09/04 jstack <pid> by navis at 08/13 만약 콘솔이 떠있는 상.. by 밀리네스 at 08/13 언젠간 모든것을 알게 될.. by thzm at 07/29 정말 감사합니다^^ we.. by 고아라 at 07/17 저도 이책을 산것이 아니.. by 어플로잇 at 06/25 2판이 나온것을 몰랐습.. by 어플로잇 at 04/02 아직 모르셨나보네요. 이.. by 안건국 at 03/27 저자가 말하는 일반인이.. by 스맥 at 01/10 메모장
메모장 테스트 라이프로그
| |||