Jenkins

IT 기업들에서 왜 Jenkins를 사용할까?

sunggook lee 2020. 11. 26. 14:31

 

CI (지속적통합)은 개발자들이 빠른 주기로 작업한 내용을 통합 브랜치에 통합하고 빌드하는 개발방식을 말합니다.

 

통합이란 개인이 작업한 코드를 공용 작업환경에 올리는것을 말하고 이 과정은 개인 브랜치를 중앙 브랜치에 merge하는 과정으로 이루어집니다. CI는 애자일에서 필요한 속도를 얻는데 도움을 줍니다.

 

우선 CI에 대한 이해를 위해 애자일 방법론과 폭포수 모델에 대한 이해가 선행되어야 합니다.

 

(출처:  blog.frogslayer.com )

 

과거 소프트웨어 개발은 제조업에 개발 흐름을 따라 WATERFALL, 폭포수 모델을 차용했습니다.

 

폭포수 모델은

 

요구사항 분석-> 시스템 설계 -> 구현 -> 테스트 -> 배포 -> 유지 보수 순으로 

 

각각 단계에 굉장히 오랜 시간이 걸렸고 개발자들이 개발을 하고 있을 때 테스트팀과 배포팀은 딱히 다른일을 하지 않고 개발이 완성되면 그때부터 개별 branch들을 통합하면서 테스트를 진행했습니다. 따라서 통합을 할 때 개별 branch들을 합치는 과정에 굉장히 많은 시간이 소요되었고 이러한 과정은 요구사항이 많은 현재의 소프트웨어 요구사항에 전혀 부합하지 않는 방법론입니다.

 

따라서 Agile 방법론이 대세로 떠올랐고 애자일 방식의 핵심은 빠르고 유연하며 조금씩 발전되는 소프트웨어 개발을 통해 목표를 계속 수정해 나가는 것입니다.  Agile 방법론에서는 계속 변경되는 요구사항을 만족하기 위해 폭포수 모델에서 행했던 싸이클을 여러번 도는 과정을 통해 소프트웨어 개발을 진행합니다.

 

이렇게 진행되는 Agile방법론에서는 빠른 싸이클로 개발을 진행하기 위해 지속적인 코드 통합, 지속적인 배포가 필수적이 되었습니다. 

 

하지만 개발자가 개발을 마치고 코드를 통합하고 테스트 해보는 과정은 지루하고 반복적인 작업이며 불필요한 시간 낭비가 될 수 있습니다. 따라서 지속적인 코드 통합, 배포를 위해서 Jenkins를 이용하게 된 것입니다.

 

 

 

기능을 개발하고 Git에 커밋하고 빌드 및 단위테스트를한 뒤 패키징을 하는 과정까지가 CI절차라고 볼 수 있는데 이 과정을 Jenkins를 이용하여 자동화 할 수 있는 것입니다.

 

다음 글에선 실제로 Jenkins를 사용하여 CI/CD를 구성하는 과정을 소개하겠습니다.

Jenkins Pipeline을 사용하여 CI/CD 환경 구축 - Jenkins Plugin사용하지 않고 구현하는 방법

https://tjdrnr05571.tistory.com/13

 

 

 

 

참고자료:

 

초보를 위한 젠킨스 활용 가이드 책

www.yes24.com/Product/Goods/64691711

 

blog.frogslayer.com

http://sblog.netraweb.com/%EC%A7%80%EC%86%8D%EC%A0%81%EC%9D%B8-%ED%86%B5%ED%95%A9-ci-continuous-integration/