CI / CD

Updated:

CI (지속적인 통합, Continuous Integration)

스크린샷 2019-10-05 오후 8 02 39

지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것이다. - 작은 단위의 작업, 빈번한 적용. 지속적인 통합은 모든 개발을 완료한 뒤에 퀄리티 컨트롤을 적용하는 고전적인 방법을 대체하는 방법으로서 개발자간의 코드 충돌을 방지하고 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이 맞추어져 있다. 대표적인 CI 툴에는 젠킨스(Jenkins)가 있습니다.

스크린샷 2019-10-05 오후 7 49 06

GitHub Flow에서 생각하면 정기적인 빌드 및 테스트(유닛테스트 및 통합테스트)를 거쳐 공유 레포지터리에 병합되는 과정으로 merge 라고 생각하면 됩니다.

CD (지속적인 서비스 제공, Continuous Delivery, Continuous Deployment)

팀이 짧은 주기로 소프트웨어를 개발하는 소프트웨어 공학적 접근의 하나로, 소프트웨어가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증하기 위한 것이다. 소프트웨어를 더 빠르게, 더 주기적으로 빌드하고 테스트하고 출시하는 것을 목표로 한다. 이러한 접근은 더 많은 증분 업데이트를 업무 애플리케이션에 적용할 수 있게 함으로써 변경사항의 배포에 대한 비용, 시간, 위험을 줄일 수 있게 한다.

CI/CD 파이프라인의 마지막 단계는 지속적 배포입니다. 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 릴리스하는 지속적 제공의 확장된 형태인 지속적 배포는 애플리케이션을 프로덕션으로 릴리스하는 작업을 자동화합니다. 프로덕션 이전의 파이프라인 단계에는 수동 작업 과정이 없기 때문에 지속적 배포는 잘 설계된 테스트 자동화에 크게 의존합니다. 실제 사례에서 지속적 배포는 개발자가 애플리케이션에 변경 사항을 작성한 후 몇 분 이내에 애플리케이션을 자동으로 실행할 수 있는 것을 의미합니다.

원칙

스크린샷 2019-10-05 오후 7 50 45

CD(1) - Continuous Delivery

  • 애플리케이션에 적용한 변경사항이 버그 테스트를 거쳐 레포지터리에 자동으로 업로드 되는 것
  • 운영팀은 언제든 실시간으로 이 레포지터리에서 실시간으로 프로덕션 환경으로 배포 가능

CD(2) - Continuous Deployment

  • 애플리케이션을 프로덕션 환경으로 배포하는 작업을 자동화 하는 것
  • 서버가 여러 대 일 경우 더욱 중요
  • Continuous Delivery로 통칭하여언급하기도 함

Leave a comment