DevOps

CI/CD 파이프라인이란?

Nowon9159 2022. 6. 18. 16:31
반응형

CI 란?

Continuous Integration 의 약자로 지속적 통합이라는 뜻이다.

단순히 말해 개발자들이 개발한 코드들을 빈번히 Merge 하여 충돌을 없애기 위함이 가장 큰 이유이다.

또한 코드들을 빈번히 Merge하는 과정에서 코드를 Build하고 Test 하여야 하는데, 빈번하게 Build와 Test를 진행해야 하기 때문에 한꺼번에 통합해서 빌드/테스트 하는 것보다 시간이 더 오래 소모되고 귀찮다는 단점이 있었다.

그리하여 코드는 작성하되 테스트와 빌드는 프로그램이 자동으로 해주는 방법으로 시간도 절약하고 귀찮지 않게 하는 방법이 발전 되었다. (Git과 같은 SCM을 이용해 코드를 통합하고 테스트/빌드는 자동화)

 

CI의 장점 

  • 코드를 검증하는 데 들이는 시간이 축소된다.
  • 개발에 있어서 편리하다
  • 코드 품질을 높일 수 있다.

 

CD 란?

Continuous Delivery/Deployment의 약자로 지속적 제공/배포라는 의미다.

 

CI 과정이 다 끝나 빌드, 테스트가 완료 돼 배포 준비가 마무리 된 애플리케이션을 개발자가 수동 또는 자동으로 배포 진행하는 것을 의미한다.

수동일때 Delivery , 자동일때 Deployment 라고 한다.

 

CI/CD 파이프라인이란?

이러한 일련의 과정 즉, 애플리케이션 개발 단계를 자동화 하여 보다 짧은 주기로 고객에게 애플리케이션을 제공하는 방법이다.

 

파이프라인은

  1. 빌드 (소프트웨어 컴파일)
  2. 테스트 (호환성 및 오류검사)
  3. 릴리스 (버전 제어 저장소의 애플리케이션 업데이트)
  4. 배포 (개발에서 프로덕션 환경으로의 변환)
  5. 규정 준수 및 유효성 검사

등으로 구성 되어있다.

 

 

CI/CD 는 아래와 같은 장점이 있다.

  1. 빠른 제품 반영으로 비즈니스 가치 향상
  2. 운영의 안정성 확보
  3. 요구사항에 기반한 빠른 피드백
  4. 소프트웨어의 품질 향상
  5. 협업을 위한 협력성 증대

 

 

 

 

 

 

 

실무에서 어떻게 사용되고 있는지?

 

CI/CD 파이프라인 구체적인 단계

이 가이드에서는 테스트 및 프로덕션 환경에 대한 배포를 2개의 Cloud Build 파이프라인, 즉 테스트 파이프라인과 프로덕션 파이프라인으로 구분합니다.

앞의 다이어그램에서 테스트 파이프라인은 다음과 같은 단계로 구성됩니다.

  1. 개발자가 Cloud Source Repositories에 코드 변경사항을 커밋합니다.
  2. 코드 변경사항으로 인해 Cloud Build에 테스트 빌드가 트리거됩니다.
  3. Cloud Build가 자체 실행되는 JAR 파일을 빌드하여 Cloud Storage의 테스트 JAR 버킷에 배포합니다.
  4. Cloud Build가 테스트 파일을 Cloud Storage의 테스트-파일 버킷에 배포합니다.
  5. Cloud Build가 새로 배포된 JAR 파일을 참조하도록 Cloud Composer에 변수를 설정합니다.
  6. Cloud Build가 데이터 처리 워크플로 Directed Acyclic Graph(DAG)를 테스트하여 Cloud Storage의 Cloud Composer 버킷에 배포합니다.
  7. 워크플로 DAG 파일이 Cloud Composer에 배포됩니다.
  8. Cloud Build가 새로 배포된 데이터 처리 워크플로가 실행되도록 트리거합니다.

앞의 다이어그램에서 프로덕션 파이프라인은 다음과 같은 단계로 구성됩니다.

  1. 개발자가 Cloud Build에서 프로덕션 배포 파이프라인을 수동으로 실행합니다.
  2. Cloud Build가 자체 실행되는 최신 JAR 파일을 Cloud Storage의 테스트 JAR 버킷에서 프로덕션 JAR 버킷으로 복사합니다.
  3. Cloud Build가 프로덕션 데이터 처리 워크플로 DAG를 테스트하여 Cloud Storage의 Cloud Composer 버킷에 배포합니다.
  4. 프로덕션 워크플로 DAG 파일이 Cloud Composer에 배포됩니다.
반응형