윈도우 프로젝트 필수 유틸리티는 PYRASIS.COM을 운영하는 이재홍씨가 쓴 책이다. 처음 서브버전에 대해 공부할 때 큰 도움을 받은 사이트라 큰 기대를 품고 이번에 읽게 됐다. 필수 유틸리티란 제목 때문에 오해할 여지가 있긴 하지만, 이 책은 지속적인 통합과 빌드 자동화를 다룬다. 이 점에 대해선 뒷표지에 실린 주요 내용란을 확인하면 된다.
버전 관리 시스템(Subversion)으로 소스 코드 관리하기
이슈 관리 시스템(Trac)으로 지속적인 피드백을 통합하는 방법
지속적인 통합 서버(CruiseControl .NET)으로 빌드 자동화하기
릴리스 서버를 이용한 배포 자동화
심볼(Symbol) 서버로 디버깅 통합하기
문서 자동화하기
저장소 백업
내 경우엔 윈도우 플랫폼에서 빌드 자동화를 해온지 꽤 되어서 이 책의 내용은 거의 다 알았다. 그래서 술술 훑어가며 퇴근하는 길에 지하철에서 몽땅 읽었다. 그래도 몇 가지 팁을 배웠고, PowerShell에 가능성을 다시 한번 생각해보게 됐다. 또 리눅스(Subversion, Trac)와 윈도우(CruiseControl .NET) 환경을 함께 운영하는 터라 이렇게 윈도우 플랫폼에서 모든 걸 처리하는 모습도 인상적이었다. 오래 전에 이런 구성을 해본 적이 있지만, 그때는 매끄럽게 문제를 해결하기가 힘들었다.
단지 새로운 뭔가를 배울 생각으로 이 책을 산 건 아니다. 마이크로소프트웨어에 지속적인 통합이란 제목으로 칼럼을 쓰는데, 아무래도 내용이 겹치지는 않는지 신경 쓰였던 면이 크다. 책을 읽어보니 겹치는 내용도 있지만 큰 걱정은 안 해도 될 듯 하다. 이 책은 이슈 관리 시스템에 상당한 비중을 두지만 내가 쓰는 칼럼은 이 부분은 대충 넘어갔다. 나는 x64 + C++/CLI라는 최악의 조합으로도 빌드 자동화가 가능하다는 점을 보여주고, MSBuild나 UnitTest++ 같은 도구를 통합하는 방법을 주로 다루려 한다. 쉽게 말하면 자동화 중에서도 지속적인 컴파일과 지속적인 단위 테스트에 초점을 맞추는 것이다. 이러한 방향은 내가 회사 일의 영향을 받은 탓이다. 정식 입사할 무렵엔 벌써 서브버전과 Trac이 설치되어 있는 상황이었고, 나는 빌드 서버에 집중했기 때문이다.
서점에서 책을 살짝 펴보면, 사진이 많아서 당황할지도 모르겠다. 이 책은 따라하기를 표방하기 때문에 글보단 예제가 많다. 그림이나 예제 코드가 많으면 책 값이 아까울 때가 있는데, 그래도 이 경우엔 독자들이 따라하기 쉽게 구성한 것이 옳은 판단이었다고 생각한다. 이론에 관한 책은 시중에 나와 있으니 이런 책이 필요한 시점이 됐다. 윈도우 플랫폼 개발팀이라면 한 권 정도 비치해놓고 조금씩 구현해나가면 좋을 듯 하다.