Skip to content

Commit

Permalink
docs: 📝 무중단(Zero Downtime) 배포
Browse files Browse the repository at this point in the history
  • Loading branch information
syoung125 committed Jun 15, 2024
1 parent f29e0bf commit 1813873
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions contents/blog/4. etc/2024-06-15-zero-downtime.md
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)

0 comments on commit 1813873

Please sign in to comment.