-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
63 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
--- | ||
title: "무중단(Zero Downtime) 배포" | ||
date: "2024.06.15" | ||
tags: | ||
- infra | ||
--- | ||
|
||
## 무중단 배포란? | ||
|
||
- 운영중인 서비스를 중단하지 않고 신규 소프트웨어를 배포하는 기술을 말한다. | ||
- 즉, 서비스를 배포할 때 다운타임이 발생하지 않도록 함 | ||
|
||
## 어떻게? | ||
|
||
- 핵심은 로드밸런서를 통해 연결된 두 개 이상의 (서로다른 IP, 포트를 가진) 인스턴스에 *트래픽을 제어해 배포*하는 것! | ||
- 따라서 고가용성의 시스템 인프라가 구축되어 있어야 한다. | ||
|
||
## 종류 | ||
|
||
- 무중단 배포 종류에는 크게 3가지가 있 | ||
1. 롤링 배포 | ||
2. 블루-그린 배포 | ||
3. 카나리 배포 | ||
|
||
### 1. 롤링배포 | ||
|
||
- **서버를 새 버전으로 점진적으로 교체**하는 방식 | ||
- 만약 서버가 3개가 있다면? (s1, s2, s3) | ||
1. s1을 로드밸런서에서 라우팅하지 않도록 한 뒤 -> s1을 새버전으로 교체 -> 다시 라우팅 적용 | ||
2. 다음으로 s2도 동일하게 라우팅하지 않게 하고 -> s2를 새버전으로 교체 -> 다시 라우팅 적용 | ||
3. 마지막으로 s3도 동일한방식으로 새버전으로 교체 | ||
- 특징 | ||
- 배포를 하는 동안 **서버의 개수가 동일**하다 | ||
- 따라서 가용자원(인스턴스)이 제한적일 경우 사용된다 | ||
- 서버 한대를 신버전으로 교체하는 동안 일시적으로 서버 개수가 줄어들게 되므로 서비스 처리 용량을 고려해야한다. | ||
- 인스턴스를 한번에가 아닌 차례로 배포하므로 손쉽게 롤백할 수 있다. | ||
- 반면, 배포가 진행되는 동안 구버전과 신버전이 공존하므로 이로인한 호환성 문제가 발생할 수 있다. | ||
|
||
### 2. 블루-그린 배포 | ||
|
||
- 블루가 구버전, 그린이 신버전으로 지칭 | ||
- **운영 환경에 구버전과 동일하게 신버전 인스턴스를 구성**하고 로드밸런서를 통해 신버전으로 모든 트래픽을 전환하는 배포 방식! | ||
- 특징 | ||
- 배포 하는 동안은 **자원이 두배**가 됨 | ||
- 구버전과 동일한 운영 환경으로 신버전의 인스턴스를 구성하기 때문에 실제 서비스 환경에서 신버전을 미리 테스트 할 수 있는 장점이 있다. | ||
- 롤링 배포와 마찬가지로 빠른 롤백 가능 | ||
- 배포가 완료된 후 남아 있는 기존 버전의 환경을 다음 배포에 **재사용**할 수 있다. | ||
|
||
### 3. 카나리 배포 | ||
|
||
- 옛날 광부들이 유독 가스에 민감한 카나리아 새를 이용해 가스 누출 위험을 감지했던 것에서 유래 | ||
- 예를들어 20%의 팟만 신버전으로 돌리고 모니터링 후 문제가 없다면 이 후 전체배포를 하는 방식 | ||
- 잠재적 문제 상황을 미리 발견할 수 있다! | ||
- 신버전의 제공 범위를 늘려가면서 모니터링 및 피드백 과정을 거칠 수 있다 | ||
- 특징 | ||
- 로드밸런서를 통해 신버전의 제품을 경험하는 사용자를 조절할 수 있음 | ||
- 특정사용자 (Ex. 모바일 이용자) 또는 단순 비율에 따라 구분해 제공할 수도 있음 | ||
- 롤링 배포와 마찬가지로 신·구 두 버전이 운영되기 때문에 버전 관리가 필요하다 | ||
- 신버전의 배포 전에 실제 운영 환경에서 미리 테스트한다는 점이 블루-그린과 비슷하나, 카나리 배포는 좀 더 단계적으로 전환하는 방식을 통해 부정적 영향을 최소화하고, 상황에 따라 트래픽 양을 늘리거나 롤백할 수 있음 | ||
|
||
### Refs | ||
|
||
- [무중단 배포 아키텍처(Zero Downtime Deployment)- 글로벌 서비스 운영의 필수 요소](https://www.samsungsds.com/kr/insights/1256264_4627.html) |