CI/CD


1. 개요

애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 사용자에게 제공하는 방법을 말한다

기본적인 개념은 지속적인 통합(Continuous Integration)지속적인 제공(Continuous Delivery)지속적인 배포(Continuous Deployment) 이다.

, CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 사용자에게 제공 및 배포에 이르기까지 애플리케이션의 전체 라이프사이클에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공하는 것이다이러한 구축 사례를 “CI/CD 파이프라인이라 한다.


2.  단계

2.1. CI

  • Plan (요구사항 분석, 기간 산정, 역할 정의, 아키텍처 설계)
  • Code (개발, 코드 분석)
  • Build (컴파일, 빌드, 단위 테스트)
  • Test (통합/부하/UI/기능 테스트)

2.2. CD

  • Release (버전 관리)
  • Deploy (배포)
  • Operate (모니터링)

3. 효과

  • 요구사항(변경사항)에 대해 빠르게 배포할 수 있는 환경이 됨
  • 자동화(빌드-테스트-배포)로 생산성 향상
  • 에러 식별 가능성 증가

4. Continuous Integration (CI)

개발자를 위한 자동화 프로세스인 지속적인 통합이다. CI를 성공적으로 구현한다면 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 병합된다이는 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결 할 수 있다.

CI를 통해 개발자들은 코드 변경 사항을 공유 브랜치 또는 트렁크로 재병합하는 작업을 더욱 수월하게 자주 할 수 있게 된다그 예로 개발자가 애플리케이션에 적용한 변경 사항이 병합 되면 자동으로 애플리케이션을 구축하고 이러한 변경 사항이 애플리케이션을 손상시키지 않는지 각기 다른 레벨의 자동화 테스트가 실행된다. 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌이 발견되면 CI를 통해 빠르게 자주 수정 할 수도 있다.


5. Continuous Delivery (CD)

개발자들이 앞서 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드 되는 것을 뜻한다이를 위해서는 코드 변경 사항 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계에서의 테스트 자동화와 코드 릴리스 자동화가 필수적임을 의미한다그리고 이 프로세스가 완료되면운영 팀은 보다 빠르고 손쉽게 실시간으로 해당 레포지토리에서 사용자가 사용 가능한 프로덕션 환경까지 배포가 가능해진다.


6. Continuous Deployment (CD)

앞서 리포지토리에 업로드 된 어플리케이션을 운영 팀이 실시간으로 사용자가 사용 가능한 프로덕션 환경까지 배포하는 것을 자동화하는 것이다.

실제 사례에서 이 단계는 개발자가 애플리케이션에 변경 사항을 적용 한 후 몇 분 이내에 자동화된 테스트를 통과하고 애플리케이션이 실행되는지를 의미한다더 빠른 배포로 사용자의 피드백 또한 지속적으로빠르게 수신하고 통합하는 일이 훨씬 빨라지게 된다.

결과적으로, CI/CD는 실제 프로세스로 파이프라인이라 지칭하며애플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다대부분의 기업들은 우선 CI를 먼저 구축한 다음 클라우드 네이티브 애플리케이션의 일부로서 배포 및 개발 자동화를 구현해 나간다.

쉽게 말하자면 개발자가 각각 개발한 소스코드를 모아서 한꺼번에 빌드하는 통합 빌드의 과정을 특정 시점을 지정해 놓고 하는 것이 아니라 주기적으로 빠르게 수행함으로써 통합에서 발생하는 오류를 사전에 해결하고 개발 전 단계에 걸리는 시간을 단축하기 위한 기법이라 할 수 있다.