오늘도 한 뼘 더

[DevOps] 무중단 배포 전략 이해하기 본문

DevOps & Infra/DevOps

[DevOps] 무중단 배포 전략 이해하기

나른한댕댕이🐶 2023. 11. 23. 16:46
728x90
반응형

  # 배경  

최근 쿠버네티스를 사용하게 되었는데 이전에 ElasticBeanstalk에서는 배포 방식을 선택할 수 있는 설정이 있었는데 쿠버네티스에서의 경우 어떤 방식으로 진행되는지 사실 생각해보지 못했다.

관련 질문을 받고 무슨 방식이 있고 현재 회사에서 사용하기에 제일 적절한 게 무엇인지 고민해 볼 필요가 있다고 생각됐다.

  # 무중단 배포 방식  

실제 사용자가 사용하고 있기 때문에 특히 운영에 배포를 하는 데 있어 무중단 배포 방식은 중요하다!

무중단 배포 전략은 크게 3가지 방법이 있다.

Rolling Update, Blue-Green, Canary 세 가지 방식에 대해 알아보고 정리해보고자 한다.

  # Rolling Update  

Rolling Update는 구 버전의 Pod을 하나씩 내리고 새 버전의 Pod을 하나씩 올리는 과정을 반복하여 업데이트하는 방식을 말한다.
Deployment를 작성할 때 배포 전략을 따로 설정하지 않으면 Rolling Update가 기본 값으로 설정된다.

Rolling Update는 maxUnavailable, maxSurge 두 개의 파라미터를 갖는다.

  ## maxUnavailable  

  • 롤링 업데이트 중 사용할 수 없는 최대 Pod의 수
  • 동시에 삭제할 Pod의 개수
  • 정수 혹은 비율(10%)로 지정

  ## maxSurge  

  • 생성할 수 있는 최대 Pod의 수
  • 동시에 생성할 Pod의 개수
  • 정수 혹은 비율로(10%) 지정

  ## 예시  

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deployment
spec:
  selector:
    matchLabels:
      app: app
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1

 

  # Blue-Green  

서버에 구 버전과 새 버전을 모두 구축하고 한꺼번에 교체하는 방식이다.

Blue/Green 배포 전략에서는 현재 운영 중인 서비스의 환경을 Blue라고 부르고, 새롭게 배포할 환경을 Green이라고 부른다.

 

블루-그린 배포의 주요 특징과 구성 요소

  • 블루 환경 (현재 운영 중인 환경)
    현재 프로덕션 환경으로서 현재 운영 중인 소프트웨어 버전이 배포되어 있는 환경
  • 그린 환경 (새로운 환경)
    새로운 소프트웨어 버전이 배포될 환경으로, 블루 환경과는 완전히 분리되어 있다.
    그린 환경에서는 실제 트래픽을 처리하지 않고 테스트 및 검증이 이루어진다.
  • 로드 밸런서
    로드 밸런서는 블루와 그린 환경 사이의 트래픽을 조절하는 역할
    초기에는 로드 밸런서가 모든 트래픽을 블루 환경으로 전송하다가, 새로운 업데이트를 진행할 때 로드 밸런서 설정을 변경하여 그린 환경으로 전환한다.
  • 트래픽 전환
    새로운 업데이트가 완료되면 로드 밸런서 설정을 변경하여 트래픽을 블루 환경에서 그린 환경으로 전환한다.
    이로써 사용자는 거의 무감각하게 새로운 업데이트를 경험하게 됩니다.

블루-그린 배포는 롤백이 간단하며, 업데이트 도중에 발생하는 장애가 전체 서비스에 영향을 미치지 않도록 하는 장점이 있습니다. 또한, 배포 시간에 따른 다운타임이 거의 없다는 특징을 가지고 있습니다.

  # Canary  

A/B 테스트에 많이 쓰이는 방식이다.

Canary 배포는 소프트웨어를 점진적으로 롤아웃하는 전략 중 하나로, 일부 사용자 또는 일부 트래픽에 대해서만 새로운 버전을 배포하고, 이를 통해 새로운 기능이나 변경이 실제 운영 환경에서 어떻게 작동하는지 평가할 수 있다. 

 

Canary 배포의 주요 특징과 구성 요소

  • 일부 트래픽 또는 사용자 선택
    Canary 배포에서는 새로운 버전이 적용될 일부 트래픽 또는 일부 사용자를 선택
    초기에는 대다수의 트래픽이나 사용자는 기존 버전을 사용
  • 테스트 및 평가
    선택된 그룹에 대해 새로운 버전의 소프트웨어를 배포한 후, 성능, 안정성, 보안 등을 모니터링하고 평가
    이 단계에서 발견된 문제는 즉시 조치될 수 있다.
  • 전환 및 확장
    테스트 및 평가가 성공적으로 완료되면, 새로운 버전이 나머지 트래픽 또는 사용자에게 확장적으로 배포된다.
    전체 배포로 전환되는 과정을 점진적으로 진행
  • 로드 밸런서와 분산 시스템 활용
    로드 밸런서를 사용하여 트래픽을 조절하고, 새로운 버전이 배포된 서버와 기존 버전이 동시에 동작할 수 있도록 합니다.
    분산 시스템의 강점을 활용하여 부하 분산 및 안정성을 확보
  • 자동화된 모니터링 및 롤백
    Canary 배포에서는 모니터링이 중요하며, 자동화된 모니터링 도구를 사용하여 성능 지표를 실시간으로 확인한다.
    문제가 발견되면 자동으로 롤백이나 조치를 취할 수 있도록 자동화된 프로세스가 구성되어야 한다.

Canary 배포는 소프트웨어 업데이트를 보다 안전하게 진행할 수 있도록 도와주는 전략 중 하나이며, 사용자 경험에 미치는 영향을 최소화하는 데 기여한다.

728x90
반응형
Comments