본문으로 바로가기

[DevOps] CI/CD란 무엇인가

category IT/DevOps 2024. 11. 21. 16:14
반응형

CI/CD는 Continuous Integration(지속적 통합)과 Continuous Deployment/Delivery(지속적 배포/전달)의 약자로, 소프트웨어 개발 프로세스에서 코드를 더 빠르고 안정적으로 배포하기 위한 방법론과 도구를 나타냅니다.

CI (지속적 통합, Continuous Integration)

CI는 개발자들이 작성한 코드를 정기적으로 중앙 저장소에 통합하고, 이를 자동으로 빌드 및 테스트하는 과정을 의미합니다.

목적은 빠르게 코드를 검증하고 문제를 조기에 발견하여 품질을 유지하는 것입니다.

주요 특징:

  • 코드 통합 자동화: 여러 개발자가 작업한 코드를 중앙 저장소에 빈번히 푸시(push).
  • 자동 빌드: 푸시된 코드가 자동으로 빌드되며 오류가 있는 경우 바로 알림.
  • 자동 테스트: 사전에 작성된 테스트 스크립트를 통해 코드의 기능을 검증.

장점:

  • 개발 초기에 문제를 발견할 수 있음.
  • 통합 주기가 짧아 코드 충돌을 최소화.
  • 개발 속도 및 품질 향상.

CD (지속적 배포/전달, Continuous Deployment/Delivery)

CD는 CI 이후의 프로세스를 가리키며, 코드 변경 사항을 자동으로 배포하거나 전달하는 것을 의미합니다.

두 가지 종류로 나뉩니다:

Continuous Delivery (지속적 전달)

  • 코드를 프로덕션 환경에 배포하기 전까지 모든 단계를 자동화.
  • 프로덕션 배포는 사람의 승인을 필요로 함.
  • 신중한 배포가 필요한 환경(예: 금융, 의료)에서 주로 사용.

Continuous Deployment (지속적 배포)

  • 프로덕션 환경에 배포까지 모든 과정을 자동화.
  • 모든 코드 변경이 테스트를 통과하면 자동으로 사용자에게 배포.
  • 빠르게 피드백을 수집하고 기능을 개선할 수 있음.

장점:

  • 배포 시간 단축.
  • 고객 피드백을 신속히 반영 가능.
  • 반복 가능한 프로세스로 배포 오류 최소화.

CI/CD Pipeline

CI/CD를 구현하기 위해 사용하는 일련의 자동화 프로세스를 CI/CD 파이프라인이라고 합니다.

주요 단계는 다음과 같습니다:

  1. 코드 통합: 개발자가 코드를 푸시.
  2. 빌드: 코드를 빌드하여 실행 가능한 상태로 만듦.
  3. 테스트: 자동화된 테스트 실행.
  4. 배포: 테스트를 통과한 코드를 프로덕션 또는 스테이징 환경에 배포.

도구 예시

  • CI 도구: Jenkins, GitLab CI/CD, CircleCI, Travis CI
  • CD 도구: ArgoCD, Spinnaker, Flux, Tekton
  • 통합 도구: GitHub Actions, GitLab CI/CD

CI/CD는 개발팀의 효율성을 높이고, 소프트웨어 품질과 릴리즈 속도를 동시에 개선하는 핵심적인 개발 방식입니다.

반응형