IT 용어

[IT 용어 5.] CI/CD란?

Somaz 2024. 11. 25. 10:59
728x90
반응형

Overview

CI/CD는 현대 소프트웨어 개발 및 운영에서 핵심적인 자동화 전략으로, 코드 통합부터 테스트, 빌드, 배포까지의 전 과정을 자동화함으로써 개발 생산성과 서비스 안정성을 극대화하는 방법론이다.

  • CI (지속적 통합)는 개발자들이 변경한 코드를 공유 저장소에 자주 통합하며, 자동 테스트 및 빌드로 오류를 빠르게 식별한다.
  • CD (지속적 배포)는 이 통합된 코드를 고객 환경까지 자동 배포하여, 더 빠르고 안정적인 소프트웨어 전달을 가능하게 한다.

 

 

CI/CD는 단순한 자동화를 넘어, 팀의 협업 방식과 고객 피드백을 빠르게 반영하는 DevOps 및 Agile 개발 문화의 핵심 요소로 자리잡고 있다.

 

 

 

 

 

 

 

 

📅 관련 글

https://somaz.tistory.com/category/IaC/CI%20CD%20Tool

 

 

 

 

 

 


 

 

 

 

 

CI/CD란?

 

CI (Continuous Integration, 지속적 통합)

지속적 통합은 개발자들이 작업한 코드를 주기적으로 공유 레포지토리에 합치는 것을 말한다. 이 과정은 자동화된 빌드와 테스트를 포함하여, 코드 변경 사항이 문제를 일으키지 않는지 확인한다. 지속적 통합의 주요 목적은 소프트웨어 개발 과정에서 발생할 수 있는 오류를 조기에 발견하고 해결하는 것이다.

 

주요 목적

  • 코드 품질 유지
  • 통합 시 생기는 문제를 조기에 파악
  • 협업 시 효율성 향상

 

 

 

CD (Continuous Deployment, 지속적 배포)

지속적 배포는 개발된 소프트웨어를 고객이 사용할 수 있는 환경까지 자동으로 배포하는 것을 말한다. 이는 지속적 통합 과정을 거친 후, 추가적인 수동 과정 없이 고객에게 소프트웨어를 제공하는 것을 포함한다. 지속적 배포를 통해 소프트웨어의 새로운 버전을 빠르게 고객에게 전달할 수 있다.

 

 

주요 이점

  • 빠른 릴리스 주기
  • 배포에 대한 두려움 감소
  • 고객 피드백 반영 속도 증가

 

 

 

CI/CD의 장점

  • 효율성 증대: 자동화된 프로세스를 통해 개발 및 배포 과정의 속도가 빨라지고, 오류 발생 가능성이 줄어든다.
  • 품질 향상: 지속적인 테스트와 통합을 통해 소프트웨어의 품질이 개선된다.
  • 고객 만족도 향상: 빠른 배포를 통해 사용자의 피드백을 신속하게 반영하고, 소프트웨어의 개선 사항을 빠르게 제공할 수 있다.

 

 

 

 

 

대표적인 CI/CD 도구

도구 설명
Jenkins 오픈소스 자동화 서버, 다양한 플러그인 제공
GitHub Actions GitHub 기반 워크플로우 자동화 도구
GitLab CI/CD Git 저장소 + 파이프라인 통합 제공
Travis CI GitHub 프로젝트와 쉽게 통합 가능
CircleCI 빠른 빌드와 병렬 처리에 강점
ArgoCD Kubernetes 전용 GitOps 도구
Bamboo Atlassian에서 제공, Jira 등과 연동 쉬움
TeamCity JetBrains 제공, IntelliJ와 잘 통합됨

 

 

 

 

 

 

CI/CD의 주요 구성 요소

  • 소스 제어 관리(SCM)
    • 코드 버전 및 변경 사항을 관리하는 GitHub, GitLab 또는 Bitbucket과 같은 도구이다.

 

  • 자동화된 빌드 시스템
    • Jenkins, GitHub Actions, CircleCI, TravisCI, GitLab CI/CD 또는 Azure DevOps와 같은 도구는 빌드 프로세스를 자동화한다.

 

  • 테스트 자동화
    • 단위 테스트: 개별 구성 요소를 확인한다.
    • 통합 테스트: 다양한 모듈이 어떻게 상호 작용하는지 확인한다.
    • 엔드 투 엔드(E2E) 테스트: 사용자 흐름과 상호 작용을 시뮬레이션한다.
    • 도구: Selenium, JUnit, TestNG, Postman(API용)

 

  • 배포 자동화
    • Kubernetes, Docker, Terraform 또는 AWS CodeDeploy와 같은 도구는 스테이징 또는 프로덕션 환경에 대한 자동화된 배포를 관리한다.

 

  • 모니터링 및 피드백
    • Prometheus, Grafana, Datadog 또는 New Relic과 같은 도구는 시스템 상태, 애플리케이션 성능 및 오류를 모니터한다.

 

 

 

 

CI/CD 관련 주요 개념 정리

용어 설명
파이프라인 (Pipeline) 코드가 커밋 후 배포까지 자동으로 거치는 단계적 흐름
스테이지 (Stages) 파이프라인을 구성하는 각 단계 (예: 빌드 → 테스트 → 배포)
아티팩트 (Artifacts) 빌드 후 생성된 결과물 (예: 바이너리, Docker 이미지 등)
IaC (코드형 인프라) Terraform, CloudFormation 등으로 인프라를 코드처럼 관리
블루/그린 배포 두 개의 환경을 번갈아 가며 업데이트, 다운타임 최소화
카나리아 배포 신규 기능을 일부 사용자에게만 우선 제공 후 전체 배포
롤백 문제가 발생했을 때 이전 안정 버전으로 되돌리는 것
시크릿 관리 비밀번호, API 키 등을 안전하게 관리 (예: Vault, AWS Secrets Manager)

 

 

 

 

 

 

 

 


 

 

 

마무리

CI/CD는 더 이상 선택이 아닌 표준 개발 전략이다.
빠르게 변하는 고객 요구와 치열한 시장 경쟁 속에서 빠르고 안정적인 릴리스는 경쟁력을 좌우한다.

 

효율적인 파이프라인을 구축하면,

  • 개발자는 안정적으로 배포 가능한 코드를 만들 수 있고
  • 운영팀은 자동화된 방식으로 배포 및 모니터링을 할 수 있으며
  • 비즈니스는 신속하게 사용자 피드백을 반영하여 제품 개선 속도를 높일 수 있다.

 

 

지금 당신의 팀은 얼마나 잘 자동화되어 있나요?
CI/CD를 도입하거나 개선하려는 팀이라면, 각 도구와 전략을 실무에 맞게 유연하게 적용하는 것이 성공의 열쇠이다.

 

 

 

 

 

 

 

 


Reference

https://www.mabl.com/blog/what-is-cicd

https://github.com/somaz94/DevOps-Engineer/wiki/KR_IT%EC%9A%A9%EC%96%B4

728x90
반응형