CI/CD란?

- 어플리케이션 개발 단계부터 배포까지의 모든 과정을 자동화를 통해서 조금 더 효율적이고 빠르게 사용자들에게 빈번히 배포할 수 있도록 만드는 것.
- 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제인 인테그레이션 헬(
integration hell
)을 해결하기 위한 솔루션.
- CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다. 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라고 부른다.
CI(Continuous Integration, 지속적 통합)
Build & Packaging
- 개발자를 위한 자동화 프로세스
- 자동화 전, 구성원들의 코드에 문제가 없는지 확인하는 과정이 필요하다. 이를 위한 것으로,
애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트하여 공유 레포지토리에 병합되어 관리되는 것을 의미한다.
CI를 하면 좋은 점은?
- 주기적으로 merge를 하기 때문에 merge 충돌을 피할 수 있어 개발 생산성이 향상된다.
- merge되는 모든 코드들은 자동으로 빌드되고 테스트되기 때문에 코드의 결함이나 문제점을 빠르게 발견할 수 있다. 또한 버그 수정도 용이하다.
∴ 결론적으로 코드의 퀄리티가 향상된다
CD(Continuous Deployment / Continuous Delivery)
지속적인 서비스 제공(Continuous Delivery
) 및/또는 지속적인 배포(Continuous Deployment
)를 의미한다. 이 두 용어는 상호 교환적으로 사용.
- 두 가지 모두 파이프라인의 추가 단계에 대한 자동화를 뜻한다.
- 자동화 수준에 따라
Continuous Delivery
, Continuous Deployment
로 구분된다.
1. 지속적 전달/제공 (Continuous Delivery)
- CI에서 한 단계 더 나아가는 것으로, 실제로 어플리케이션이 배포되기 전까지의 작업을 자동화한다.
- 빌드 결과물을 지속적으로 전달하지만 실제 배포는 사람이 개입하여 실행해주어야 한다.
2. 지속적 배포 (Continuous Deployment)
delivery
에서 한 단계 더 나아가는 것으로,
CI를 통해 신규 작성된 코드의 무결성을 검증하고, 완료되면 배포까지 자동으로 진행한다.
- 배포까지 사람의 개입 없이 자동으로 진행되며 어플리케이션은 지속적으로 신규 코드가 반영된다.
📌 Continuous Delivery vs Continuous Deployment
Continuous Delivery
는 프로덕션을 수동으로 배포해줘야 하며,
Continuous Deployment
는 프로덕션까지 자동으로 배포해준다!
CD를 하면 좋은 점은?
- 개발부터 배포까지 과정이 번거롭지 않고 간소화되기 때문에 사용자 피드백을 빠르게 반영할 수 있다.
- 만약, 로드 밸런서로 수십대의 서버를 동시에 운용한다면?
- 자동화를 하지 않으면 직접 서버에 들어가서 일일이 실행해야 하기 때문에 하루종일 배포를 할 수도 있다.
CI/CD가 무엇을 해결할 수 있는가?
- 빌드, 테스트 및 배포 단계를 자동화
- 소프트웨어 릴리스 주기 가속화
- 비용 및 배포 변경에 대한 위험 감소
- 개발자가 빠르게 피드백을 얻을 수 있음
- 소프트웨어 개발에 대한 반복적인 접근이 쉬워짐
CI/CD의 이점
- 향상된 협업
- 신속한 전달
- 신뢰성
- 보안
- 확장성
- 속도