ikar***
2018-05-21

이 책은 자바 프로젝트를 수행하는 데 유용한 깃/깃허브, 젠킨스, 메이븐, 그레이들, SBT를 협업 관점에서 소개합니다. 단순히 기능만 소개하는 것이 아니라 현업에 유용한 플러그인들을 활용하고, 다른 도구와 연계하여 사용하는 방법을 알려줍니다. 따라서 지속적 통합 및 배포를 구축하는 데 큰 도움을 줍니다.
제가 개발자로서 직장 생활을 처음 시작했을 즈음 동일한 제목의 책을 읽었던 기억이 있어서 찾아보니, 현재는 절판 되었지만 2009년에 같은 출판사에서 동일한 제목으로 발매된 책이 있습니다. 시대가 달라진 만큼 그때 사용하던 Trac이나 Subversion 대신 Git과 GitHub 그리고 Gradle 등으로 내용이 변경되어 재 출간된 것 같습니다.
책 제목에 "자바프로젝트를 위한 필수 유틸리티"라고 자바를 명시하고 있지만, 내용의 대부분은 자바에 대해서 설명하기 보다는 자동화된 CI/CD환경을 만드는 데 필요한 빌드, 배포, 테스트를 위한 도구를 설명합니다. 자바 프로젝트를 예시로 들어 설명하고 있지만, 해당 환경을 구축해 보려는 사람이라면 어떤 언어를 사용하더라도 참고할 수 있는 내용을 담고 있습니다.
이 책의 내용에 대한 난이도는 쉬운 편입니다. 각 도구들에 대해서 사소한 부분까지 친절하게 설명되어 있어, 이미 업무에 CI/CD환경을 적용하고 더 높은 수준으로 발전시키려는 사람보다는 아직은 자동화된 빌드/배포 환경을 구축해본 경험이 적은 사람에게 더 적합합니다. ( 책의 저자 중에 나는프로그래머다 컨퍼런스에서 발표하셨던 전민수님이 있어 라쿠텐의 빌드/배포환경에 대한 언급이 있을 것을 기대했는데, 그런 내용은 적혀있지 않았습니다. ) 또한 실제로 프로젝트에서 많이 쓰이는 메이븐, 그레이들, 젠킨스를 모두 설명하고 있어 어떤 상황에서라도 참고할 수 있는 내용을 담고 있습니다. 특히 마지막 젠킨스 부분에서는 아마존의 무료 인스턴스를 사용하여, 실 서버에 배포하는 것을 경험할 수 있는 내용을 담고 있는 것은 아주 좋았습니다.
책은 메이븐을 시작으로 그레이들, SBT, Git/GitHub, 젠킨스를 차례로 설명합니다. 각 도구들에 대한 설명은 동일한 역할을 하는 기능들에 대해서 설명하므로 순서와 상관없이 먼저 익히기를 원하는 도구에 대한 설명을 먼저 읽는 것도 좋은 방법이 될 것 같습니다. 다만, Git/GitHub에 대한 내용은 어떤 툴을 사용하더라도 읽어두는 것이 좋아 보입니다.
처음 프로젝트를 시작하는데, 개발을 하면서, 빌드와 테스트를 자동화하고 배포하여 빠르게 동작하는 서비스를 확인하고자 한다면, 그것을 하는데 어떤 것이 필요하고 어떻게 하면 되는지 막연하다면 이 책을 읽어보는 것이 어떤 것을 어떻게 시작해야 하는지 알려주는 이정표 역할을 할 수 있을 것 같습니다.