[Deploy] CI/CD

예진·2022년 12월 7일
0

🔥CI/CD

CI/CD란

CI : 개발자를 위한 자동화 프로세스인 지속적인 통합 (Continuous Integration)

CD : 지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)

CI/CD의 단계

지속적 통합(Continuous Integration, CI)
개발자를 위한 자동화 프로세스, Code-Build-Test 단계 구성

  • Code : 개발자가 코드를 원격 저장소에 push하는 단계
  • Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테이스 후 빌드하는 단계
  • Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 총합되는지 확인하는 과정

지속적 배포(Continuous Delivery/Deployment, CD)
지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)를 의미, 이 두 용어는 상호교환적으로 사용된다. Release - Deploy - Operate 단계 구성

  • Release : 배포 가능한 소프트웨어 패키지 작성
  • Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출, 실질적인 배포 부분
  • Operate : 서비스 현황을 파악하고 생길 수 있는 문제를 감지

지속적 배포 사례 - Github Page
지정해둔 디렉터리에 정해진 방식에 따라 잘 커밋하기만 하면, Github Page가 알아서 해당 index.html 파일과 해당 디렉터리에 있는 파일을 잘 번들링해서 Github Page 서버에 업로드한다.
자동으로 인터넷에 배포가 되고, 만든 결과물을 공유할 수 있다.

CI/CD의 영역

CI/CD는 지속적 통합 및 지속적 제공의 구축 사례만을 지칭할 때도 있고, 지속적 통합, 지속적 제공, 지속적 배포라는 3가지 구축 사례를 모두 의미하는 것 일 수도 있다.
=> "지속적인 서비스 제공"은 때로 지속적인 배포의 과정까지 포함하는 방식으로 사용되기도 한다.

CI/CD 파이프라인

배포 자동화
: 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것

배포 자동화가 필요한 이유

  • 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약된다.
  • 휴먼 에러 (Human Error)를 방지할 수 있다.
    휴먼 에러 : 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수
    ex. 그 전에 했던 배포 과정과 비교하여 특정 과정을 생략하거나 다르게 진행하여 오류가 발생하는 것

=> 배포 자동화를 통해 전체 배포 과정을 매번 일관되게 진행하는 구조를 설계하여 휴먼 에러 발생 가능성을 낮출 수 있다.

CI/CD 파이프라인

: 아래 그림과 같이, 수 없이 진행되는 배포 과정을 자동화시키는 방법

위 그림에서 자동화되는 부분은 코드가 빌드 되면서 최종적으로 배포되는 단계까지이다.
이 부분을 지속적인 통합 및 배포를 위해 자동화 단계로 만드는데 이것을 파이프라인을 구축한다고 표현한다.

CI/CD 파이프라인을 구성하는 기본 단계와 수행 작업

배포에서 파이프라인(Pipeline) : 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조

  • 파이프라인은 전체 배포 과정을 여러 단계(Stages)로 분리한다.
  • 각 단계는 파이프라인 안에서 순차적으로 실행되며, 각 단계마다 주어진 작업(Actions)들을 수행한다.
  1. Source 단계: 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행한다.
  2. Build 단계: Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공한다. 또한 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행한다.
  3. Deploy 단계: Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행한다.

CI/CD 파이프라인 구성 요소 및 장점

  • 빌드 (소프트웨어 컴파일)
  • 테스트 (호환성 및 오류 검사)
  • 릴리스 (버전 제어 저장소의 애플리케이션 업데이트)
  • 배포 (개발에서 프로덕션 환경으로의 변환)
  • 규정 준수 및 유효성 검사
    로 이루어져 있고, 이 과정이 실무에서 반복적인 프로세스이기 때문에 이 부분을 일련의 자동화 단계로 만든다고 볼 수 있다.
profile
😊

0개의 댓글