CI/CD 등장 배경

CI/CD 이전에는 소프트웨어 개발이 워터풀 방법론에 따라 개발되어 개발 기간이 길어 배포 주기도 길다는 특징이 있다.

https://www.geeksforgeeks.org/devops/what-is-ci-cd/

1. 개발자들은 각 로컬(혹은 브렌치)에서 코드를 작성

2. 각 작업들을 병합(merge)

3. 팀 혹은 관리자를 통해 Build 진행하고 테스트 환경에 배포된 버전으로 테스트 수행
- 개발자는 빌드 서버에서 변경한 내용을 컴파일, 빌드 및 테스트하기 전에 합의된 시간까지 대기 → 개발 속도 저하
- 지연된 시간 만큼 심각한 코드 충돌과 빌드 오류 발생 가능성 → 복구 난이도 높음

4. 검증 완료 시 운영 환경에 배포
- 실패 시 재작업에 따른 각 단계 별 작업 담당자 간 소통 비용 증가

개발 과정 문제를 해결하고 소프트웨어의 품질과 배포 속도를 높이기 위해 CI/CD가 등장했다!


CI = Continuous Integration = 지속적 통합

  • CI/CD의 첫 번째 요소
  • 단어 의미 그대로 개발자가 변경되거나 새로운 코드를 중앙 저장소에 자주 정기적으로 통합하는 개발 프로세스
    +
    자동화된 프로세스(빌드 - 테스트)까지 포함

https://developer.android.com/training/testing/continuous-integration?hl=ko (왼쪽 그림), https://semaphore.io/continuous-integration (오른쪽 그림)

  • CI 주요 요소
    - 빈번한 통합
    - 자동화된 빌드 및 테스트
    - 중앙 저장소
    - 피드백

CD= Continuous Delivery / Continuous Deployment = 지속적 전달 / 지속적 배포

  • CD는 테스트를 통과한 코드를 배포 가능한 상태로 준비하고 운영 환경까지 자동으로 배포하는 전체 자동화 과정
  • 운영까지 자동화된 수준에 따라 Continuous Delivery와 Continuous Deployment로 구분

Continuous Delivery = 지속적 전달

개발자의 애플리케이션 변경 사항이 CI 단계에서 자동화된 빌드 및 테스트를 통과한 검증된 코드가 레포지토리(예: GitHub, 컨테이너 레지스트리)로 자동 업로드되어 “언제든 배포 가능한 상태”가 되도록 만드는 자동화 방식이다.

  • 빌드 → 테스트 → 아티팩트 생성 → 리포지토리 업로드까지 자동화
  • 운영 배포는 최소 1개의 수동 승인 단계가 존재(배포 리스크 감소)
  • 배포 준비 상태를 항상 유지하므로 안정성과 예측 가능성이 높아짐

Continuous Deployment = 지속적 배포

코드 변경 사항이 빌드 및 테스트를 통과하면 자동으로 프로덕션 환경까지 배포되는 완전 자동화 방식으로 Continuous Delivery보다 한 단계 더 성숙한 형태이다

  • 빌드 → 테스트 → 스테이징 → 프로덕션 배포까지 완전 자동화
  • 사람 개입 없이 모든 변경이 운영 환경까지 자동 배포
  • 단, 모니터링 체계가 필수(잘 설계된 CI 의존적)

 

  • CD 주요 요소
    - 스테이징 배포(Continuous Delivery)
    - 프로덕션 배포(Continuous Deployment)
    - 승인/검증 파이프라인
    - 롤백 관리

CI/CD = CI + CD

결국 CI/CD는 애자일 개발 방식에서 발전한 소프트웨어 개발 프로세스로, 소프트웨어 변경 사항을 빈번하고 안정적으로 제공할 수 있도록 지원하고 운영 원칙을 포함하는 포괄적인 용어이다.


CI/CD Tool

실무에서는 CI/CD 툴을 구분하지 않는 경우가 대부분이다.

도구유형특징단점가격

도구 유형 특징 단점 가격
Jenkins CI/CD 오픈소스, 플러그인 기반 확장성, 다양한 설정 가능 설정 복잡, 관리 부담 무료
GitLab CI CI/CD GitLab 통합, YAML 기반 설정, 컨테이너 기반 빌드 GitLab 플랫폼에 종속됨 무료/유료
GitHub Actions CI/CD GitHub 통합, YAML 기반 설정, 컨테이너 기반 빌드 GitHub 리포지토리에
의존
무료/유료
Argo CD CD GitOps 기반, Kubernetes 배포 자동화, 선언적 설정 Kubernetes 중심으로
제한적
무료
Flux CD GitOps 기반, Kubernetes 배포 자동화, 선언적 설정, 경량 Kubernetes 중심으로
제한적
무료
CircleCI CI/CD 클라우드 기반, 컨테이너 기반 빌드, YAML 기반 설정 비용 유료
Travis CI CI/CD 클라우드 기반, GitHub 통합, YAML 기반 설정,
오픈소스 프로젝트 무료 제공
비용 유료
AWS
CodePipeline
CI/CD AWS 클라우드 기반, AWS 서비스 통합,
시각적 워크플로우 구성
AWS 의존성 유료
Azure
DevOps Pipelines
CI/CD Azure 클라우드 기반, Azure 서비스 통합, YAML 기반 설정,
다양한 기능 제공
AWS 의존성 무료/유료
TeamCity CI/CD JetBrains 개발, 다양한 기능 제공, 플러그인 기반 확장,
자체 서버 구축
비용 무료/유료

 

 


출처

- https://www.redhat.com/ko/topics/devops/what-is-ci-cd
https://aws.amazon.com/ko/what-is/ci-cd/
https://www.servicenow.com/kr/products/devops/what-is-cicd.html
https://circleci.com/ko/ci-cd/
https://blog.kakaocloud.com/138
https://www.atlassian.com/ko/continuous-delivery
https://www.vmware.com/topics/cicd
https://github.com/resources/articles/ci-cd
https://www.elancer.co.kr/blog/detail/759
https://digital.ai/ko/catalyst-blog/building-cicd-pipeline/
https://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/strategy-cicd-litmus/understanding-cicd.html
https://fastcampus.co.kr/story_article_cicd
https://www.getguru.com/ko/reference/cicd
https://www.ibm.com/think/topics/ci-cd-pipeline
https://www.simform.com/blog/ci-cd-benefits/
https://semaphore.io/continuous-integration
https://www.ibm.com/kr-ko/think/topics/continuous-integration
https://developer.android.com/training/testing/continuous-integration?hl=ko
https://www.globalapptesting.com/blog/what-is-continuous-integration
https://semaphore.io/blog/2017/07/27/what-is-the-difference-between-continuous-integration-continuous-deployment-and-continuous-delivery.html
- https://engineer-diarybook.tistory.com/entry/CICD-CI-CD의-기본-개요](https://engineer-diarybook.tistory.com/entry/CICD-CI-CD%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EC%9A%94)
https://www.geeksforgeeks.org/devops/what-is-ci-cd/
https://semaphore.io/cicd
https://tech.ktcloud.com/entry/What-is-DevOps-DevOps-CICD
https://www.msap.ai/docs/msa-expert-from-concepts-to-practice/implementing-msa/msa-service-development-deployment/ci-cd-pipeline/subsection-8-3-1-ci-cd-tool/

- https://github.com/resources/articles/ci-cd


 

+ Recent posts