지식 정리/git

[Git] CI/CD란?

27200 2025. 1. 20. 14:07

CI/CD란?

CI/CD는 애플리케이션 개발 단계부터 배포까지의 모든 단계를 자동화해서 더욱 효율적이고 빠르게 사용자에게 빈번한 배포를 하는 것이다.

→ DevOps 엔지니어의 핵심 업무이다.

소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 한다.

<출처 : https://www.redhat.com/ko/topics/devops/what-is-ci-cd >

이렇게 연결된 두 사례를 일반적으로 “CI/CD 파이프라인”이라 부르며, 개발 팀과 운영 팀이 DevOps 또는 SRE를 통해 애자일 방식으로 협력하여 이를 지원한다.


CI(Continuos Integration)란?

  • 지속적인 통합이라는 의미로, 작업한 코드를 주기적으로 빌드 및 테스트하여 레포지토리에 merge 하는 것이다.
  • 버그 수정, 새로운 기능을 개발한 코드가 주기적으로 Main Repository에 병합되는 것을 의미한다.

‼️CI의 중요 포인트

  1. 코드 변경 사항을 주기적으로 빈번하게 merge
  • 오랜 기간 merge를 진행하지 않게 된다면???
    • 코드가 충돌하게 되고, 병합을 하는 데 있어 오랜 시간이 소요된다.
    • 코드 작성시간보다 코드 충돌을 해결하는 것에 있어 많은 시간이 소모된다.
    • 작은 단위로 개발하여 주기적으로 빈번하게 merge 해야 한다.
  1. 통합 단계의 자동화
  • 팀 내 개발자들이 배포에 적용할 기능을 개발 후 하루에 수십 번 Main Branch에 Merge를 진행한다면?
    • 팀 작은 팀 내 모든 개발자드르이 코드를 빌드, 테스트, 배포까지 하는 것은 엄청난 반복 작업이다.
    • 따라서 코드 변경사항을 Build 하고 Test 하는 과정을 자동화하면 귀찮은 반복 작업을 생략할 수 있다.

😊 CI의 장점

  1. 개발 생산성 향상
  2. 문제점을 빠르게 발견
  3. 코드 퀄리티 향상

CD(Continuous Delivery & Continuous Deployment)

  • 지속적인 제공(Continuous Delivery)과 지속적인 배포(Continuous Deployment) 두 가지의 의미를 지닌다.
  • 마지막 배포 단계에서 어떻게 하면 자동화해서 배포를 할 수 있을까?라는 것이다.

Continuous Delivery

<출처 :  https://www.globalapptesting.com/blog/what-is-continuous-integration >

  • CI 단계에서 빌드되고 테스트된 후, 배포 준비 상태 확인되면 개발자 혹은 검증팀이 수동으로 배포를 하는 것이다.

Continuous Deployment

<출처 :  https://www.atlassian.com/continuous-delivery/software-testing/continuous-deployment >

  • CI 단계에서 빌드되고 테스트된 후, 배포 준비 상태가 확인되면 자동으로 배포까지 진행하는 것이다.

즉, 최종 단계가 자동화가 되었는지에 따른 차이라고 보면 된다.


최종 요약

<출처 : [10분 테코톡] 찬, 레넌의 CI/CD와 무중단 배포>