베하~~
안녕하세요 항상 웃음이 나는 픠식팀 입니다.
이번 포스팅에서는 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 |
댓글