본문 바로가기
INFRA/DevOps

[DevOps] CI/CD 개념 및 도구 설명

by BTC_Hyeonsik 2023. 8. 18.

베하~~

안녕하세요 항상 웃음이 나는 픠식팀 입니다.

이번 포스팅에서는 CI/CD란 무엇인지, 그리도 CI/CD에 사용되는 도구에 대한 장단점을 알아보겠습니다!

 

CI/CD(Continuous Integration/Continuous Delivery) 란? 

CI/CD (Continuous Integration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법입니다. 

CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포입니다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 "통합 지옥(integration hell)")를 해결하기 위한 솔루션입니다.

 

 

CI/CD에 대한 개념을 알아 보았으니 CI/CD를 실현하기 위한 대표적으로 많이 쓰이는 도구에 대해 알아보겠습니다~!

CI Tools

- Jenkins

- GoCD

- DRONE

CD Tools

- ArgoCD

- Spinnaker

- TEKTON

 

 

대표 적인 도구들로는 이렇게 있으며 이제 자세하게 알아보겠습니다.!

 

CI Tools

- Jenkins

장점

  • Windows, Linux 및 macOS 플랫폼에서 사용 가능
  • 무료 및 오픈소스로 신생 기업 및 대규모 조직에 적합
  • 확장성 뛰어남
  • 번창하는 플러그인 생태계(1500개 이상의 플러그인)와 동급 최강의 커뮤니티
  • AWS, GCP, Azure, Digital Ocean 등과 같은 널리 사용되는 클라우드 플랫폼과 통합
  • 병렬로 작업을 수행하고 복잡한 CD 요구 사항을 실현하는데 활용할 수 있음
  • .war 형식의 설치 프로그램은 독립 실행형 자바 애플리케이션이며 즉시 사용 가능

 

단점

  • Jenkins의 구린 UI
  • Jenkins의 장점은 다양한 플러그인이지만 다양한 만큼 변경도 잦고, 세팅하고나서도 빈번하게 플러그인을 업그레이드 해줘야 한다.
  • GUI를 통해 설정을 할 경우 설정 사항을 문서화 하는 것이 어렵다.(Jenkins cli로 해결 가능하나, 플러그인 설치 및 관리가 쉽지 않고 클러스터에서 프로비저닝 후 추가 스크립트를 실행해야한다.

- GoCD

장점

  • 종속성을 쉽게 구성할 수 있다.
  • YAML 및 JSON 형식 코드로 파이프라인 구현 가능
  • VSM은 워크플로의 종단 간 구현에 대한 완벽한 실시간 시각화 제공
  • Jenkins만큼 광범위하진 않지만 여전히 진화하는 플러그인 생태계
  • 사용자 인증 및 사용자 권한 부여를 처리
  • Windows, macOS, Docker 등에서 작동
  • 병렬실행 지원
  • 설정이 쉽고, 대쉬보드 디자인이 깔끔

 

단점

  • 클라우드 네이티브 하지 않는다. GoCD를 쿠버네티스에서 사용하기 위해선 작업을 수행하는 작업자가 gocd-agent 이미지 위에서 동작해야 한다.

- DRONE

장점

  • 셀프 서비스, 클라우드, 컨테이너 기반 구축
  • 150개의 플러그인
  • 모든 플랫폼 지원(유료 버전 포함)
  • 모든 언어 지원(유료 버전 포함)
  • 파이프라인을 코드로 관리
  • 엔지니어의 작업을 90% 감소
  • 인프라 비용 75% 감소
  • 1억개 이상의 도커를 시작하는데 5분이상 걸리지 않음

단점

  • 유료버전에서 더 많은 서비스 제공
  • 국내 시장에서 대중화되어있지 않음

 

CD Tools

- ArgoCD

장점

  • 자동 또는 수동으로 Kubernetes 클러스터에 애플리케이션을 배포하고 동기화하는 기능
  • UI를 통한 드리프트 감지, 수정, 보고 및 시각화
  • RBAC를 통한 다중 Kubernetes 클러스터 및 다중 테넌시 지원
  • 여러 공급자를 통한 SSO
  • Github, BitBucket 및 GitLab을 통한 웹후크 지원]

단점

  • 최대 단점은 쿠버네티스에서만 ArgoCD를 사용할 수 있습니다.

 

- Spinnaker

장점

  • 멀티클라우드 지원
  • Kubernetes 지원
  • 다양한 배포전략(Blue-Green, Rolling, Canary)
  • 커뮤니티 활동 활발( github, slack)
  • RBAC 지원
  • CI 통합 용이 ( Jenkins)
  • CLI를 통한 설치 및 관리(halyard)
  • 유연한 pipeline management 전략 

 

단점

  • 러닝커브 있음
  • 다소 무거움
  • 작은 규모 서비스에는 적합하지 않음

- TEKTON

장점

  • 재사용 : tekton의 모든 task들은 다른 pipeline과 완전히 독립적으로 사용할 수 있습니다. 즉 모듈화가 잘 되어있어 여러 pipeline에서 필요한 task들을 갖다 쓸 수 있습니다.
  • 표준화 : Tekton은 Kubernetes의 Custom Resource를 사용해 정의됩니다.
  • 기능의 확장성 : Tekton Hub를 통해 Tekton커뮤니티에서 제작한 여러 종류의 task들을 사용할 수 있습니다.
  • OpenShift와도 효과적으로 연동

 

단점

  • 관련 정보가 많이 없습니다.
  • 쿠버네티스 내부에서만 동작 가능합니다.
  • Github, Docker Hub 등 외부 서비스에 접근하기 위해서는 자격증명 설정이 필요합니다.
  • 롤백기능이 없습니다.

 

 

이상으로 CI/CD의 개념과 구현을 위해 사용되는 도구들에 대해 알아보았습니다.
다음 포스팅 때는 또 다른 내용으로 찾아 뵙겠습니다~~ 다음에 만나요~

 

'INFRA > DevOps' 카테고리의 다른 글

[K8S] NodeSelector  (0) 2023.08.29
[K8S] Ingress  (0) 2023.08.19
[K8S] Service  (0) 2023.08.01
[K8S] NetworkPolicy  (0) 2023.08.01
[K8S] Node Upgrade  (0) 2023.07.20

댓글