CI는 빌드와 테스트를 자동화해서 공유 저장소에 병합시키는 프로세스를 뜻합니다. git과 같은 버전 관리 시스템을 사용할 때 여러명의 개발자가 하나의 공유 저장소를 사용하는 경우가 많습니다. 이렇게 되면 새로운 코드의 변경 사항이 저장소에 통합되지 않을 경우 서로 충돌할 수 있고, CI는 이러한 '통합 지옥'을 해결해줍니다.
개발자가 코드를 커밋하면 다음과 같은 일이 일어납니다.
CI의 핵심은 빠른 피드백 루프입니다. 문제를 빨리 발견할수록 수정 비용이 적게 들고, 전체 개발 프로세스가 더 원활해집니다.
CI의 다음 단계는 CD인데, 이는 두 가지 의미를 가질 수 있습니다.
코드 변경이 테스트를 통과하면 자동으로 배포 가능한 상태로 준비됩니다. 그러나 실제 프로덕션 환경으로의 배포는 버튼 클릭 같은 수동 승인을 통해 이루어집니다.
모든 테스트를 통과한 코드 변경이 자동으로 프로덕션 환경에 배포됩니다. 사람의 개입 없이 사용자에게 새로운 기능이 제공됩니다.
전형적인 CI/CD 파이프라인은 다음과 같이 구성됩니다.
코드 커밋 → 빌드 → 테스트 → 스테이징 배포 → 통합 테스트 → 프로덕션 배포
CI/CD를 도입하면 시장 출시 시간이 단축되고, 품질이 향상되며, 비용이 절감되고, 고객 만족도가 증가한다는 이점을 가집니다.