CI/CD는지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Deployment, CD)를 의미하며, 소프트웨어 개발 프로세스를 자동화하고 효율적으로 만드는 방법론이자 도구 체계다. 이를 통해 개발, 테스트, 배포 과정에서 발생할 수 있는 오류를 빠르게 감지하고 수정하며, 새로운 코드를 자주 배포할 수 있게 한다.
1. CI(Continuous Integration, 지속적 통합)
CI는 여러 개발자가 동시에 작업하는 코드를 자주 통합하는 것을 목표로 한다. 각 개발자는 자신의 코드를 주기적으로 버전 관리 시스템(예: Git)에 푸시하고, 푸시된 코드가 자동 빌드 및 테스트 과정을 거치도록 설정한다.
주요 특징:
- 코드를 자주 통합해 발생할 수 있는 충돌을 조기에 발견할 수 있다.
- 자동화된 빌드 및 테스트를 통해 코드 품질을 유지한다.
- 빠르게 문제를 식별하고 수정할 수 있도록 돕는다.
예시:
- Jenkins, Travis CI, CircleCI 같은 도구가 사용된다.
2. CD(Continuous Deployment/Delivery, 지속적 배포/전달)
CD는 두 가지로 나뉜다:
- 지속적 전달(Continuous Delivery): 코드가 배포 가능한 상태로 자동으로 준비된다. 즉, CI를 거친 후, 수동으로 배포할지 결정할 수 있는 상태까지 자동화된다.
- 지속적 배포(Continuous Deployment): 지속적 전달과 달리 코드가 자동으로 실제 배포 환경(프로덕션)까지 배포된다. 테스트를 통과한 후 사람이 개입하지 않고 바로 배포된다.
주요 특징:
- 코드가 항상 배포 가능한 상태로 유지된다.
- 배포 주기를 짧게 하여 새로운 기능이나 수정 사항을 빠르게 반영할 수 있다.
- 자동화된 테스트를 통해 품질을 보장한다.
예시:
- AWS CodeDeploy, GitLab CI/CD, Kubernetes 등을 통해 자동 배포가 가능하다.