Pragmatic Version Control
David Thomas, Andrew Hunt
정지호 편역
인사이트
버전관리는 프로젝트의 규모와 상관 없이 필요한 것이다. 저자들은 ‘제대로만 한다면, 버전 관리는 숨쉬는 것과 같다’고 표현한다. 왜냐하면 의식하지 못하는 중에 버전관리가 프로젝트가 살아있도록 유지해 주는 역할을 하기 때문이다. 이 책은 버전 관리 도구 중 가장 널리 쓰이는 CVS를 통해 개발의 효율성을 증가시키고 체계적인 프로젝트 진행을 이룰 수 있는 방법을 제시하고 있다. 서론에서는 버전 관리란 무엇이며 왜 필요한지, 저장소, checkout, 브랜치, 꼬리표 등의 개념과 활용 사례 등을 제시한다. 본론에서는 CVS의 설치와 사용법에 대해 필요성이 높은 옵션 위주로 자세히 설명한다. 부록에서는 명령 요약, 윈도우에서 사용 가능한 WinCVS 튜토리얼, Eclipse에서 CVS 사용하기 등의 부가 내용을 다루고 있다.
버전관리. 학교를 다니면서는 별 필요성을 느낄 수 없었다. 여러 명이 하는 프로젝트도 거의 없었거니와 대부분 2~3달이면 완료되는 단기성 프로젝트였고 또한 유지보수의 필요가 없었던 것들이 대부분이었기 때문이다. 필요가 없었다기 보다는 해당 과목의 종강과 함께 디스크 공간 한 구석에 박혀있게 되었다는 표현이 더 맞을 것이다. 이러한 학교에서의 환경과는 달리, 회사는 여러 명이 하나의 프로젝트에 몇 달 동안 매달려 작업을 해야 하고, 한 번 완료된 프로젝트에 대해서도 지속적으로 유지보수를 해야 하는 환경이다. 한 달에 한 번 꼴로 신제품이 출시되는데, 기본 코드 베이스에서 다양한 브랜치가 형성되면서 신제품이 되는 경우가 많다.
전부터 버전 관리의 필요성을 느끼면서도 회사에 그러한 체계가 제대로 구축되어 있지 않았고, 서버에 알아서 백업해 놓거나 담당자가 변경 사항이나 내역을 기억하고 있어야 하는 불편한 상황이 지속되었다. 이러한 상황에 대해 쉬우면서도 강력한 기능을 갖고 있는 CVS가 해결책으로 떠올랐다. Joel on Software에서 강조하던 ‘일별빌드’나 ‘버전관리’ 등의 소스 관리 체계를 갖추는 데에 적격이라는 판단이 들었던 것이다.
세부 코딩 기법이나 특정 언어의 특정 라이브러리 등에 대한 관심보다 요즘은 새로운 소프트웨어 엔지니어링 기법들에 대한 관심이 커졌다. TDD라든가 Agile Programming, Extreme Programming 등이 상당히 매력적인 접근방식이라는 생각이지만, 아직 실전 검증부분에서는 미약하다는 생각이다. 혹은 집에 모셔놓고 아직 읽지는 못한 “Pragmatic Programmers”의 저자들이 이러한 새로운 기법을 적극 활용하는 것 같았고, 이들이 펴낸 3가지 실용서 중 하나인 이 책에 자연스레 눈길이 가게 되었다.
책을 읽은 첫 느낌은, ‘역시 필요한 것이구나’였다. 책 자체가 뛰어나서라기 보다는 이미 어느 정도 확신이 있던 차에 확인사살을 당한 느낌 같기도 하다만.. 또한 번역서에 추가된 WinCVS 튜토리얼이 매우 유용한 것 같다. 단순 번역에 그치지 않고, 역자 주석과 추가 내용으로 책의 가치가 높아진 것 같다. 인사이트 시리즈, 책 선정이 맘에 든다.