CI/CD는 Continuous Integration(지속적 통합)과 Continuous Delivery/Deployment(지속적 전달/배포)의 약자이다.
이는 개발 → 빌드 → 테스트 → 배포까지의 과정을 자동화하여 소프트웨어를 더 빠르고 안정적으로 출시할 수 있도록 돕는 개발 방식이다.
코드 변경 사항을 자주 병합하고, 이 과정을 자동으로 테스트하여 코드 품질을 유지하는 개발 전략
CI는 개발자들이 작성한 코드를 작은 단위로 자주 메인 저장소(main branch)에 통합하는 것을 뜻한다.
각 코드 변경 시마다 자동으로 빌드와 테스트가 실행되어, 문제를 조기에 발견하고 빠르게 수정할 수 있도록 돕는다.
자주 통합: 개발자들이 하루에도 여러 번 코드를 병합하여 충돌 가능성을 줄임
자동 빌드 및 테스트: 코드 변경 시 자동으로 프로젝트를 빌드하고 테스트를 실행
빠른 피드백: 오류가 발견되면 즉시 알림을 받아 빠르게 문제 해결
코드 품질 유지: 지속적인 검증으로 안정적이고 신뢰성 높은 코드 유지
빠른 문제 발견 및 해결
통합 충돌 최소화
개발 속도 증가
지속적 개선 및 유지보수 용이
배포 준비 상태 유지
항상 빌드가 가능한 상태를 유지해 배포 시점에 별도의 준비 작업이 필요 없다.
CD과 연결해 빠른 배포가 가능하다.
CD는 CI 이후의 단계를 자동화하여, 코드를 사용자에게 전달하거나(Delivery), 실제 운영 환경에 배포(Deployment)하는 과정을 자동화하는 개발 전략
CI를 통해 안정적으로 통합된 코드를, CD를 통해 테스트 서버, 스테이징 서버, 운영 서버에 이르기까지 자동으로 배포할 수 있다.
여기서 "CD"는 상황에 따라 두 가지로 나뉜다
배포 자동화: 테스트 → 빌드 → 배포 전 과정을 자동화해 반복 작업 최소화
고빈도 배포: 기능이 완성되는 대로 빠르게 사용자에게 전달 가능
버그 대응 신속: 변경 사항을 빠르게 반영하여 문제 수정 속도 향상
운영 환경과 유사한 스테이징 환경 활용: 실제 운영 환경과 유사한 조건에서 테스트 가능
배포 속도 향상
배포 안정성 증가
작은 단위의 변경 적용
빠른 피드백 루프
팀 간 협업 강화