CI/CD는 Application 개발 단계를 자동화하여 어플리케이션을 보다 짧은 주기로 클라이언트에게 제공하는 방법이다.
(지속적인 통합, 지속적인 서비스 제공, 지속적인 배포)
또한 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 솔루션이다.
특히, CI/CD는 어플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 어플리케이션의 라이브사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공. 이를 일반적으로 CI/CD 파이프라인이라 부르며, 개발 및 운영팀의 애자일 방식 협력을 통해 지원됨.
CI(Continuous Integration)는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미함. CI를 성공적으로 구현할 경우 어플리케이션에대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 Repository에 통합되므로 여러 명의 개발자가 동시에 어플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제 해결이 가능함. 이는 개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해 줄 수 있음. 또한 CI는 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 함.
CD(Continuous Delivery)는 지속적인 서비스 제공 및 지속적인 배포를 의미하며 이 두 용어는 상호 교환적으로 사용됨. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 함. 이는 Application 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결할 수 있음.
CI/CD는 지속적 통합 및 지속적 제공의 구축 사례만을 지칭할 때도 있고, 지속적 통합, 지속적 제공, 지속적 배포라는 3가지 구축 사례 모두를 의미하는 것일 수도 있음. 좀 더 복잡하게 설명하면 "지속적인 서비스 제공"은 때로 지속적인 배포의 과정까지 포함하는 방식으로 사용되기도 함.
결과적으로, CI/CD는 파이프라인으로 표현되는 실제 Process를 의미하고, Application 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미함. 이 용어는 사례별로 CI/CD 파이프라인에 구현된 자동화 수준 정도에 따라 그 의미가 달라짐. 대부분의 기업에서는 CI를 먼저 추가한 다음 Cloud Native Application의 일부로서 배포 및 개발 자동화를 구현해 나아가는 것을 목표로 함.