
CI/CD는 지속적인 통합(Continuous Integration)과 지속적인 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)의 약자다.
CI는 개발자가 작업한 코드를 주기적으로 빌드하고 테스트한 후 리포지토리에 통합하는 과정이며, CD는 이 통합된 코드를 실제 서비스에 배포하는 과정이다.
지속적인 통합(CI)은 개발자가 작성한 코드를 주기적으로 빌드하고 테스트하여 Main Repository에 통합하는 프로세스다.
CI는 코드 변경 사항을 주기적으로 빈번하게 머지하는 것과, 통합 자동화라는 두 가지 주요 포인트로 나눠볼 수 있다.
주기적인 merge
여러 개발자가 작성한 코드가 일정 시간이 지나면 충돌이 발생할 수 있기 때문에, 작은 단위로 빈번히 머지하는 것이 중요하다. 이를 통해 코드 충돌을 최소화하고, 코드 작성시간보다 문제 해결에 시간을 덜 소모하게 된다.
통합 자동화
CI 프로세스에서는 코드 변경 후 자동으로 빌드하고 테스트하는 과정을 설정하여, 반복적인 수작업을 줄이고 개발의 효율성을 높인다. 모든 변경 사항을 자동으로 빌드하고 테스트하여 오류를 빨리 찾아내고 수정할 수 있다.
지속적인 제공(Continuous Delivery, CD)과 지속적인 배포(Continuous Deployment, CD)는 CI에서 통합된 코드를 실제 서비스에 반영하는 두 가지 방법이다.
지속적인 제공 (Continuous Delivery):
수동 배포 방식으로, CI 단계에서 빌드와 테스트가 완료된 후 배포 준비 상태가 되면 개발자나 검증팀의 승인을 받아 수동으로 배포한다.
배포의 마지막 단계를 사람이 관리하여 더 세밀한 조정이 필요한 경우 사용된다.
지속적인 배포 (Continuous Deployment):
자동 배포 방식으로, CI 단계에서 테스트가 통과된 코드가 자동으로 프로덕션 환경에 배포된다.
이 방식은 더 빠르고 빈번한 배포를 가능하게 하여, 실시간으로 사용자 피드백을 받고 즉시 개선할 수 있다.
CI/CD 파이프라인
CI/CD 파이프라인은 애플리케이션 개발부터 배포까지의 모든 단계를 자동화하는 과정이다.
주요 단계는 다음과 같다.
Source
소스 코드의 변경 사항을 감지하고 이를 파이프라인의 다음 단계로 전달한다.
Build
소스 코드를 빌드하여 실행 가능한 형태로 만든다.
Test
빌드된 코드를 테스트하여 버그를 찾고, 통합된 코드가 잘 동작하는지 확인한다.
Deploy
최종적으로 테스트를 통과한 코드를 실제 서비스에 배포한다.
CI/CD Tool
CI/CD 파이프라인을 구성하는 데 도움이 되는 여러 툴들이 있다.
이들 tool은 자동화된 빌드, 테스트, 배포를 효율적으로 지원한다.
대표적인 Tool
빠른 피드백
코드가 변경되면 즉시 빌드하고 테스트하여, 오류를 빠르게 발견하고 수정할 수 있다.
자동화된 배포
배포 프로세스가 자동화되어, 개발자가 직접 배포하는 수고를 덜 수 있다.
향상된 협업
CI를 통해 개발자들이 자주 코드를 병합하고 테스트하므로 협업이 원활해진다.
품질 향상
지속적으로 코드 품질을 관리하고, 자동화된 테스트를 통해 오류를 최소화한다.
CI/CD는 개발에서 배포까지의 과정을 자동화하여 개발자들이 빠르고 효율적으로 애플리케이션을 운영할 수 있게 도와준다.
CI는 코드를 통합하고, CD는 이 코드를 실제 환경에 배포하는 단계로 나뉘며, 두 가지 모두 자동화되어 개발 속도와 품질을 높이는 데 큰 도움을 준다.
기업마다 상황에 따라 지속적 제공과 지속적 배포 중 하나를 선택하여 사용한다.