개요
CI/CD (Continuous Integration / Continuous Delivery)는 코드 변경을 자동으로 빌드, 테스트, 배포하는 소프트웨어 개발 방식입니다. 주요 CI/CD 도구를 비교합니다.
CI/CD 파이프라인 기본 흐름
[코드 푸시] → [빌드] → [테스트] → [보안 스캔] → [스테이징 배포] → [승인] → [프로덕션 배포]
주요 도구
GitHub Actions
| 항목 | 내용 |
|---|
| 제공 | GitHub (Microsoft) |
| 유형 | 클라우드 (셀프호스팅 러너 지원) |
| 설정 | .github/workflows/*.yml |
| 무료 | 퍼블릭 리포 무제한, 프라이빗 2,000분/월 |
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install && npm test
장점: GitHub 네이티브, 마켓플레이스 (20,000+ 액션), 매트릭스 빌드, OIDC
단점: 복잡한 파이프라인은 YAML 지옥, 디버깅 어려움
GitLab CI/CD
| 항목 | 내용 |
|---|
| 제공 | GitLab |
| 유형 | 클라우드 + 셀프호스팅 |
| 설정 | .gitlab-ci.yml |
| 무료 | 400분/월 (SaaS), 셀프호스팅 무제한 |
장점: GitLab과 완전 통합, DAG 파이프라인, 내장 컨테이너 레지스트리, 보안 스캔 내장
단점: GitLab 생태계 종속
Jenkins
| 항목 | 내용 |
|---|
| 유형 | 셀프호스팅 (오픈소스) |
| 설정 | Jenkinsfile (Groovy) |
| 무료 | 완전 무료 |
장점: 가장 오래된 CI/CD, 1,800+ 플러그인, 완전한 커스터마이징
단점: 설정/관리 복잡, UI 구식, 플러그인 호환성 이슈
ArgoCD
| 항목 | 내용 |
|---|
| 유형 | GitOps CD (Kubernetes 전용) |
| 핵심 | Git 리포 = 원하는 상태 → K8s 자동 동기화 |
| 무료 | 오픈소스 |
장점: GitOps 표준, K8s 네이티브, 선언적, 자동 동기화/롤백
단점: K8s 전용, CI 기능 없음 (별도 CI 도구 필요)
CircleCI
| 항목 | 내용 |
|---|
| 유형 | 클라우드 (셀프호스팅 가능) |
| 무료 | 6,000분/월 |
장점: 빠른 빌드, Docker 레이어 캐싱, Orbs (재사용 설정)
단점: 가격, 과거 보안 사고
Tekton
| 항목 | 내용 |
|---|
| 유형 | Kubernetes 네이티브 CI/CD 프레임워크 |
| 개발 | Google/CD Foundation |
| 무료 | 오픈소스 |
장점: K8s 네이티브, 클라우드 벤더 중립, 파이프라인 재사용 (카탈로그)
단점: 학습 곡선 높음, 직접 구축 필요
기타
| 도구 | 특징 |
|---|
| Drone CI | 컨테이너 네이티브, 경량, YAML |
| Buildkite | 하이브리드 (클라우드 오케스트레이션 + 셀프호스팅 에이전트) |
| Dagger | 파이프라인을 코드로 작성 (Go/Python/TS), 로컬에서 동일 실행 |
| Flux | ArgoCD 대안, CNCF GitOps |
| AWS CodePipeline | AWS 네이티브 |
| Azure DevOps | Microsoft, 올인원 |
비교
| 도구 | 유형 | K8s | GitOps | 난이도 | 최적 용도 |
|---|
| GitHub Actions | 클라우드 | O | △ | 낮음 | GitHub 프로젝트 |
| GitLab CI | 하이브리드 | O | O | 중간 | GitLab 생태계 |
| Jenkins | 셀프호스팅 | O | △ | 높음 | 레거시, 완전 커스텀 |
| ArgoCD | 셀프호스팅 | 전용 | 최강 | 중간 | K8s GitOps CD |
| CircleCI | 클라우드 | O | △ | 낮음 | 빠른 빌드 |
| Tekton | 셀프호스팅 | 전용 | O | 높음 | K8s 네이티브 CI |
| Dagger | 로컬+클라우드 | O | X | 중간 | 파이프라인 as Code |
선택 가이드
| 상황 | 추천 |
|---|
| GitHub 사용 | GitHub Actions |
| GitLab 사용 | GitLab CI |
| Kubernetes 배포 | ArgoCD (CD) + GitHub Actions/Tekton (CI) |
| 셀프호스팅 (비K8s) | Jenkins or Drone CI |
| 로컬 파이프라인 디버깅 | Dagger |
| 엔터프라이즈 (Microsoft) | Azure DevOps |
관련 항목