CI/CD는 소프트웨어 개발에서 코드의 변경 사항을 자동으로 테스트하고 배포하는 프로세스를 나타내는 용어다.
여기서 CI는 지속적 통합(Continuous Integration)을 의미하고,
CD는 지속적 배포(Continuous Deployment) 또는 지속적 전달(Continuous Delivery)를 의미한다.
1 지속적 통합 (Continuous Integration, CI):
- 개발자들이 작성한 코드가 지속적으로 합쳐지는 프로세스다.
- 코드가 저장소에 푸시될 때마다 자동으로 테스트와 빌드가 수행된다.
- 이를 통해 코드 변경 사항이 문제를 일으키는지 빠르게 확인하고 해결할 수 있다.
2 지속적 전달 (Continuous Delivery, CD):
- CI의 연장선에서, 빌드와 테스트가 통과된 코드를 자동으로 스테이징 환경과 같은 다음 단계의 환경에 배포할 준비를 하는 것을 의미한다.
- 실제로 프로덕션에 배포하기 전에 최종적인 검증을 거치기 위한 과정이다.
3 지속적 배포 (Continuous Deployment, CD):
- 코드 변경 사항이 자동 테스트와 빌드를 통과하면, 바로 프로덕션 환경에도 자동으로 배포되는 프로세스를 의미한다.
- 지속적 전달과 비슷하지만, 최종적인 수동 검증 단계 없이 바로 배포하는 차이가 있다.
CI/CD의 장점:
- 빠른 피드백: 문제가 발생하면 즉시 알 수 있어, 버그나 오류를 빠르게 수정할 수 있다.
- 자동화: 수동 작업에서 발생할 수 있는 실수를 줄여준다.
- 일관성: 모든 변경 사항이 동일한 테스트와 배포 프로세스를 거치므로 일관성이 유지된다.
- 빠른 출시 주기: 자동화된 프로세스로 인해 빠르게 새로운 기능이나 수정 사항을 사용자에게 제공할 수 있다.
이러한 CI/CD는 Jenkins, Travis CI, GitLab CI, CircleCI, GitHub Actions 등 다양한 도구와 플랫폼을 통해 구현될 수 있다.