CI / CD
CI/CD는 애플리케이션의 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다.
CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제("Integration hell"(인테그레이션 헬))을 해결하기 위한 솔루션이다.
* Integration hell : 언젠가는 저장소가 개발자들의 베이스라인과는 너무 많이 달라지게 되는 "통합의 지옥" 이라 불리는 상황
CI(Continuous Intergration)
CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuos Intergration)을 의미한다.
*지속적인 통합 : 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것을 의미
CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합 되므로 여러명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
CD(Countinuous Delivery / Countinuous Deployment)
CI/CD의 "CD"는 지속적인 제공(Countinuous Delivery) 또는 지속적인 배포(Countinuous Deployment)를 의미한다.
두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용하기도 한다.
지속적인 제공(Countinuous Delivery)
개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레포지토리(ex: 깃 허브)에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다.이는 개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해 준다.지속적인 제공은 귀찮은 push 작업없이 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.
지속적인 배포(Countinuous Deployment)
개발자의 변경 사항을 레포지토리에서 고객이 사용한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미한다.
이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결한다.
지속적인 배포에서는 지속적 통합을 통해 빌드한 소스코드를 테스트 가능한 알파나 베타 버전으로 만든다.
이 버전에서 테스트를 수행해 문제가 발생하면 수정한 뒤 정식 버전으로 배포를 진행한다.

파이프 라인이란?
파이프라인이라고 하는 이유는 배포 자동화 과정들이 물 흐르듯 흘러가는 것을 묘사해서 그렇게 부르게 됬다고 한다.
컴퓨터 과학에서 데이터 파이프 라인(일반적으로 파이프라인이라고 함)은 제공된 데이터 또는 코드에 대해
사전정의 된 작업을 수행하는 일련의 처리 단계다.
파이프 라인의 사용 목적은 반복적인 프로세스를 자동화하여 시간을 절약하고 정밀도를 높이는 것이다.
CI/CD Pipeline
CI/CD Pipeline은 개발 머신에서 테스트와 스테이징을 거쳐 최종적으로 출시하여 사용자에게 전달하기 위해
코드가 거치는 일련의 단계를 말한다.
CI/CD Pipeline을 구성하는 요소
- 빌드 (소프트웨어 컴파일),
- 테스트 (호환성 및 오류 검사),
- 릴리스 (버전 제어 저장소의 애플리케이션 업데이트),
- 배포 (개발에서 프로덕션 환경으로의 변환),
- 규정 준수 및 유효성 검사
!요약
1. 개발자가 작은 단위로 코드를 짜고 메인 레포지토리에 merge를 하면,
2. 자동으로 빌드되고,
3. 자동으로 테스트되어,
4. 릴리즈되고(배포준비완료),
5. 배포된다.
'용어모음 > 이론' 카테고리의 다른 글
Tool Chain (0) | 2022.09.02 |
---|---|
SLO, SLI, SLA (0) | 2022.09.01 |