본문 바로가기
우아한 테크톡

CI/CD와 무중단 배포

by 전재경 2023. 1. 13.

CI(Continuous Intergration)

  • 지속적 통합이라는 뜻으로 개발을 진행하면서도 품질을 관리할 수 있도록 여러 명이 하나의 코드에 대해서
    수정을 진행해도 지속적으로 통하하면서 관리할 수 있음을 의미한다.

마틴 파울러가 제시하는 CI의 4가지 규칙

  • 모든 소스코드가 살아있고 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것
  • 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드할 수 있게 할 것
  • 테스팅을 자동화해서 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것
  • 누구든 현재 실행 파일을 얻으면 지금까지 가장 완전한 실행 파일을 얻었다는 확신을 할게 할 것

 

CD(Continuous Deployment)

지속적 배포라는 뜻으로 빌드의 결과물을 프로덕션으로 릴리스하는 작업을 자동화하는 것을 의미한다.

 

 

 

CI

  • 고객의 요구사항에 빠르게 대응하기 위해 나온 XP의 실천방안 중 한가지
  • 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리할 수 있음을 의미

 

CD

  • CI의 연장선에 있는 개념
  • 빌드의 결과물을 프로덕션으로 지속적으로 배포하는 것을 의미

 


무중단 배포 구현 방법

 

  • AWS에서 Blue-Green 무중단 배포
  • 도커를 이용한 무중단 배포
  • L4. L7 스위치를 이용한 무중단 배포
  • Nginx를 이용한 무중단 배포

 

무중단 배포 방식

 

Rolling 배포

무중단 배포의 가장 기본적인 방식

서버를 차례대로 업데이트 시키는 방식

 

  • 장점
  • 인스턴스를 추가하지 않아도 돼서 관리가 간편

 

  • 단점
    • 사용중인 인스턴스에 트래픽이 몰릴 수 있음
    • 구버전과 신버전의 공존으로 인한 호환성 문제

Canary 배포

  • 신버전을 소수의 사용자들에게만 배포
  • 문제가 없는 것이 확인되면 점진적으로 다른 서버에 신버전을 배포

 

  • 장점
    • 문제 상황을 빠르게 감지 가능
    • A/B 테스트로 활용 가능

 

  • 단점
    • 모니터링 관리 비용
    • 구버전과 신버전의 공존으로 인한 호환성 문제

 

Blue/Green 배포

  • Blue 를 구버전, Green을 신버전으로 지칭
  • 구버전과 동일하게 신버전의 인스턴스를 구성
  • 신버전 배포 시 로드 벨런서를 통해 신버전으로만 트래픽을 전환

 

  • 장점
    • 배포하는 속도가 빠르다
    • 신속하게 롤백 가능
    • 남아있는 기존 버전의 환경을 다음 배포에 재사용

 

  • 단점
    • 시스템 자원이 2배로 필요

 

 

 

 

'우아한 테크톡' 카테고리의 다른 글

Parameter와 Argument  (0) 2023.09.10
Servlet vs Spring  (0) 2023.01.12
웹 소켓 (Web Socket)  (0) 2023.01.11
AOP와 Spring AOP  (0) 2023.01.11
Spring과 Spring Boot의 차이  (0) 2023.01.11

댓글