* CI/CD?
(Continuous Integration:지속적 통합 / Continuous Delivery: 지속적 배포)
애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다.
CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다. 이러한 구축 사례를 CI/CD 파이프라인이라 부르며 개발 및 운영팀의 애자일 방식 협력을 통해 지원된다.
* CI(Continuous Integration:지속적 통합)?
개발자들은 코드 변경 사항을 CI를 통해 공유 브랜치 / "트렁크"로 다시 병합하는 작업을 훨씬 수월하게 수행할 수 있다. 클래스와 기능에서부터 전체 어플리케이션을 구성하는 서로 다른 모듈에 이르기까지 모든 것에 대한 테스트를 수행한다. 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌이 발견되면 CI를 통해 이러한 버그를 더욱 빠르게 자주 수정할 수 있다.
* 지속적 서비스 제공?
CI의 빌드 자동화, 유닛 및 통합 테스트 수행 후, 이어지는 지속적 제공 프로세스에서는 유효한 코드를 repository에 자동으로 릴리즈한다. 따라서 효과적인 지속적 서비스 제공 프로세스를 실현하기 위해서는 개발 파이프 라인에 CI가 먼저 구축되어 있어야 한다. 코드 변경 사항 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계에는 테스트 자동화와 코드 릴리스 자동화가 포함된다. 이 프로세스의 목표는 빠르고 손쉽게 어플리케이션을 프로덕션으로 배포하는 것이다.
* CD(Continuous Delivery: 지속적 배포)?
어플리케이션을 프로덕션으로 릴리즈 하는 작업을 자동화한다. 프로덕션 준비가 완료된 빌드를 repository에 자동으로 릴리즈하는 지속적 제공의 확장된 형태이다. 이 단계가 제대로 이루어지려면 테스트 자동화가 제대로 설계되어 있어야 한다.
* CI와 CD의 차이점?
CI는 개발자는 위한 자동화 프로세스인 지속적인 통합(Continuous Intergration)을 의미한다. CI를 성공적으로 구현할 경우 어플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 repository에 통합되므로 여러 명의 개발자가 동시에 어플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
CD는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 용어는 상호 교환적으로 사용된다. 두 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻한다.
지속적인 서비스 제공(Continuous Delivery)이란 개발자들이 어플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 repository에 자동으로 업로드되는 것을 뜻한다. 이는 개발팀과 비지니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해준다. 이 단계의 목표는 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.
지속적인 배포(Continuous Deployment)란 개발자의 변경 사항을 repository에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미한다.
결과적으로 CI/CD는 어플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다.
요약:
CI : 빌드, 테스트, 코드 병합 -> 자동으로 이루어져 여러 명의 개발자가 개발 작업을 동시에 할 때 충돌할 수 있는 문제 해결
CD: 공유 repository에 자동으로 릴리즈하고 배포하는 것
'CS > software engineering' 카테고리의 다른 글
Coding Convention (0) | 2021.08.03 |
---|---|
Agile 애자일 (0) | 2021.07.12 |
결합도와 응집도에 대하여 (Coupling and Cohension) (0) | 2021.06.26 |
3rd party(써드 파티)란? (0) | 2021.06.19 |
라이브러리 vs 프레임워크 (0) | 2021.05.01 |