개요
소프트웨어 개발론에서 CI/CD는 Continuous Integration(CI, 지속적인 통합)과 Continuous Delivery/Continuous Deployment(CD, 지속적인 배포/전개)를 의미하며, 개발 프로세스를 자동화하고 효율성을 높이는 데 중점을 둔 방법론입니다.
Continuous Integration (CI, 지속적인 통합)
CI는 개발자가 빈번하게(일일 또는 그 이상의 빈도) 자신의 코드 변경 사항을 중앙 리포지토리에 병합하는 개발 관행입니다. 각 병합 시점에서 자동화된 빌드와 테스트가 수행되어 코드의 품질을 지속적으로 검증합니다.
- 목표: 코드가 중앙 리포지토리에 통합될 때마다 빌드와 테스트를 자동으로 수행하여 코드가 항상 작동하는 상태로 유지되도록 하는 것.
- 주요 이점:
- 버그가 일찍 발견되며, 문제를 작은 부분에서 빠르게 해결 가능.
- 팀 내 협업이 쉬워짐(코드 통합을 빠르고 빈번하게 함).
- 코드 충돌을 줄이고 안정적인 빌드를 유지.
Continuous Delivery/Deployment (CD, 지속적인 배포)
CD는 코드 변경 사항을 프로덕션과 유사한 환경에 자동으로 배포할 수 있도록 준비하는 프로세스를 말합니다. CI와 마찬가지로 지속적으로 빌드와 테스트가 진행되지만, CD는 추가로 이 빌드가 항상 프로덕션 환경에 배포될 준비가 되어 있다는 것을 보장합니다. 이때 배포 자체는 여전히 수동으로 이루어질 수 있습니다.
Continuous Deployment는 Continuous Delivery의 연장선으로, 코드를 자동으로 프로덕션 환경에 배포하는 것을 의미합니다. 코드가 중앙 리포지토리에 통합되고, 빌드와 테스트가 완료되면 수동 개입 없이 자동으로 배포까지 진행됩니다.
- 목표
- 모든 코드 변경 사항이 배포 가능한 상태에 있는지 확인하고, 이를 프로덕션에 쉽게 배포할 수 있도록 준비하는 것.
- 코드 변경이 성공적으로 통합되고 테스트를 통과하면 즉시 프로덕션 환경에 자동 배포하는 것.
- 주요 이점
- 새로운 기능이나 버그 수정 사항을 빠르게 사용자에게 제공 가능.
- 배포 과정의 리스크와 복잡성 감소.
- 코드 변경 사항이 고객에게 즉각 전달.
- 전체 배포 프로세스 자동화로 신속하고 반복적인 배포 가능.
CI와 CD의 차이점
- CI(지속적인 통합): 주로 코드 변경을 자동으로 빌드하고 테스트하는 프로세스에 중점을 둡니다. 개발 단계에서의 코드 품질을 보장하며, 병합 시점에서 발생할 수 있는 충돌이나 오류를 빠르게 발견할 수 있도록 합니다.
- CD(지속적인 배포/전개): 빌드가 완료된 후 코드를 자동으로 배포할 수 있도록 준비하는(Continuous Delivery) 또는 실제로 배포하는(Continuous Deployment) 프로세스에 중점을 둡니다. 이를 통해 릴리스 주기를 단축하고, 사용자에게 새로운 기능을 빠르게 전달할 수 있습니다.