본문 바로가기
CS

CI/CD

by 이건 뭐야 2024. 2. 15.

CI/CD : 지속적인 통합(Continuous Integration)/지속적인 제공/배포(Continuous Delivery/Deployment)

CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법이다.

 

특히, CI/CD는 애플리케이션의 라이프사이클(통합, 테스트, 제공, 배포) 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다. 이러한 구축 사례를 CI/CD 파이프라인이라고 부르며, 개발 및 운영팀의 애자일 방식 협력을 통해 DevOps 또는 SRE 방식으로 지원된다.

 

 

CI란?

애플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합하는 것을 의미한다.

버그를 신속하게 찾아 해결, 소프트웨어의 품질을 개선, 새로운 업데이트의 검증 및 릴리즈의 시간 단축을 목표로 한다.

 

CI가 필요한 환경

다수의 개발자가 한 팀으로 작업할 경우, 수많은 commit들을 Build/Test/Merge할 때 상당히 번거롭기 때문에 CI를 통해 클래스와 기능에서부터 전체 애플리케이션을 구성하는 서로 다른 모듈에 이르기까지 모든 것에 대한 빌드/테스트를 수행한다. 자동화된 빌드/테스트에서 기존 코드와 신규 코드 간의 충돌이 발견되면 CI를 통해 이러한 버그를 더욱 빠르게 수정할 수 있다.

 

 

CD란?

지속적인 제공(Continuous Delivery)

코드 변경 사항 병합부터 프로 덕션에 적합한 빌드 제공에 이르는 모든 단계에는 테스트 자동화와 코드 릴리즈 자동화가 포함되며 프로덕션 환경으로 배포할 준비가 되어있는 코드베이스 확보를 목표로 한다.

효과적인 지속적인 제공(Continuous Delivery) 프로세스를 실현하기 위해서는 개발 파이프라인에 CI가 먼저 구축되어 있어야 한다.

 

지속적인 배포(Continuous Deployment)

CI/CD 파이프라인의 마지막 단계로, 프로덕션 준비가 완료된 빌드를 코드 레포지토리에 자동으로 릴리즈하는 지속적인 제공(Continuous Delivery)의 확장된 형태인 지속적인 배포(Continuous Deployment)는 애플리케이션을 프로덕션으로 릴리즈하는 작업을 자동화한다.

 

 

대표적인 CI/CD 툴로는 Jenkins / circleci / Travis CI / Bamboo / TeamCity / GitLab 등이 있다.

 

 

 

CI/CD 자동화는 DevOps 엔지니어의 핵심 업무에 속한다.

DevOps 엔지니어는 CI/CD를 위한 파이프라인을 구성하고, 이를 자동화 단계까지 끌어올린다.

또한 모니터링 지표를 구성하여, 개발자들의 개발 방향을 가이드한다.

 

 


 

 

참조

CI/CD(Continuous Integration/Continuous Delivery)란? - Red Hat

CI/CD란 무엇인가 - 개발자 김모씨

데이터 기반으로 지속적인 CI/CD 개선 환경 만들기 - 구상모 님

 

'CS' 카테고리의 다른 글

OSI 7계층  (1) 2024.04.12
CORS, CSRF  (0) 2024.03.04
DevOps(데브옵스)  (0) 2024.02.13
Component(컴포넌트)  (1) 2024.02.11
Mock Data  (1) 2024.02.08