오늘도 한 뼘 더
[DevOps] 무중단 배포 전략 이해하기 본문
# 배경
최근 쿠버네티스를 사용하게 되었는데 이전에 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 배포는 소프트웨어 업데이트를 보다 안전하게 진행할 수 있도록 도와주는 전략 중 하나이며, 사용자 경험에 미치는 영향을 최소화하는 데 기여한다.
'DevOps & Infra > DevOps' 카테고리의 다른 글
[MySQL | ShellScript] 특정 컬럼만 백업해서 복원하는 스크립트 생성하기 (0) | 2024.04.05 |
---|---|
[Storage] EC2 Storage가 계속 늘어나는 문제를 해결한다 (0) | 2024.02.15 |
[Terraform] 테라폼 AWS Provider 설정하기 (0) | 2023.08.24 |
[Terraform] Terraform 설치하기 (0) | 2023.07.31 |
[Terraform] 테라폼 시작하기 (0) | 2023.07.24 |