CI?
CI(Continuous Integration: 지속적인 통합)는 개발자가 코드를 자주 병합하고, 이 과정에서 자동화된 빌드 및 테스트를 실행하여 코드 품질과 안정성을 검증하는 과정이다. 주요 목적은 코드 변경으로 발생할 수 있는 문제를 빠르게 발견하고 해결하는 것이다.
CI의 핵심
- 짧은 주기의 코드 커밋: 긴 주기의 커밋은 변경 사항 간 충돌 위험을 높이고, 문제 해결 시간을 늘린다. 따라서 짧은 주기의 코드 커밋을 통해 코드의 안정성을 높일 수 있다.
- 자동화된 테스트와 빌드: 자동화된 과정을 통해 개발 속도를 높이고 품질을 보장한다.
CI의 예시
- 코드 변경 감지 및 파이프라인 트리거
- 단위 테스트 실행
- 도커 이미지 빌드 및 태깅(테스트용)
- 통합 테스트 실행
- 테스트 통과 및 결과 보고
CD?
CD(Continuous Delivery: 지속적인 전달) 또는 (Continuous Deployment: 지속적인 배포) 를 뜻하며 테스트를 통과한 소프트웨어를 사용자 또는 배포 환경에 배포하는 과정을 의미한다.
- Continuous Delivery(지속적인 전달): 배포 준비 상태까지 자동화, 최종 배포는 수동으로 진행.
- Continuous Deployment(지속적인 배포): 최종 배포까지 완전히 자동화.
CD의 예시
- 빌드된 도커 이미지 푸시
- 배포 환경 준비
- 애플리케이션 배포
- 배포 확인 및 검증
CI/CD의 경계
CI는 코드 변경 시 자동화된 빌드 및 테스트를 통해 품질을 검증하는 단계이다. CI의 종료 지점은 모든 테스트가 통과되고 빌드가 성공적으로 완료된 시점이다.
CD는 테스트를 통과한 결과물을 배포 환경으로 전달하거나 사용자에게 제공하는 단계이다. CD의 시작 지점은 CI에서 생성된 산출물을 배포하는 작업부터이다.