CI/CD란?

CI(Continuous Integration)/CD(Continuous Delivery/Continuous Deployment)의 약자이다.

CI/CD는 application 개발 단계를 자동화(automation)하여 application을 보다 짧은 주기로 customer에게 제공하는 방법을 의미한다.

 

❗️CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포를 의미하며, 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제 ( integration hell ) 해결하기 위한 solution 이다.

 

CI(Continuous Integration) - "빌드와 테스트 자동화"

CI(Continuous Integration) 빌드/테스트 자동화 과정이다. CI는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다. 

CI를 성공적으로 구현할 경우 application에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 repository에 통합되므로 여러 명의 개발자가 동시에 application 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.

 

CI가 나오기 이전에는 개발을 마치고 배포가 되어야만 코드에 오류가 있는지 없는지, 해당 application이 제대로 동작하는지를 검증하며, 코드 품질을 관리할 수 있었다. 그러나 CI를 적용하게 되면서 각 개발자가 서로 다른 기능을 구현하고 완성된 후 main branch와 merge하고 만약 버그가 있다면 코드를 수정하여 해결한다. 

CI를 적용하기 전에는 개발자가 직접 코드를 병합, 빌드, 테스트 과정에 많은 시간이 소요되었었으나, CI를 적용하게 되면서 개발자가 코드를 branch에 merge하기만 하면 자동으로 빌드와 테스트를 검증할 수 있어 소요 시간이 감소되었다.

 

🙂 CI 간단한 순서

1. 개발자가 구현한 코드를 기존 코드와 병합(merge)한다.

2. 병합된 코드가 올바르게 동작하고 빌드되는지 검증한다.

3. 테스트 결과 문제가 있다면 수정하고 다시 1로 돌아간다. 문제가 없다면 배포를 진행한다.

 

CD(Continuous Delivery/Deployment)

CD(Continuous Delivery/Deployment)는 지속적인 서비스 및 지속적인 배포를 의미하며, 두 용어는 상호 교환적으로 사용된다. 두가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다. 

 

CD는 지속적 배포로 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 관리하자는 개념으로 지속적 제공(Continuous Delivery)로 사용되기도 한다.

 

지속적 제공(Continuous Delivery)은 CI를 통해서 새로운 소스코드의 빌드와 테스트 병합까지 성공적으로 진행이 되었다면, 빌드와 테스트를 거쳐 github와 같은 저장소(repository)에 자동으로 업로드되는 것을 의미한다.

운영팀은 이 repository에서 application을 실시간 프로덕션 환경으로 배포할 수 있다. 지속적인 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.

 

지속적 배포(Continuous Deployment)는 성공적으로 병합된 내역을 저장소뿐만 아니라 사용자가 사용할 수 있는 배포환경까지 릴리즈하는 것을 의미한다. 이는 applicatin 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결한다. 지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 지속적인 제공이 가진 장점을 활용한다.

 

 

 

Reference

 

CI/CD가 뭔가요? - 이론편

tecoble.techcourse.co.kr

 

CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정

CI/CD는 애플리케이션의 통합 및 테스트부터 제공 및 배포까지 전체 라이프사이클에서 지속적인 자동화와 모니터링을 제공합니다. 개념, 차이점, 학습방법(인강)을 보세요.

www.redhat.com

 

728x90

'DevOps\etc' 카테고리의 다른 글

Git  (1) 2024.02.26

+ Recent posts