CI/CD

신혜인·2023년 6월 5일
0

블로깅

목록 보기
10/11

CI/CD

"CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.

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

"CD"는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환적으로 사용된다.

두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.

CI/CD의 단계

지속적 통합(Continuous Integration, CI)

Code - Build - Test

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

지속적인 통합 과정을 통해 개발자는 버그를 일찍 발견할 수 있고, 테스트가 완료된 코드에 대해 빠른 전달이 가능해지며 지속적인 배포가 가능해진다.

지속적 통합은 모든 코드 변화를 하나의 리포지토리에서 관리하는 것부터 시작한다.

지속적 통합을 통해 개발팀은 각자 개발한 코드를 이른 시점에 자주 합치고 자주 테스트 해볼 수 있다.

지속적 통합으로 보안 이슈, 에러 등을 쉽게 파악할 수 있어 해당 이슈를 빠르게 개선할 수 있다.

지속적 통합이 적용된 개발팀은 코드를 머지하기 전, 이미 빌드 오류나 테스트 오류를 확인하여 훨씬 더 효율적인 개발을 할 수 있게 된다.

지속적 배포(Continuous Delivery/Deployment, CD)

Release - Deploy - Operate

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

지속적 배포의 경우, 코드 변경 사항의 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계로, 테스트 자동화와 코드 배포 자동화가 포함된다.

이 프로세스를 완료하면 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 배포할 수 있기 때문에 운영팀이 보다 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포할 수 있게 된다.

CI/CD의 영역

CI/CD는 파이프라인으로 표현되는 실제 프로세스를 의미하고, 애플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다.

이 용어는 사례별로 CI/CD 파이프라인에 구현된 자동화 수준 정도에 따라 그 믜미가 달라진다.

CI/CD 파이프라인

수없이 진행되는 배포 과정을 자동화시키는 방법.

코드가 빌드되면서 최종적으로 배포가 되는 단계까지.

이 부분을 지속적인 통합 및 배포를 위하여 일련의 자동화 단계로 만드는데, 이것을 파이프라인을 구축한다고 표현한다.

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

파이프라인은 전체 배포 과정을 여러 단계(Stages)로 분리한다. 각 단계는 파이프라인 안에서 순차적으로 실행되며, 각 단계마다 주어진 작업(Actions)들을 수행한다.

  1. Source 단계 : Source 단계에서는 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행한다.

  2. Build 단계 : Build 단계에서는 Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공한다. 또한 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행한다.

  3. Deploy 단계 : Deploy 단계에서는 Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행한다.

GitHub Action

GitHub가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼.

GitHub Action으로 클라이언트 CI/CD를 구축한 배포 링크 : http://fe-58-hyein0608-s3.s3-website.ap-northeast-2.amazonaws.com

0개의 댓글