// 에드센스

 

이번에 새로운 CICD를 구축할 일이 생겼는데 어떤 툴을 사용할지 조사하게 됐다.

조사하는겸 기록해보자

보고계십니까 엘리님...


1. CI/CD란?

 

"개발부터 배포까지 모든 단계를 자동화 하는 것"

 

 

CI

CI는 Continuous Integration의 약자로 지속적 통합이라는 의미이다.
애플리케이션의 새로운 코드들이 자동으로 빌드 및 테스트 되어 레포지토리에 통합되는 것을 의미한다.

 

CI의 포인트는

  • 개발자들은 최대한 작은 단위로 만들어서 개발해가며 빈번하게 merge해야한다.
  • 애플리케이션들의 빌드, 테스트, 병합하는 과정을 주기적으로, 자동화시켜야 한다.

 

이런 포인트를 따라가면

  • 병합시 충돌을 예방할 수 있고,
  • 코드의 결함이나 문제점을 빠르게 발견할 수 있다.

 

또 문제점을 빠르게 발견할 뿐 아니라 빠르게 해결할 수 있다.

왜? 작은 단위로 빈번하게 merge하기에 문제 발생 범위가 작기 때문이다(빈번하게 merge해도 빌드, 테스트가 자동이라 간편)

결과적으로 코드의 품질이 올라간다.

 

 

 

CD

CD는 Continuous Delivery/Deployment의 약자로 지속적 제공/배포라는 의미이다.
CI를 통해서 빌드, 테스트가 완료되어 배포될 준비가 끝난 애플리케이션을 개발자가 수동으로, 혹은 자동으로 배포를 진행하는 것.

(수동일때를 Continuous Delivery, 자동일때를 Continuous Deployment라고 한다. 최종단계의 자동화 여부로 나눈다고 하는듯?)

 

 

 

CI/CD 파이프라인

5줄 요약하자면,

 

  1. 개발자가 작은 단위로 코드를 짜고 메인 리포지토리에 merge를 하면,
  2. 자동으로 빌드되고,
  3. 자동으로 테스트되어,
  4. 릴리즈되고(배포준비완료),
  5. 배포된다.

 

 

 

 

 


2. CI/CD를 위한 도구

정말 많다.

https://ichi.pro/ko/hyeonjae-sayong-ganeunghan-choegoui-ci-cd-dogu-27gaji-194611649728144

 

현재 사용 가능한 최고의 CI/CD 도구 27가지

CI(지속적 통합) 및 CD(지속적 배포)(또는 CI/CD)는 소프트웨어 개발 및 DevOps 테스트의 필수적인 부분이 되었습니다. 개발자가 코드를 지속적으로 배포할 수 있도록 필요한 기능을 제공합니다.

ichi.pro

 

이 중에서 가장 대중적인 후보 3가지를 골라서 장단점을 조사해보았다.

 

 

Jenkins

  • 무료(단, 별도의 서버 필요)
  • 다양한 플러그인, IDE를 지원
  • 많은 사용자와 많은 문서
  • 규모가 작은 프로젝트의 경우 설정하는데 리소스 낭비가 발생할 수 있다.
  • 지라와 연동이 불편하거나 완벽하지 않을 수 있다.

무료라는 점과 많은 사용자를 가졌다는 점이 매력적이다.

특히 많은 문서와 선례들을 통해서 거의 모든 문제상황에 대처할 수 있을 것이다.

 

다만 하나같이 설정과 운영하는 측면에서 불편하다는 평이 많다.

손도 많이 가고 특히 별도의 서버를 준비해 거기에 설치하여 운영하는 방식이라 무료지만 실제론 무료가 아닌? 그런 느낌

(주로 t2.medium을 권하더라)

규모가 작은 프로젝트에서는 그렇게 추천하진 않는다.

 

 

 

Travis

  • 깃허브와 연동
  • 빌드 과정을 한 눈에 이해하기 쉽다.
  • 초기 설정이 젠킨스에 비해 간편(YML 파일을 통한 설정)
  • 별도의 서버 필요 없다. travis에서 알아서 VM으로 호스팅 해준다.
  • 기업용의 경우 다소 비싸다(월 129달러)
  • 로컬에서 CI환경과 동일한 빌드환경을 제공하지 않는다.
  • 젠킨스에 비해 플러그인이 다양하지 않다.
  • .travis.yml 파일을 수정하고 테스트하려면 git push를 반복해야한다.

 

 

Github Actions

  • 복잡한 과정없이 바로 깃허브에서 사용할 수 있다.
  • 빌드 과정을 눈으로 확인하기 쉽다.
  • 깃허브의 모든 이벤트에 대한 작업을 제공하고 다양한 언어와 프레임워크를 지원한다.
  • 젠킨스보다 빠르다.
  • public은 무료, private 저장소의 경우 매월 3000분 무료
  • 문서가 비교적 부족하다.
  • UI에서 개별 워크플로우 실행을 삭제할 수 없다.
  • 워크플로우에서 단일 작업만 다시 실행할 수 없다.

요즘 대세는 깃헙액션인것 같다.

빠르고, 서드파티가 필요없기 때문에.

다만 얘도 설정이 다소 복잡하다는 평이 있지만 젠킨스만큼은 아니고 그만큼 정교한 작업이 가능하다는 뜻이기도 하다.

(직접 써봐야 알겠지만ㅠ)

 

 

다음은 뱅크샐러드에서 Travis를 사용하다가 Github Actions로 전환 후 개선된 점이다.

 

 

 

 

참고:

더보기

+ Recent posts