-
Notifications
You must be signed in to change notification settings - Fork 2
기술 공유 무중단 배포
CodeDiary18 edited this page Dec 17, 2022
·
1 revision
-
서비스 장애와 배포의 부담을 최소화하기 위해 운영 중인 서비스를 중단하지 않고 신규 소프트웨어를 배포하는 기술
-
무중단 배포의 핵심
-
로드밸런서(Load Balancer)를 통해 연결된 두 개 이상의 (서로 다른 IP, 포트를 가진) 인스턴스에 트래픽을 제어해 배포하는 것
로드밸런서란?
- 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭
- 클라이언트와 서버풀 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 함
- 로드밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에 필요한 기술
-
배포 작업이 서비스에 영향을 주지 않도록 하기 위해 고객의 이용량에 따라 인스턴스는 물론 로드밸런서도 다중화를 고려해야함
→ 무중단 배포를 하기 위해서는 고가용성의 시스템 인프라가 구성되어 있어야 함
-
- 크게 제한된 자원에서 하나씩 배포하여 변경해 나가는 롤링 배포 방식
- 현재 사용 중인 버전의 인스턴스 수만큼 새 버전의 인스턴스를 준비해 로드밸런서가 스위칭해주는 블루-그린 배포 방식
- 새 버전 소프트웨어의 모니터링과 검증에 초점을 맞춘 카나리 배포 방식
-
무중단 배포의 가장 기본적인 방식
-
배포된 서버를 한 대씩 구버전에서 새 버전으로 차례대로 교체하는 것
-
롤링 배포 방식은 가용 자원(인스턴스)이 제한적일 경우에 사용됨
-
교체 과정
-
로드밸런서는 배포된 서버에 연결을 일시적으로 끊음
-
연결이 끊어진 서버에 새롭게 업데이트된 서버를 교체
-
교체가 완료되면 나머지 버전을 위와 같은 과정으로 업데이트
-
-
장점
- 인프라에 구성된 현재 자원을 그대로 유지하고 무중단 배포 가능
-
단점
- 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제 발생할 수 있음
- 업데이트 도중에 서버를 필연적으로 끊어야 하기 때문에 서버 과부하 발생할 수 있음
-
Blue를 구버전, Green을 신버전으로 지칭하여 붙여진 이름
-
운영 환경에 구버전과 동일하게 신버전의 인스턴스를 구성
-
신버전 배포 시 로드밸런서를 통해 신버전으로 모든 트래픽을 전환
-
Rolling Update의 단점을 보완할 수 있는 방법
-
교체 과정
- 서버를 그대로 본떠 하나의 새로운 서버를 생성(새로운 서버는 로드밸런서에 연결 X)
- 새로운 서버 전체를 업데이트
- 기존 서버에 연결된 연결을 새로운 서버의 연결로 변경
-
장점
- 서버의 과부하가 일어나지 않음
- 배포하는 속도가 빠름
- 신속하게 롤백 가능
- 남아 있는 기존 버전의 환경을 다음 배포에 재사용
-
단점
- 비용적인 측면에서 제약 있음
- 시스템 자원이 2배 필요
- 비용적인 측면에서 제약 있음
-
옛날 광부들이 유독 가스에 민감한 카나리아 새를 이용해 가스 누출 위험을 감지했던 것에서 유래
-
신버전을 소수의 사용자들에게만 배포
→ 신버전의 제공 범위를 늘려가면서 모니터링 및 피드백 과정을 거칠 수 있음
-
문제가 없는 것이 확인되면 점진적으로 다른 서버에 신버전 배포
-
장점
- 문제 상황을 빠르게 감지 가능
- A/B 테스트로 활용 가능
-
단점
- 모니터링 관리 비용
- 구버전과 신버전의 공존으로 인한 호환성 문제