
CI/CD란?
- CI/CD (Continuous Integration / Continuous Delivery or Deployment)는 소프트웨어 개발부터 배포까지의 모든 단계를 자동화하여 효율적이고 빠르게 사용자에게 빈번하게 배포할 수 있도록 돕는 프로세스입니다.
- 목적: 개발 속도 향상, 코드 품질 유지, 안정적인 배포.
1. CI (지속적인 통합)
정의
- 코드 변경사항(버그 수정, 신규 기능 등)을 main repository에 정기적으로 통합(build, test, merge)하는 것.
- 익스트림 프로그래밍(Extreme Programming) 개발 방법론에서 유래.
핵심 포인트
- 코드 변경사항의 빈번한 통합
- 충돌을 최소화하고 최신 상태의 코드를 유지하기 위해 자주 머지.
- 통합 과정 자동화
2. CD (지속적인 제공 또는 배포)
정의
3. CI/CD 파이프라인
CI/CD 프로세스는 다음 단계들로 구성됩니다:
-
Code
- 개발자가 소스 코드를 작성하고 main branch에 푸시.
-
Build
- 코드를 실행 가능한 상태로 빌드.
- 예: 컴파일, 패키징.
-
Test
- 작성된 코드가 제대로 작동하는지 검증.
- 단위 테스트(Unit Test), 통합 테스트(Integration Test) 등을 포함.
-
Release
- 배포 준비 상태로 릴리즈.
- 예: 버전 관리, 아티팩트 생성.
-
Deploy
- 릴리즈된 소프트웨어를 실제 사용자 환경에 배포.
4. CI/CD 도구
현업에서 자주 사용되는 주요 CI/CD 툴들:
- Jenkins: 가장 널리 사용되는 오픈소스 CI/CD 툴.
- Buildkite: 빠른 빌드 환경 제공.
- GitHub Actions: GitHub와 통합된 CI/CD 솔루션.
- GitLab CI/CD: GitLab의 내장형 CI/CD 도구.
- Bitbucket Pipelines: Atlassian의 CI/CD 서비스.
- CircleCI: 빠르고 강력한 CI/CD 플랫폼.
핵심 요약
- CI: 코드 통합(빌드, 테스트, 머지) 단계의 자동화.
- CD: CI 이후 배포 전(Continuous Delivery) 또는 배포까지(Continuous Deployment) 자동화.
- 도입 장점: 개발 주기 단축, 빠른 피드백, 배포 신뢰도 향상.