(왼쪽) 리로오오오오오이 제엔키인스!(하스스톤 리로이 젠킨스 대사) / (오른쪽) Jenkins 로고

(왼쪽) 리로오오오오오이 제엔키인스!(하스스톤 리로이 젠킨스 대사) / (오른쪽) Jenkins 로고

오늘은 여러분들한테 CI(Continuous Integration)툴인 Jenkins에 대해 소개 시켜드리겠습니다. 제가 아는 Jenkins란 하스스톤 밖에 없는데 말이죠...😅 본격적인 설명을 하기 전에 CI가 뭘까요? CI는 이름 그대로 '**지속적인 통합'**을 하는 것 입니다. 여기서 '통합'은 어떤 것을 말하는 걸까요?

서비스를 개발하다 보면 여러 명이 쓴 코드를 합치고 빌드하고 배포해야 할 일이 많습니다. 저희는 github의 도움으로 코드 합치는 일을 보다 쉽게 해결 할 수 있습니다. 하지만 빌드, 배포는 사람이 일일이 사람이 하는 영역 이였습니다(쉘프로그래밍으로 해결 할 수 있겠지만). 예를 들어 봅시다. 먼저 서비스에 적용할 최신 코드를 받아야 하므로 git pull을 해야합니다. 이제 Docker 컨테이너를 켜고 컨테이너 안의 C파일을 컴파일을 하고 실행하여 백그라운드에 두고 node로 서버를 가동해야 한다고 가정해봅시다. 조금의 코드를 수정해도 이 모든 일련의 과정을 수행 해야합니다. 이를 자동화하여 처리 해주는 것이 CI 입니다. 따라서 통합이란 여러 명의 코드가 통합된 것을 가져와 빌드하고 배포를 하는 것을 의미합니다.

백문불여일견이라고 말로 듣는 것 보다 직접 Jenkins를 설치하여 몸으로 느껴보는것이 더욱 이해에 도움이 될 겁니다. T-academy에서 총 4강으로 Jenkins 설명부터 설치, 적용방법까지 소개하고 있습니다.

[토크ON세미나] Jenkins를 활용한 CI/CD 1강 - 젠킨스(Jenkins) 이해 | T아카데미

T-academy의 Jenkins 강의를 들으면 다음과 같은 일들을 할 수 있습니다.

  1. Github push 알림을 Jenkins 서버로 보낸다.
  2. Jenkins가 이 알림을 받고 미리 작성된 Jenkinsfile을 참고하여 수행한다.
  3. 이 일련의 과정이 모니터링 되며 웹으로 확인 할 수 있다.

필자도 위의 강의를 참고하여 단순하게 최신 코드를 받고 서버를 재가동하는 작업을 적용해보았습니다. 이렇게 간단한 작업을 자동화 함에도 불구하고 감동의 눈물을 흘렸습니다. 이 밖에도 Jenkins는 자동화 테스트, 소스 변경에 따른 성능 변화 감지, 코딩 규약 준수 여부 등등 많은 일들을 할 수 있다고 하니 Jenkins의 능력은 무궁무진합니다. 이런 Jenkins를 개인적으로만 사용해보고 실제 서비스에 적용해본적이 없는데 빨리 실서비스에 적용하여 Jenkins의 파워를 직접 느껴보고 싶습니다.