메인 콘텐츠로 이동하기

Learning Continuous Integration with Jenkins 3e

저자 : Nikhil Pathania
출간일 : 2024년 1월

주제 #

Jenkins를 기반으로 CI/CD 파이프라인을 구성한다. 2017년 2e이 출간되었으며 3e을 작성한 저자의 동기는 젠킨스와 데브옵스 도구의 진화를 담고 소셜미디어에 퍼지는 오해와 잘못된 관행을 잡고 싶어서라고 한다. 책을 읽고 난 후 돌아보면 오해와 잘못된 관행을 다루기보다 고려해야 하는 점과 모범 사례를 언급하는 형태이다.

어떤 목적으로 어떤 도구를 사용하는지 잘 설명한다. 이론과 더불어 몇가지 시나리오에 대한 실습 예제를 포함하고 있다.

다루는 내용 #

CI/CD 전체를 조망하는 책이다. 젠킨스 2를 사용하여 UI와 선언적 코드로 구성한다. 시나리오에 포함된 실습 예제의 명령어와 코드는 꼼꼼하게 설명한다. 배포 파이프라인 도구들을 쿠버네티스 클러스터에서 동작시켜 수요에 따라 증감하도록 한다거나 CI와 CD 계획을 세울 때 선택하는 기준을 설명하는 등 파이프라인 구성에만 집중하지 않았다.

CI/CD 생태계에 여러 종류의 도구와 도구간 연결하는 구성도 많기 때문에 실습에서 다루는 양은 제한된다. 깊이 있는 내용을 기대하고 보기 시작했지만 넓게 다루는 쪽에 가깝다. 도구는 Jenkins, Azure VM, AKS, Helm, Nginx Ingress, Terraform, Artifactory, Xray, SonarQube 같은 도구를 다룬다. 빌드/배포를 테스트하는 샘플 앱은 아주 간단한 자바스크립트 백엔드/프론트엔드와 몽고디비를 사용했다. 웹 앱보다 수명주기에 초점을 잡은 책이기 때문이다.

ChatGPT와 Copilot처럼 AI 도구를 활용하는 챕터가 포함되어 있다. AI 도구를 개발에 활용하면서 구성과 관련된 코드 작성에 도움이 된다면 구성과 관련된 다양한 영역에서 영향력이 크겠다고 생각했었다. AI 도구를 활용하는 것에 중요한 점은 결국 AI가 제안한 코드에 대해 기본 문법과 환경을 이해하는 사람이 검토하고 테스트하는 것이다.

마무리 #

다루는 도구가 딱 맞으면 좋겠지만 국내에서 자주 사용하는 도구는 조금 빗겨나간 듯 하다. 하지만 일부 혹은 전체를 다른 도구로 대체할 수 있도록 도구에 대한 충분한 이해를 남겨준다.

파이프라인 구성의 입문으로 좋고 다른 도구를 사용하기 전에 보기에도 도움이 될 것 같다. 공식 문서나 필요할 때 찾아보는 방식과는 다르게 전체 흐름이 좋았다.

책의 장점은 어느 챕터라도 필요한 부분을 찾아서 보기 시작할 수 있을 정도로 챕터마다 반복되는 내용이 많다. 하지만 전체 흐름을 보기에 좋은 책이라고 생각하기 때문에 불필요하게 반복되는 설명(문단)과 실습 내용은 단점으로 크게 느껴진다. 차라리 분량을 줄여서 핵심을 빠르게 보게 해주거나 반복되는 단계에 다른 도구로 대체해서 실습하는 방법으로 난이도를 조절하는 것도 좋지 않았을까 생각한다.

그럼에도 젠킨스 선언적 코드 구성과 파이프라인 흐름의 간접 경험, 파이프라인 도구가 동작하는 아키텍처, 다양한 자동화된 테스트의 중요성, CI 이후 수동 배포와 자동 배포 구성처럼 목적과 성숙도에 맞춰 선택할 수 있는 계획들은 이 책을 읽은 시간이 가치 있게 해줬다.