728x90

CI/CD란 무엇인가?

CI/CD는 소프트웨어 개발과 배포 과정을 자동화하여 효율성과 품질을 높이는 DevOps의 핵심 개념입니다. 이 용어는 두 가지 주요 프로세스를 결합한 것으로, 각각의 의미와 역할은 다음과 같습니다.

CI(Continuous Integration, 지속적 통합)

  • 여러 개발자가 작업한 코드 변경 사항을 자주(하루에도 여러 번) 공통 저장소에 통합(merge)하는 과정을 의미합니다.
  • 코드가 저장소에 병합될 때마다 자동으로 빌드와 테스트가 실행되어, 오류나 버그를 조기에 발견할 수 있습니다.
  • CI의 목적은 소규모, 빈번한 코드 변경을 통해 코드 충돌을 최소화하고, 개발 생산성과 코드 품질을 향상시키는 데 있습니다356.

CD(Continuous Delivery & Continuous Deployment, 지속적 제공 & 지속적 배포)

  • CI 이후의 단계로, 코드가 빌드와 테스트를 거쳐 실제 서비스 환경(프로덕션)까지 배포되는 과정을 자동화합니다.
  • CD는 두 가지 의미로 사용됩니다:
    • 지속적 제공(Continuous Delivery): 배포 가능한 상태까지 자동화하지만, 실제 프로덕션 배포는 사람이 수동으로 결정합니다.
    • 지속적 배포(Continuous Deployment): 테스트를 통과한 코드를 자동으로 프로덕션 환경까지 배포합니다.
  • 두 방식 모두 배포 주기를 단축하고, 사용자에게 더 빠르게 새로운 기능이나 버그 수정을 제공할 수 있습니다3568.

CI/CD 파이프라인의 특징

  • 자동화: 빌드, 테스트, 배포 등 반복적인 작업을 자동화하여 개발자가 본연의 개발 업무에 집중할 수 있습니다.
  • 효율성: 수동 개입을 최소화해 배포 속도를 높이고, 오류 발생 시 신속하게 대응할 수 있습니다.
  • 품질 향상: 자동화된 테스트를 통해 코드 품질을 보장하고, 버그를 조기에 발견할 수 있습니다.
  • 빠른 피드백: 변경 사항이 즉시 테스트되고 배포 준비가 되므로, 사용자 피드백을 빠르게 반영할 수 있습니다5678.

대표적인 CI/CD 도구

  • 오픈소스: Jenkins, GitLab CI 등
  • 클라우드 기반: AWS CodePipeline, Azure DevOps, GitHub Actions 등
  • Kubernetes 환경: ArgoCD 등28

요약

CI/CD는 소프트웨어 개발에서 코드 변경의 통합부터 최종 배포까지의 과정을 자동화하는 일련의 방법론입니다. 이를 통해 개발팀은 더 빠르고 안정적으로 소프트웨어를 사용자에게 제공할 수 있으며, DevOps 문화를 실현하는 데 필수적인 역할을 합니다3567.

Citations:

  1. https://artist-developer.tistory.com/24
  2. https://www.elancer.co.kr/blog/detail/759
  3. https://ccomccomhan.tistory.com/297
  4. https://velog.io/@pp8817/CICD%EB%9E%80
  5. https://unity.com/kr/topics/what-is-ci-cd
  6. https://www.redhat.com/ko/topics/devops/what-is-ci-cd
  7. https://ko.wikipedia.org/wiki/CI/CD
  8. https://beer1.tistory.com/52
  9. https://jud00.tistory.com/entry/CICD%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

 

728x90

+ Recent posts