Cloud_Computing

[Cloud Computing] CI/CD

cc_blog 2026. 7. 27. 16:50
[Cloud Computing] CI/CD 완전 정리
CLOUD COMPUTING · DEVOPS

CI/CD

코드가 커밋되는 순간부터 사용자에게 도달하기까지. CI·CD의 정확한 정의부터 Rolling·Blue-Green·Canary 배포, 그리고 AWS Code 시리즈·Jenkins·GitHub Actions·ArgoCD 실전 활용까지.

CategoryLevelReadsStatus
Cloud Computing · DevOps 중급 약 20분 VERIFIED
01 · Concept

CI (Continuous Integration)란?

CI는 여러 개발자가 작성한 코드를 자주, 자동으로 통합·검증하는 방식이다.

옛날 방식은 몇 주씩 각자 따로 개발하다가 한 번에 코드를 합쳤다. 이러면 충돌(merge conflict)이 산더미처럼 쌓이고, 어디서 문제가 생겼는지도 알기 어렵다. CI는 이걸 반대로 뒤집는다 — 커밋할 때마다(하루에도 여러 번) 즉시 통합하고, 자동으로 빌드하고, 자동으로 테스트를 돌린다. 문제가 생기면 몇 주 뒤가 아니라 몇 분 안에 알 수 있다.

1. 커밋 & 푸시

개발자가 코드를 원격 저장소에 올리면 파이프라인이 자동으로 트리거된다.

2. 빌드

코드를 실행 가능한 형태(바이너리, 도커 이미지 등)로 컴파일·패키징한다.

3. 자동 테스트

단위 테스트, 통합 테스트 등을 자동 실행해서 코드가 여전히 정상 동작하는지 검증한다.

4. 산출물(Artifact)

검증을 통과한 결과물을 저장소(레지스트리 등)에 저장해서, 다음 단계(CD)가 바로 가져다 쓸 수 있게 한다.

02 · Concept

CD란? — Delivery와 Deployment는 다르다

CD는 두 가지 다른 의미로 쓰여서 헷갈리기 쉽다. 둘 다 CI가 끝난 뒤 이어지는 단계지만, "사람의 승인이 끼는가"가 결정적인 차이다.

Continuous Delivery

배포 직전까지 자동으로 준비는 해두지만, 실제 프로덕션 반영은 사람이 버튼을 눌러야 실행된다. "언제든 배포할 수 있는 상태"를 항상 유지하는 것이 핵심이다.

Continuous Deployment

테스트를 통과하면 사람 개입 없이 곧바로 프로덕션까지 자동 배포된다. 배포 속도는 가장 빠르지만, 그만큼 테스트 신뢰도가 뒷받침돼야 한다.

커밋 CI 빌드+테스트 Artifact 사람 승인 (Delivery) Production ↑ Continuous Delivery: 여기서 사람이 배포 버튼을 누른다 ↑ Continuous Deployment: 승인 단계 없이 자동으로 직행
둘 다 "Artifact까지 자동"은 같지만, 마지막 한 단계(승인)의 유무가 다르다
헷갈리지 않기 실무에서는 편의상 "CI/CD"라고 뭉뚱그려 부르지만, 정확히는 CI(통합·검증) → CD(Delivery 또는 Deployment, 실제 배포)로 이어지는 파이프라인 전체를 뜻한다. 이 글의 뒤쪽 "실전 도구" 섹션에서 어떤 도구가 Delivery만 하는지, Deployment까지 가는지도 함께 짚는다.
03 · Deployment Strategy

배포 전략 ① Rolling (롤링 배포)

기존 서버(인스턴스/Pod)를 한 번에 조금씩 새 버전으로 교체해나가는 방식이다. Kubernetes Deployment의 기본 배포 방식이기도 하다.

1단계 2단계 3단계 v1 v1 v2 v1 v2 v2 v2 v2 v2 한 번에 한두 개씩만 교체해서, 전체 서비스는 계속 살아있는 상태를 유지한다
Rolling — 파란(구버전)이 초록(신버전)으로 점진적으로 교체된다
장점
  • 추가 서버 자원이 거의 필요 없음(기존 자원 재활용)
  • 중단 없이(무중단) 배포 가능
  • 구현이 비교적 단순함
단점
  • 배포 도중 신·구 버전이 동시에 떠 있어 호환성 이슈 가능
  • 문제 발생 시 롤백도 다시 "롤링"으로 되돌려야 해서 느림
  • 즉각적인 트래픽 전환이 아니라 완전 롤백까지 시간이 걸림
04 · Deployment Strategy

배포 전략 ② Blue/Green

Rolling과 다르게, 완전히 똑같은 환경 두 벌을 준비한다. 지금 트래픽을 받고 있는 환경을 Blue, 새 버전을 미리 다 띄워놓은 대기 환경을 Green이라 부른다. 준비가 끝나면 라우터(로드밸런서)가 트래픽을 Blue에서 Green으로 한 번에 전환한다.

사용자 라우터 Blue (v1) 현재 라이브 트래픽 Green (v2) 새 버전, 미리 검증 완료 문제가 생기면 라우터를 다시 Blue로 돌리기만 하면 즉시 롤백된다
Blue는 현재 운영 중, Green은 다음 버전 대기 — 전환은 라우팅 스위치 하나로 끝난다
장점
  • 전환이 즉각적이고, 롤백도 스위치만 되돌리면 되므로 매우 빠름
  • 신·구 버전이 트래픽 레벨에서 동시에 섞이지 않아 안전함
  • Green 환경에서 배포 전 최종 검증(스모크 테스트)이 가능
단점
  • 환경을 통째로 두 벌 운영해야 해서 인프라 비용이 두 배에 가까움
  • DB 스키마 변경처럼 두 버전이 공유하는 자원이 있으면 설계가 까다로움
  • 전환 순간 모든 사용자가 한 번에 새 버전을 겪음(문제 있으면 영향 범위가 큼)
뒤에서 다시 나옴 이 "Blue/Green" 개념 — 새 버전을 미리 준비해두고, 검증되면 트래픽을 스위치한다 — 은 이후 나올 ArgoCD·GitOps의 배포 방식을 이해하는 데 그대로 쓰인다. Kubernetes 환경에서는 이 Blue/Green(그리고 곧 볼 Canary)을 Argo Rollouts 같은 컨트롤러가 자동화해준다.
05 · Deployment Strategy

배포 전략 ③ Canary (카나리 배포)

이름은 탄광 속 카나리아 새에서 왔다 — 위험을 가장 먼저 감지하는 존재. 새 버전에 아주 적은 비율의 트래픽만 흘려보내고, 문제가 없으면 그 비율을 점점 늘려가는 방식이다.

5% 25% 100% v1 (95%) v2 v1 (75%) v2 (25%) v2 (100%) 지표(에러율·지연시간)를 지켜보면서 문제 없으면 점진적으로 비율을 늘린다 이상 감지 시 즉시 0%로 되돌려 피해를 최소화한다
Canary — 소수의 사용자부터 점진적으로 새 버전에 노출시킨다
장점
  • 문제가 있어도 극히 일부 사용자에게만 영향
  • 실제 프로덕션 트래픽으로 검증 가능(테스트 환경의 한계 보완)
  • A/B 테스트처럼 지표 기반 의사결정과 결합하기 좋음
단점
  • 전체 전환까지 시간이 오래 걸림(신중한 만큼 느림)
  • 트래픽을 비율대로 나누는 정교한 라우팅·모니터링 인프라가 필요
  • 일부 사용자만 새 버전을 겪는 동안 일관성 문제가 생길 수 있음
06 · Decision Guide

배포 전략 비교 — 언제 무엇을 쓸까

구분RollingBlue/GreenCanary
인프라 비용낮음높음(환경 2배)중간
롤백 속도느림매우 빠름빠름(비율만 0으로)
위험 노출 범위중간전환 순간 전체매우 작게 시작
구현 복잡도낮음중간높음(정교한 라우팅 필요)
적합한 상황일반적인 서비스, 비용 민감즉각 롤백이 중요한 서비스사용자 영향 최소화가 최우선인 대규모 서비스
07 · CI Tools

CI 도구들 — 뭐가 있나

CI를 실행해주는 도구는 생각보다 다양하다. 대부분 "코드 저장소에 변화가 생기면 자동으로 빌드·테스트를 실행"하는 역할은 같고, 어디서 어떻게 실행하느냐가 다르다.

도구특징
Jenkins가장 오래되고 널리 쓰이는 오픈소스. 플러그인으로 거의 모든 걸 확장 가능하지만 직접 서버를 운영해야 함
GitHub ActionsGitHub 저장소에 내장된 CI/CD. 워크플로우를 YAML로 정의, 별도 서버 설치 불필요
GitLab CI/CDGitLab에 내장. 저장소·CI·CD·이슈 관리를 하나의 플랫폼에서 처리
CircleCI클라우드 기반 CI 전문 서비스. 빠른 실행 속도와 캐싱 최적화로 유명
Travis CI오픈소스 프로젝트에서 초창기 인기를 끌었던 클라우드 CI 서비스
AWS CodeBuildAWS의 완전관리형 빌드 서비스. 서버 없이 컨테이너에서 빌드·테스트 실행
TeamCity / BambooJetBrains(TeamCity), Atlassian(Bamboo)의 기업용 CI 서버, 대규모 조직에서 사용
08 · CD in Practice
AWS

AWS Code 시리즈

AWS는 CI/CD 파이프라인의 각 단계를 서비스별로 나눠서 제공한다. 이름이 비슷해서 헷갈리기 쉬운데, 역할은 명확히 나뉜다.

CodeCommit / GitHub CodeBuild 빌드 + 테스트 CodeDeploy EC2/ECS/Lambda 배포 Production 이 전체 흐름을 오케스트레이션하는 게 CodePipeline이다
CodePipeline이 지휘자, CodeCommit·CodeBuild·CodeDeploy가 각 단계 담당자
CodeCommit

Git 기반 소스 저장소(요즘은 GitHub 등 외부 저장소를 그대로 쓰는 경우도 많음).

CodeBuild

소스를 빌드하고 테스트를 실행하는 완전관리형 서비스. 서버를 직접 띄울 필요가 없다.

CodeDeploy

빌드된 결과물을 EC2, ECS, Lambda 등에 실제로 배포한다. Rolling·Blue/Green 배포를 옵션으로 지원한다.

CodePipeline

위 세 단계를 하나의 파이프라인으로 연결·자동화하는 오케스트레이션 서비스.

장점
  • 서버 관리 없이 완전관리형으로 운영 부담이 적음
  • IAM, VPC 등 다른 AWS 서비스와 통합이 매끄러움
  • CodeDeploy가 Blue/Green 배포를 기본 지원
단점
  • AWS 생태계에 종속됨
  • Jenkins·GitHub Actions 대비 커뮤니티 플러그인·확장성이 상대적으로 적음
  • 복잡한 파이프라인 구성 시 여러 서비스를 함께 이해해야 해서 학습 곡선이 있음
09 · CD in Practice

Jenkins

가장 오래되고 여전히 가장 널리 쓰이는 오픈소스 자동화 서버다. Jenkinsfile이라는 파이프라인 정의 파일에 빌드·테스트·배포 전체 흐름을 코드로 적어둔다(Pipeline as Code).

장점
  • 수천 개의 플러그인으로 거의 모든 도구·서비스와 연동 가능
  • 온프레미스든 클라우드든 어디에나 설치 가능
  • 오랜 기간 검증된 안정성과 방대한 커뮤니티 자료
단점
  • 서버를 직접 설치·운영·업데이트해야 함
  • 플러그인 의존성이 쌓이면 관리가 복잡해짐
  • UI가 상대적으로 오래된 느낌, 초기 설정에 손이 많이 감
10 · CD in Practice

GitHub Actions

GitHub 저장소에 내장된 CI/CD 도구다. .github/workflows/*.yml 파일 하나로 "언제(트리거) 무엇을(job) 할지"를 정의한다. 별도 서버 설치 없이 GitHub가 제공하는 실행 환경(Runner)에서 곧바로 돌아간다.

Push/PR 이벤트 발생
  → GitHub가 workflow YAML을 읽음
  → Runner(가상 머신)에서 job 실행
  → 빌드 · 테스트 · (필요시) 배포까지 한 파일로 정의
장점
  • GitHub와 완벽 통합, 별도 서버·계정 설정 불필요
  • Marketplace의 방대한 재사용 가능한 Action으로 빠른 구성
  • 오픈소스 프로젝트는 무료로 넉넉하게 사용 가능
단점
  • GitHub 생태계 밖에서는(다른 저장소) 그대로 못 씀
  • 대규모 조직에서는 실행 시간·동시성 비용이 늘어날 수 있음
  • 복잡한 파이프라인은 YAML이 금방 길어지고 관리가 번거로워짐
11 · CD in Practice

ArgoCD와 GitOps

ArgoCD는 지금까지의 도구들과 접근 방식 자체가 다르다. Jenkins·GitHub Actions가 "파이프라인이 능동적으로 서버에 접속해서 배포 명령을 내리는" 방식이라면, ArgoCD는 GitOps라는 철학을 따른다.

GitOps란

Git 저장소에 적힌 내용을 "있어야 할 상태(Desired State)"의 유일한 근거로 삼는 방식. 배포는 "명령을 실행"하는 게 아니라 "Git을 원하는 상태로 고치는 것"이 된다.

ArgoCD의 동작

ArgoCD는 Kubernetes 클러스터 안에서 계속 돌면서, Git에 적힌 상태와 클러스터의 실제 상태(Actual State)를 끊임없이 비교한다. 다르면(Drift) 자동으로 클러스터를 Git에 맞게 맞춘다(Sync).

Git Repo (Desired State) ArgoCD 계속 비교·동기화 Kubernetes (Actual State) Sync (다르면 맞춤) 현재 상태 지속 관찰
배포 = Git에 원하는 상태를 적는 것. 실제 반영은 ArgoCD가 자동으로 맞춘다
Blue/Green이 여기서 다시 나옴 ArgoCD 자체는 "Git과 클러스터를 맞추는" 역할까지만 한다. 실제로 어떻게 트래픽을 전환할지(한 번에? 점진적으로?)는 Argo Rollouts라는 확장 컨트롤러가 맡는데, 여기서 앞서 배운 Blue/GreenCanary 전략을 그대로 선택해서 쓴다. 즉 "Git 상태를 바꾸면 → ArgoCD가 감지하고 → Argo Rollouts가 Blue/Green이나 Canary 방식으로 실제 트래픽을 전환"하는 조합이 완성된다.
장점
  • Git이 유일한 진실 공급원(Single Source of Truth) — 배포 이력이 곧 Git 커밋 이력
  • 클러스터가 수동으로 바뀌어도(Drift) 자동으로 원상 복구
  • 롤백이 "이전 커밋으로 되돌리기"만큼 간단함
  • Argo Rollouts와 결합해 Blue/Green·Canary를 선언적으로 관리
단점
  • Kubernetes 환경 전제 — 그 밖에서는 쓰기 어려움
  • GitOps 개념 자체의 학습 곡선이 있음
  • CI(빌드·테스트)는 별도 도구가 필요 — ArgoCD는 CD 전용
12 · Other Tools

그 외에도 이런 도구들이 있다

도구특징
SpinnakerNetflix가 만든 멀티 클라우드 CD 플랫폼. Canary 분석 기능이 강력함
FluxArgoCD와 같은 GitOps 진영의 경쟁 도구. CNCF 프로젝트로 더 가벼운 구조가 특징
TektonKubernetes 네이티브로 설계된 CI/CD 파이프라인 프레임워크
HarnessAI 기반 배포 검증·비용 최적화를 내세우는 상용 CD 플랫폼
AWS CodeDeploy(단독)CodePipeline 없이 배포 단계만 따로 쓸 수도 있음(다른 CI와 조합)
13 · Real-world Combos

실무에서 자주 쓰는 조합

보통 CI 도구 하나와 CD 도구 하나를 조합해서 쓴다. 대표적인 조합은 이렇다.

GitHub Actions + ArgoCD

GitHub Actions가 빌드·테스트 후 이미지를 만들고 Git 매니페스트를 갱신하면, ArgoCD가 그 변화를 감지해 Kubernetes에 반영한다. 최근 가장 인기 있는 GitOps 조합.

Jenkins + AWS CodeDeploy

Jenkins가 빌드·테스트를 맡고, 실제 EC2/ECS 배포는 AWS CodeDeploy에 위임하는 전통적인 조합.

CodePipeline (풀 AWS)

CodeCommit/GitHub → CodeBuild → CodeDeploy까지 전부 AWS 서비스로 통일해서 관리 지점을 하나로 줄인다.

GitLab CI + Kubernetes

GitLab 하나로 코드 저장, CI, 심지어 배포(Auto DevOps)까지 처리하는 올인원 조합.

14 · Why CI/CD

왜 CI/CD를 도입하는가

이점
  • 버그를 몇 주가 아니라 몇 분 안에 발견
  • 배포가 두렵지 않은 일상적인 작업이 됨(자주, 작게 배포)
  • 사람의 실수(수동 배포 절차 누락 등)를 자동화로 제거
  • 배포 이력·롤백이 명확하게 추적 가능
도입 시 고려할 점
  • 테스트 코드가 부실하면 CI가 "빠르게 잘못된 것을 통과시키는" 도구가 될 수 있음
  • 초기 파이프라인 구축·유지에 시간 투자가 필요함
  • 배포 전략(Blue/Green 등)까지 도입하려면 인프라·비용 설계가 함께 필요함
15 · Wrap-up

정리

CI는 "자주 통합하고 자동으로 검증"하는 것, CD는 그 결과를 "자동으로 준비"(Delivery)하거나 "자동으로 배포"(Deployment)하는 것이다. 그 배포를 어떻게 실행할지가 Rolling·Blue/Green·Canary이고, Jenkins·GitHub Actions·AWS Code 시리즈가 그 파이프라인을 자동화하는 전통적인 도구라면, ArgoCD·GitOps는 "Git이 곧 정답"이라는 다른 철학으로 그 위에 Blue/Green·Canary를 얹어 배포한다. 결국 CI/CD는 하나의 정답이 아니라, 팀의 상황에 맞는 도구와 전략을 조합하는 문제다.

CLOUD COMPUTING BLOG CI/CD · DEVOPS · ARGOCD · GITOPS