개발놀이터

CI / CD 자동화 (1) : Jenkins vs Github Action 본문

배포/CI , CD

CI / CD 자동화 (1) : Jenkins vs Github Action

마늘냄새폴폴 2023. 6. 14. 16:04

이전 포스팅을 보고 오시면 더 이해하기 쉽습니다!

https://coding-review.tistory.com/410

 

Docker + Nginx를 이용해 스프링 프로젝트 무중단 배포하기 : 과정

저번 포스팅에선 docker + nginx를 가지고 무중단 배포를 하는 방법에 대해서 설명한 것이구요. 이번 포스팅에선 전체적인 과정에 대해서 알아보도록 하겠습니다. 이번 포스팅은 아래와 같은 순서

coding-review.tistory.com

 

이번 포스팅에선 Jenkins를 시작하는 방법에 대해서 포스팅해보도록 하겠습니다. 이전 포스팅에서 블루 그린 배포를 성공적으로 완료했지만 문제가 있었습니다. 

 

그것은 바로 엄청나게 복잡한 배포 과정인데요. 

 

잠깐 이전 포스팅 내용을 정리하자면 우리의 블루 그린 배포는 다음과 같은 과정으로 이뤄집니다. 

 

  1. 스프링 프로젝트에서 업데이트
  2. git commit / push
  3. git pull
  4. gradlew build
  5. docker image build
  6. docker hub push
  7. docker-compose.yml 파일 변경
  8. deploy.sh 실행

이걸 도식화하면 다음과 같습니다. 

 

 

이 과정을 한번 겪어보고 나니 한숨이 쉬어지더군요.

 

이 과정을 자동으로 처리하고 싶은 욕구가 마구 샘솟았습니다. 물론 그전에 Jenkins의 존재에 대해 알고 있었습니다. 때문에 Jenkins를 사용해야겠다고 마음 먹었습니다. 알아보니 Jenkins와 같이 CI 를 자동화해주는 Github Action이라는 기술도 있었습니다. 

 

그래서 각각의 장단점에 대해서 알아봤는데요. 

 

 

저는 여기서 Jenkins를 선택했습니다. 그 이유는 다음과 같습니다. 

 

  1. 제 프로젝트는 실무에서 사용할 정도로 복잡한 CI / CD를 요구하지 않으므로 설정과 관리가 어려워 봤자 얼마나 어렵겠냐는 마인드로 결정했습니다. 
  2. 또한 Github Action에서 발생하는 Job Scheduling Issue는 개인적으로 CI / CD에선 치명적이라고 생각합니다. 
  3. Jenkins와 Github Action을 어떻게 사용하는지 구글링을 조금 해봤는데 Jenkins를 시작하는게 그리 어려워보이지 않았습니다. 

복잡한 CI / CD인 경우 Jenkins를 사용하는게 유지보수가 힘들다는 말이 많았는데 저는 복잡한 프로젝트가 아니기 때문에 전혀 상관 없을 것 같았습니다. 

 

그리고 또 결정적인 이유가 바로 이것입니다. 

 

자동화 CI / CD 도구 글로벌 트랜드

구글 트랜드에서 검색한 결과인데요. Jenkins가 압도적으로 많았습니다. 

 

제가 CI / CD 자동화가 처음이었어서 아무래도 많이 선택하는 기술을 선택해야 초기에 학습하기 쉬울 것이라고 생각했고 트러블이 생기더라도 해결하기위한 레퍼런스가 많을 것으로 생각했습니다. 

 

이런 탄탄한 생태계를 갖고있는 기술은 처음 시작하는 저같은 사람들에게 최적이라고 생각했습니다. 

 

그래서 이어서 쓰게 될 포스팅은 모두 Jenkins에 대한 포스팅입니다. 다음 포스팅에서 바로 Jenkins를 시작해보도록 하겠습니다. 

 

https://coding-review.tistory.com/414

 

CI / CD 자동화 (2) : Jenkins 시작하기

앞선 포스팅과 이어지는 내용입니다. https://coding-review.tistory.com/413 CI / CD 자동화 (1) : Jenkins vs Github Action 이전 포스팅을 보고 오시면 더 이해하기 쉽습니다! https://coding-review.tistory.com/410 Docker + Ngin

coding-review.tistory.com