CI/CD란?

곽민서·2025년 7월 10일

CI/CD란❓

CI/CD는 애플리케이션 배포 과정을 자동화하여 더 짧은 주기로 고객에게 서비스를 제공하는 방식이다.
CI는 Continuous Integration의 약어로 지속적 통합을 의미한다. CD는 Continuous Delivery(지속적 전달) 또는 Continuous Deployment(지속적 배포)를 의미한다.

CI (Continuous Integration)

먼저 CI는 개발자들이 코드 변경 사항을 주기적으로 메인 브랜치에 병합하는 과정을 자동화한 것이다. 이 과정에서 코드 변경사항이 발생할 때마다 자동으로 빌드와 테스트를 수행하여 문제를 조기에 발견할 수 있다. 예를 들어, 여러 개발자가 함께 작업할 때한 개발자의 변경사항이 다른 개발자의 작업과 충돌하거나 정체 애플리케이션에 문제를 일으킬 수 있는데, CI를 거치면 이러한 문제를 병합 이전에 미리 파악할 수 있다.

CI가 필요한 환경은 다음과 같다.

  • 다수의 개발자가 형상 관리 툴을 공유하여 사용하는 환경
  • MSA (Micro Service Archietecture) 환경

CD (Continuous Delivery & Continuous Deployment)

CD는 CI 이후 단계를 자동화하는 것으로, 애플리케이션의 변경사항을 production 환경으로 배포하는 과정을 자동화한 것이다. Continuous Delivery의 경우, 배포 가능한 상태로 준비하는 과정까지는 자동화하고 실제 배포는 사람의 승인을 거쳐수동으로 진행한다. 반면, Continuous Deployment는 production 환경에 배포하는 과정까지 모두 자동화한다.

CI/CD 파이프라인❓

개발자가 배포할 때마다 일일이 빌드하고 배포하는 과정을 진행하는 것이 계속해서 진행된다면 매우 지루한 작업이 될 것이다. 그래서 이 수없이 진행되는 배포 과정을 자동화 시키는 방법을 구축한 것이 CI/CD 파이프라인이다.

위의 그림은 배포 과정을 도식화한 것이다. 개발자가 코드를 원격 저장소에 올리면, 그 코드가 빌드 및 테스트와 릴리즈를 거쳐 배포 서버로 전달 된다. 배포 서버에 도달한 빌드된 코드는 애플리케이션 서버로 최종 배포가 완료되고, 그 결과물을 유저가 직접 확인하게 된다.

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

현업에서는 GitHub Actions, Jenkins, GitLab CI 등의 도구를 사용하여 CI/CD 파이프라인을 구축힌다. CI/CD 프로세스에 대한 하나의 예시를 들면 다음과 같다.

  1. 개발자가 PR을 올리면 자동으로 테스트/빌드 실행
  2. 테스트/빌드를 성공한 경우 메인 브랜치로의 머지 활성화
  3. 메인 브랜치 머지 시 production 환경으로 자동 배포

래퍼런스(Reference)

주제 - https://www.maeil-mail.kr/question/143

https://artist-developer.tistory.com/24

https://velog.io/@leejungho9/CICD-란

0개의 댓글