2022. 10. 12. 16:16ㆍ코드스테이츠/Section04 - TIL
CI / CD 란?
-> 자동화를 통해서 더 효율적이고 빠르게 사용자에게 빈번이 배포할 수 있는 것
CI (Continuous Integration 지속적인 통합)
- 코드 변경사항을 주기적으로 빈번하게 머지해야 한다. -> 개발 생산성 향상
- 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
- 문제점을 빠르게 발견하여 버그 수정 용이
- 코드의 퀄리티 향상
CD (Continouous Delivery지속적인 서비스 제공 & Continuous Deployment지속적인 배포)
- 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 떄로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.
- 최근에는 클라우드 기술 발전과 맞물려 지속적 통합과 지속적 배포가 빠른 속도로 진행되면서 CI/CD를 하나로 묶어서 다루는 경우가 점차 증가
CI/CD 단계

" Code -> Build -> Test -> Relese -> Deploy "
CI 개발자를 위한 자동화 프로세스라고 볼 수 있으며, Code - Build - Test 단계에서 꾀할 수 있습니다.
- Code : 개발자가 코드를 원격 코드 저장소 (Ex. github repository)에 push하는 단계입니다.
- Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계입니다.
- Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는 지 확인하는 과정입니다.
CD 지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)를 의미하며
이 두 용어는 상호 교환적으로 사용된다. Release - Deploy - Operate 단계에서 꾀할 수 있습니다.
- Release : 배포 가능한 소프트웨어 패키지를 작성합니다.
- Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출합니다. 실질적인 배포 부분입니다.
- Operate : 서비스 현황을 파악하고 생길 수 있는 문제를 감지합니다.
CI/CD 파이프라인

CI/CD 파이프라인이란?
번잡스럽고 지루한 배포 과정을 자동화시키는 방법을 구축하게 되는 것
(자동화를 꾀하는 부분은 보통 코드가 빌드되면서 최종적으로 배포가 되는 단계까지)
CI/CD 파이프라인을 구성하는 기본 단계와 수행 작업
대표적인 세 가지 단계
- Source 단계: Source 단계에서는 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행합니다.
- Build 단계: Build 단계에서는 Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공합니다. 또한 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행합니다.
- Deploy 단계: Deploy 단계에서는 Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행합니다.
파이프라인의 단계는 필요에 따라 더 세분화되거나 간소화될 수 있다.
CI/CD 파이프라인 구성 요소 및 장점
- 빌드 (소프트웨어 컴파일)
- 테스트 (호환성 및 오류 검사)
- 릴리스 (버전 제어 저장소의 애플리케이션 업데이트)
- 배포 (개발에서 프로덕션 환경으로의 변환)
- 규정 준수 및 유효성 검사
다양한 CI/CD Tool
- Jenkins
- Buildkite
- GitHub Actions
- GitLab CI/CD
- Bitbucket Pipelines
- Circleci