CI/CD
CI 란?
"CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.
지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합 할 수 있고, 또한 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제가 있어도 이 방법으로 해결할 수 있습니다.
CD 란?
"CD"는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미한다.
- 지속적인 제공이란 : 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리(예: GitHub 또는 컨테이너 레지스트리)에 자동으로 업로드되는 것을 뜻하며
- 지속적인 배포(또 다른 의미의 "CD": Continuous Deployment)란 : 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미한다.
CI/CD 파이프 라인 | CI/CD 프로세스

지속적 통합, 지속적 제공, 지속적 배포 → "지속적인 서비스 제공" 을 의미한다.
- 지속적 통합
- 독립적으로 작업하는 개발자가 애플리케이션에 변경 사항을 적용할 때 다른 개발자가 동시에 적용하는 변경 사항과 충돌할 가능성이 있기 때문에
- 개발자들이 동일한 애플리케이션의 각기 다른 기능을 동시에 작업할 수 있도록 하는 것을 목표로 주기적으로 모든 소스코드를 병합해준다.
👉 따라서, 지속적인 통합을 통해 기존코드와 신규코드의 충돌과 오류를 확인하며, 버그를 더욱 빠르게 수정할 수 있게 된다.
- 지속적 제공
- 지속적 제공 프로세스에서는 유효한 코드를 리포지토리에 자동으로 릴리스하는 단계이다.
- 즉, 지속적 제공의 목표는 프로덕션 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것입니다.
👉 지속적 제공을 완료하게 된다면 손쉽게 애플리케이션을 프로덕션으로 배포할 수 있게된다.
- 지속적 배포
- 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 릴리스하는 지속적 제공의 확장된 형태인 → 지속적 배포는 애플리케이션을 프로덕션으로 릴리스하는 작업을 자동화한다.
- 즉, 지속적 배포란 개발자가 애플리케이션에 변경 사항을 작성한 후 몇 분 이내에 클라우드 애플리케이션을 자동으로 실행할 수 있는 것을 의미
👉 이를 통해 사용자 피드백을 지속적으로 수신하고 통합하는 일이 훨씬 수월해진다. (하지만 CI/CD가 제대로 구축되려면 여러 테스트와 릴리즈 단계를 수행할 수 있어야 하기 때문에 많은 선행 투자가 필요하다.)
'woncoding > TIL' 카테고리의 다른 글
| TIL | 2.14.화 [Django ↔️ PostgreSQL] (0) | 2023.02.18 |
|---|---|
| TIL | 2.13.월 [Open API] (0) | 2023.02.14 |
| TIL | 2.9.목 [Django User Model vs DRF Custom User Model] (0) | 2023.02.09 |
| TIL | 2.8.수 [TDD | Test Code] (0) | 2023.02.09 |
| TIL | 2.7.화 [Rest API / Fast API] (0) | 2023.02.09 |