데이터 엔지니어링/클라우드

[클라우드] 배포 전략 (인플레이스, 롤링, 블루/그린, 카나리)

pythaac 2022. 5. 16. 17:16

https://dev.classmethod.jp/articles/ci-cd-deployment-strategies-kr/

 

매번 헷갈리는 CI/CD 배포 전략 정리해버리기 | DevelopersIO

AWS 자격증을 공부하다가 매번 헷갈리는 배포 전략에 대해서 정리해보았습니다.

dev.classmethod.jp

 

  • 인플레이스
    • [정의] 새로운 버전의 어플리케이션만 반영하는 방법
    • [절차] 어플리케이션 일시 정지 -> 최신 버전으로 설치 -> 앱 실행
    • [사용] EC2, 온프레미스 환경에서만 사용 가능

https://dev.classmethod.jp/articles/ci-cd-deployment-strategies-kr/

  • 롤링 배포
    • [정의] 한 번에 정해진 수 만큼씩 새로운 버전을 배포
    • [방식] 구버전에서 새버전으로 트래픽을 점진적으로 전환하여, 구버전이 점차 삭제
    • [장점] 서버 수의 제약이 있을 경우 유용한 방법
      - [단점] 배포 중 인스턴스의 수가 감소되므로, 처리 용량을 미리 고려해야함
    • [제품] Elastic Beanstalk, CodeDeploy에서 사용
    • [비교] EC2, 온프레미스는 인플레이스+롤링
    • [사용] Lambda, ECS에서 기본으로 사용

https://dev.classmethod.jp/articles/ci-cd-deployment-strategies-kr/

  • 블루/그린
    • [정의] 새버전을 위한 환경을 따로 구축하여 교체하는 방법
    • [장점] 버전 관리 문제 방지 / 운영 환경에 영향 없이 실제 환경으로 새버전 테스트 가능
    • [장점] 문제발생시 롤백이 인플레이스보다 빠름
    • [단점] 시스템 자원이 2배로 필요
    • [제품] Elastic Beanstalk, CodeDeploy

https://dev.classmethod.jp/articles/ci-cd-deployment-strategies-kr/

  • 카나리
    • [정의] 가동 중인 일부 서버에만 새버전을 배포하여, 일부 트래픽을 새버전 환경으로 분산하는 방법
    • [장점] A/B 테스트가 가능 / 오류율 및 성능 모니터링에 유용
    • [장점] 분산 후 결과에 따라 새버전 대체 or 구버전 롤백 선택 가능
    • [방식] 이 방법을 사용하는 대표적인 서비스는 API Gateway, CodeDeploy도 사용