CI
는 지속적 통합(Continuous Integration)의 약자이며, CD
는 지속적 제공·배포(Continuous Delivery/Deployment)의 약자입니다.
개발 단계부터 배포 단계까지 모든 단계를 자동화를 통해서 조금 더 효율적이고 빠르게 사용자에게 빈번이 배포할 수 있도록 만드는 것을 말합니다.
CI/CD에서 사용되는 툴은 JenKins, Buildkite, GitHub Actions, GitLab CI/CD, Bitbucket Pipelines, CircleCI 등이 있습니다.
버그 수정이나 새로 만드는 기능들이 메인 리포지터리에 주기적으로 빌드되고 테스트가 되어서 병합되는 것을 말합니다.
CI 원칙을 따르면 주기적으로 병합하기에 병합 충돌을 피할 수 있어 개발 생산성이 향상됩니다. 또한 병합되는 모든 코드들은 자동으로 빌드되고 테스트 되기 때문에 코드의 결함이나 문제점이 빠르게 발견될 수 있습니다. 주기적으로 코드를 병합하기 위해서 코드의 변경사항이 잦기 때문에 문제를 수정할 때도 조금 더 작은 단위의 문제를 확인할 수 있습니다.
지속적 제공, 지속적 배포는 배포를 어떻게 자동화할 것인가를 고민하는 단계입니다.
CI를 통해서 주기적으로 병합된 코드의 변경사항들이 자동으로 빌드되고 테스트되면, 배포 단계에서 Release 를 준비합니다. 이 Release를 개발자나 직접 검증하거나, 검증 팀이 검증하고 확인이 되면 수동적으로 사용자에게 배포하는 단계를 지속적 제공
이라고 합니다.
Release 가 준비되자마자 자동으로 사용자에게 배포할 수 있도록 모든 과정을 자동화하는 것을 지속적 배포
라고 합니다.