CI는 빌드와 테스트를 자동화해서 공유 저장소에 병합시키는 프로세스를 뜻한다. Git과 같은 버전관리 시스템을 사용할 때 여러명의 개발자가 하나의 공유 저장소를 사용하는 경우가 많았습니다.
이렇게 되면 새로운 코드의 변경 사항이 저장소에 통합되지 않을 경우 서로 충돌할 수 있습니다.
따라서 빌드와 테스트 자동화부터 코드의 일관성(Consistency)을 제공하기 때문에 지속적으로 통합한다는 용어를 사용하는 것입니다.
CD는 CI의 빌드/테스트를 통해서 정상적으로 수행됨을 확인하면 이는 배포를 수동으로 하느냐 자동으로 하느냐에 따라 2가지로 나뉩니다.
프로덕션 배포를 위한 상태가 되고 배포 자체는 수동으로 실행합니다.
개발팀과 비즈니스팀 간의 커뮤니케이션 부족 문제를 해결합니다.
프로덕션까지 자동으로 배포합니다.
어플리케이션의 제공 속도를 증가시킵니다.
CI/CD의 대표적인 서비스로는 Jenkins, Travis CI, Circle CI 등이 있으며 현직에서는 Jenkins를 많이 사용하는 것 같습니다.