이제 CI/CD는 더 이상 선택이 아닌 필수가 되었다.
빠른 개발 속도와 안정적인 서비스 운영을 위해 반드시 구축해야 하는 개발 프로세스인
CI/CD가 무엇인지 그 개념부터 필요성, 대표 CI/CD 툴까지 알아보자.
CI (Continuous Integration)
여러 개발자가 하나의 프로젝트를 진행할 때, 각자 맡은 기능을 며칠, 몇주에 걸쳐 개발한 뒤 마지막에 코드를 합친다면 수많은 conflict가 발생하여 해결에 엄청난 시간이 소요될 것이다.
CI란?
: 여러 개발자의 각 소스들을 메인 소스에 병합하고 빌드하는 과정의 반복을 자동화하는 것
'주기적으로', 그리고 '자동으로' 통합하고 테스트하는 것
왜 필요할까?
- 코드 통합 시 발생하는 문제점을 조기에 발견하고 빠르게 해결 가능
- 버그가 발견되는 시점을 앞당기고, 코드의 품질을 일정하게 유지할 수 있음
- 개발자는 항상 테스트된 상태로 유지되는 안정적인 코드 기반 위에서 자신의 작업에 집중할 수 있음
→ CI 환경에서 개발자가 코드를 push하면 CI 서버(Jenkins, Github Actions 등)가 이를 감지하여 자동으로 빌드 및 테스트를 수행하고 그 결과를 즉시 피드백해준다
CD (Continuous Delivery/Deployment)
배포 과정을 자동화하지 않으면 매번 반복되는 빌드, 테스트, 배포 작업을 개발자가 직접 수행하여 불필요한 시간과 노력이 소요된다. 또, 수동 배포 시 발생할 수 있는 설정 오류, 빌드 실패 위험을 CD를 통해 감소시킬 수 있다.
CD란?
: CI를 통해 통합된 코드를 테스트하고, 최종적으로 운영 환경에 배포하는 과정을 자동화하는 것
CD는 2가지 수준으로 나뉜다.
- 지속적 제공 (Continuous Delivery)
- 빌드, 테스트, 배포 준비까지의 모든 단계를 자동화하여, "언제든 배포 가능한 상태"를 유지하는 것
- 운영 환경으로의 실제 배포는 사람이 수동으로 제어. 배포 시점 조절 가능
- 지속적 배포 (Continuous Deployment)
- 지속적 제공에서 한 단계 더 나아가, 운영 환경 배포까지 자동화하는 것
- 모든 테스트를 통과한 코드는 사람의 개입 없이 즉시 운영 환경에 배포됨
CI/CD 파이프라인
소스 코드의 변경이 발생했을 때부터 최종 배포에 이르기까지 거쳐야 할 단계
Source → Build → Test → Deploy
- Source : 개발자가 코드를 버전 관리 시스템(VCS)에 푸시하면 파이프라인이 자동으로 시작됨
- Build : 푸시된 소스 코드를 컴파일하고, 실행 가능한 파일이나 배포 가능한 패키지로 만듦
- Test : 유닛 테스트, 통합 테스트 등 미리 정해진 테스트를 실행하여 코드의 품질과 안정성 검증
- Deploy : 모든 테스트를 성공적으로 통과하면 결과물을 Staging(Continuous Delivery) 또는 Production 환경에 자동으로 배포(Continuous Deployment)
주요 CI/CD 도구
클라우드 기반 솔루션과 직접 설치해서 사용하는 설치형(오픈소스) 도구가 있다.
대표적인 CI/CD 툴은 다음과 같다.
클라우드 기반
- Github Actions : GitHub 리포지토리 내에서 워크플로우를 자동화. 코드와 함께 CI/CD 파이프라인 관리 가능.
- GitLab CI/CD : GitLab에 내장된 CI/CD 도구.
- Azure DevOps: Microsoft 생태계 최적화
- AWS CodePipeline: 빌드, 테스트, 배포 등 AWS 서비스와 쉽게 연동할 수 있는 CI/CD 파이프라인.
오픈소스
- Jenkins : 가장 대표적인 CI/CD 오픈소스. 다양한 플러그인 제공. 설정과 관리가 복잡할 수 있음.
'infra' 카테고리의 다른 글
| [CI/CD] 위험을 감지하는 카나리(Canary) 배포 (0) | 2025.07.14 |
|---|---|
| [CI/CD] 가장 안전한 배포, 블루-그린(Blue-Green) 배포 (0) | 2025.07.14 |
| [CI/CD] 가장 기본적인 무중단 배포, 롤링 업데이트(Rooling Update) (0) | 2025.07.14 |