DevOps/[CI-CD]

[CI/CD] CI/CD란 무엇일까? | CI/CD Pipeline은 무엇일까?

민프야 2025. 3. 3. 16:34

1. CI/CD란?

소프트웨어 공학에서 CI/CD는 지속적 통합(영어: continuous integration)과 지속적 배포(영어: continuous delivery, CD)가 결합한 사례를 의미한다. CI/CD는 소프트웨어의 개발, 테스트와 배포를 모두 통합함으로써 소프트웨어 버그를 쉽게 찾아낼 수 있으며, 더 빠른 배포 주기를 가질 수 있게 만들어 준다.

- 위키백과

 

CI/CD는 소프트웨어 개발에서 빌드, 테스트, 배포 프로세스를 자동화하는 방법입니다.

 

과거에는 개발자가 새로운 기능을 추가할 때마다 코드를 수동으로 빌드하고, 테스트하고, 서버에 배포해야 했습니다. 이 과정에서 오류 발생 가능성이 높고, 시간이 오래 걸리는 문제가 있었습니다.

 

이러한 문제를 해결하기 위해, CI/CD(지속적 통합 & 지속적 배포) 개념이 등장했습니다. 

 

CI/CD는 코드 통합, 빌드, 테스트, 배포를 자동화하여 개발 속도를 높이고, 소프트웨어 품질을 향상시키는 방법입니다. 

CI/CD의 핵심 목표는 다음과 같습니다: 

  • 코드 변경 사항을 빠르게 병합하고 자동으로 테스트(CI) 
  • 안정적인 배포를 자동으로 수행(CD) 
  • 소프트웨어 릴리즈 주기를 단축하여 빠르게 사용자에게 제공 
  • 배포 과정에서 오류가 발생하면 자동으로 롤백 가능

 

CI/CD의 개념은 2000년대 초반부터 등장하기 시작했습니다.

특히, Agile(애자일) 개발 방법론DevOps 문화가 확산되면서 CI/CD가 필수적인 요소가 되었습니다.

 

 

 

그럼 이제 CI(Continuous Ingegration, 지속적 통합)과 CD (Continuous Deployment & Continuous Delivery)에 대해서 살펴보도록 하겠습니다.

 

2. CI(Continuous Ingegration, 지속적 통합)이란?

CI는 개발자가 변경한 코드를 자주 병합하고 자동으로 테스트하는 과정을 의미합니다. 

즉, 코드가 저장소(GitHub 등)에 올라갈 때마다 자동으로 빌드 & 테스트가 실행이 되고,

개발자가 코드 변경 사항을 자주(하루에도 여러 번) 중앙 저장소(GitHub, GitLab 등)에 병합하는 프로세스를 의미합니다.

 

만약 프로젝트에 여러 개발자들이 협업을 하면서 1주일 혹은 더 오랜 기간 개발을 진행하다가 그동안 작업한 코드들을 한번에 Merge를 한다면 분명 충돌되는 많은 코드들이 있을 것 입니다.

 

이렇게 된다면.. 수정하는데에 시간이 많이 걸리겠지요

그렇기에  가능한 작은 단위로 나누어서 주기적으로 빈번히 개발하고 계속해서 통합하는 지속적 통합(CI)가 필요한 것 입니다.

 

따라서 CI의 핵심요소는 아래와 같습니다.

  1. 코드 병합 자동화 → 여러 개발자가 동시에 작업해도 충돌 없이 병합 
  2. 자동화된 빌드 및 테스트 → 코드가 저장소에 올라가면 자동으로 빌드 & 테스트 수행 
  3. 빠른 피드백 제공 → 코드 오류를 빠르게 발견하여 수정 가능

GitHub Actions Workflow에 대한 예시코드를 보자면

    name: CI Pipeline
    on: [push, pull_request]
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: 코드 체크아웃
            uses: actions/checkout@v3
          - name: Node.js 설정
            uses: actions/setup-node@v3
            with:
              node-version: 18
          - name: 의존성 설치 및 테스트
            run: |
              npm install
              npm test
              
	-----------
    
        -	push나 pull_request 발생 시 자동 실행됨
        -	npm install → 의존성 설치
        -	npm run build → 코드 빌드
        -	npm test → 자동 테스트 수행

 

 

 

3. CD (Continuous Deployment / Continuous Delivery) 이란?

CD는 크게 Continuous Delivery(지속적 전달)와 Continuous Deployment(지속적 배포) 두 가지로 나뉘게 되는데요.

특징은 아래와 같습니다.

3-1. Continuous Delivery (지속적 전달)

  • 자동화된 테스트 & 빌드 후 수동 배포
  • 개발자가 배포 여부를 최종적으로 결정 (승인 버튼 필요)

3-2. Continuous Deployment (지속적 배포)

  • 완전히 자동화된 배포
  • 테스트가 통과되면 자동으로 운영 서버에 배포됨

마찬가지로 Github Actions로 AWS에 배포를 한다는 예시를 들어보자면

    name: CD Pipeline
    on:
      push:
        branches:
          - main
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: 코드 체크아웃
            uses: actions/checkout@v3
          - name: Docker 이미지 빌드
            run: docker build -t my-app .
          - name: AWS 서버에 배포
            run: ssh ec2-user@my-server 'docker pull my-app && docker run -d my-app'

 

 

4. CI/CD 파이프라인?

https://unity.com/kr/topics/what-is-ci-cd

CI/CD 파이프라인은 소프트웨어 개발에서 코드 변경 사항이 자동으로 빌드, 테스트, 배포, 모니터링 및 피드백 되는 일련의 과정을 의미합니다.

 

즉, CI/CD 파이프라인의 각 단계를 통과하며 테스트와 배포가 자동화가 됩니다.  

이를 통해서 개발자들의 코드 품질 향상을 이루어내고, 배포속도가 빨라지게 되는 효과가 있죠.

 

 

 


참고링크

https://ko.wikipedia.org/wiki/CI/CD

 

CI/CD - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 소프트웨어 공학에서 CI/CD는 지속적 통합(영어: continuous integration)과 지속적 배포(영어: continuous delivery, CD)가 결합한 사례를 의미한다. CI/CD는 소프트웨어의 개발

ko.wikipedia.org

https://blog.kakaocloud.com/138

 

<지식 사전> CI/CD란? DevOps의 핵심 - 지속적 통합/배포의 개념과 구조 완벽 정리

안녕하세요, 카카오클라우드입니다. 현대 소프트웨어 개발에서 Continuous Integration/Continuous Deployment(이하, CI/CD)는 선택이 아닌 필수가 되었습니다. 빠른 개발과 안정적인 배포를 동시에 달성하기

blog.kakaocloud.com

https://docs.github.com/ko/actions/about-github-actions/understanding-github-actions

 

GitHub Actions 이해 - GitHub Docs

GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD(연속 통합 및 지속적인 업데이트) 플랫폼입니다. 리포지토리에 대한 모든 끌어오기 요청을 빌드 및 테스트하거나 병합된

docs.github.com

https://unity.com/kr/topics/what-is-ci-cd

 

CI/CD란? CI/CD 설명

CI/CD는 레포에서 코드 변경을 하루에 여러 번 통합하는 것을 포함합니다. 자세한 내용은 CI/CD의 복잡성을 알아보세요.

unity.com

https://www.elancer.co.kr/blog/detail/759

 

[CI/CD란?] CTO가 알려주는 실전 CI/CD 구축 노하우

[CI/CD란?] CTO가 알려주는 실전 CI/CD 구축 노하우

www.elancer.co.kr