CI/CD - 지속적 통합/지속적 배포

CI/CD

CI (지속적 통합, Continuous Integration)

애플리케이션의 코드를 추가 및 수정할 때마다 테스트를 실행하고 확실하게 작동하는 코드를 유지하는 방법을 지속성 통합(CI, Continuous Integration)이라고 한다. 지속성 통합은 소프트웨어의 향상을 목적으로 고안된 개발 프로세스이다.

  • 빌드 및 테스트 자동화
  • 모든 개발이 끝난 이후에 코드 품질을 관리하는 고전적인 방식의 단점을 해소하기 위해 생긴 개념이다.
  • 개발을 하면서 ‘코드에 대한 통합’을 ‘지속적’으로 진행함으로써 품질을 유지하는 것이다.

CD (지속적 배포, Continuous Deploy 또는 Delivery)

  • 배포 자동화
  • 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 지속적으로 관리하자는 개념이다.

Fault-tolerant(무정지) 시스템

  • Fault Tolerant 컴퓨터 시스템이란? 시스템 내에 어느 한 부품 또는 어느 한 모듈에 Fault(장애)가 발생하더라도 시스템운영에 전혀 지장을 주지 않도록 설계된 컴퓨터 시스템이다.
  • 결함 감내 시스템(Fault tolerant system)은 시스템을 구성하는 부품의 일부에서 결함(fault) 또는 고장(failure)이 발생하여도 정상적 혹은 부분적으로 기능을 수행할 수 있는 시스템이다.

배포의 종류

Rolling Deployment

  • 롤링 업데이트 방식은 새 버전의 서버를 만들어가면서 트래픽을 구 버전 서버에서 신 버전 서버로 점차적으로 옮기는 형태이다.

Blue-Green Deployment

  • 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델이다.
  • 이전 버전을 blue 환경으로, 새 버전은 green 환경으로 부를 수 있다. 프로덕션 트래픽이 blue에서 green으로 완전히 이전되면, blue는 롤백에 대비하여 대기 상태로 두거나 프로덕션에서 가져온 후 업데이트하여 다음 업데이트의 템플릿으로 삼을 수 있다.

Canary Deployment

  • ‘Canary’라는 용어의 어원을 알면 이해가 더 쉽다. Canary는 카나리아 라는 새를 일컫는 말인데, 이 새는 일산화탄소 및 유독가스에 매우 민감하다고 한다. 그래서 과거 광부들이 이 새를 옆에 두고 광산에서 일을 하다가 카나리아가 갑자기 죽게 되면 대피를 했다고 한다.
  • Canary 배포는 카나리아 새처럼 위험을 빠르게 감지할 수 있는 배포 기법이다. 카나리 배포는 일부서버(10% 정도?)에만 신 버전을 배포하여 운영한 후 문제가 없는것이 확인되면 점차적으로 모든 서버에 신 버전을 배포하는 방식이다.

CI / CD 도구

  • Jenkins
  • Travice CI
  • Bamboo
  • Circle CI
  • TeamCity



최종 수정 : 2024-01-24