안녕하세요. 이번 포스팅에서는 무중단 서버 배포 방식중에서 Blue-Green deploy(블루-그린 배포) 방식에 대해서 다뤄보도록 하겠습니다.
0. 무중단 배포
서버를 배포하는 방법에는 여러가지가 있습니다. 여러가지 배포 방법들이 있지만 거의 모든 배포 방식의 공통점은 서버 사용자들의 불편함을 덜어내는 것이 요점입니다.
특히 서비스 중인(running) 상태의 서버에서의 업데이트와 같은 배포 상황은 더욱 중요합니다. 서버 배포를 위해서 서비스를 잠시 중단하거나 서버를 리부트하게 된다면 배포하는 사람 입장에서는 편하게 작업을 할 수 있겠지만 서비스 사용자들의 불편을 증폭시키는 것에는 이견이 없습니다.
그렇기 때문에 이를 해결하기 위해 서버를 작동중인 상태에서 배포를 진행하는 무중단 배포 방법론들이 많고 이를 수행하지 않는 것이 이상할 정도의 풍조가 자리잡았습니다.
여러가지 무중단 배포 방식중에서 Blue-Green 배포 방식에 대해서 단순 방법론적인 시점에서 보도록 하겠습니다.
1. Blue-Green deploy (블루-그린 배포)의 방법
Blue-Green deploy 방식은 무중단 배포의 한 방식이고, 두 개의 세트를 각각 블루, 그린으로 나뉘어서 배포를 진행하고 세트 간의 트래픽 전환을 일제히 옮기는 방식으로 배포를 진행합니다.
Blue-Green deploy 방식을 아주 간단히 도식화해서 표현해 보겠습니다.
위와 같이 LoadBalancer와 서버 그룹 Group A 가 연결되어있습니다. 서버 그룹 A에는 다수의 서버가 속해있다고 가정합니다.
서버 그룹 A에 속한 서버들 전체가 업데이트가 필요할 때, Blue-Green deploy 방식으로 배포를 한다고 합니다.
그렇다면 서버 그룹 A를 똑같이 복사하여 서버 그룹 B를 만듭니다.
서버 그룹 A를 그대로 복사한 서버 그룹 B를 업데이트를 진행해서 그룹 내의 속한 모든 서버들이 업데이트되게 합니다.
이제 업데이트가 모두 진행된 서버 그룹 B에 Load Balancer를 연결합니다.
이제 원래의 서버 그룹 A에 연결을 끊어서 기존의 트래픽을 모두 서버 그룹 B를 향하게 하면 Blue-Green 배포는 끝이납니다.
2. Blue-Green Deploy 의 장단점
블루-그린 방식은 위의 흐름대로만 봐도 직관적이고 알기 쉽습니다.
그래서 대다수의 배포의 여러가지 단점을 보완하는 장점을 가집니다.
첫번째로 업데이트를 진행하는 도중에도 기존에 사용하던 자원은 그대로 유지되기 때문에 업데이트를 하는 도중에 서버에 부하가 걸릴 요소가 없어집니다.
두번째로는 만약 업데이트된 버전이 문제가 있어서 롤백이 필요한 상황이다라고 한다면 기존에 있는 업데이트를 진행하지 않은 서버그룹으로 연결만 다시 바꿔준다면 손쉽게 롤백이 가능하다는 점입니다.
이렇게 서버 배포 과정에서 나타날 수 있는 주요 문제들을 해결해냈지만 단점이 완벽하게 없는 방법은 아닙니다.
단점으로는 만약 이 방식이 인프라 측면에서 자원을 마음껏 늘리거나 줄일 수 있는 상황이 아니라고 한다면 성립할 수 없는 배포 방식입니다.
위의 그림에서는 서버 그룹 하나를 그대로 복사를 해내기 때문에 자원을 얻기 쉬운 가상환경이나 클라우드 환경이 아니고 물리적인 레거시 서버라면 기존의 자원을 두배로 늘리는 상황은 매우 어렵습니다. 그렇기 때문에 이 방법은 클라우드 환경 또는 컨테이너 등의 가용 자원을 쉽게 늘리거나 줄일 수 있는 환경에서만 가능하다고 할 수 있습니다.
본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.
인용 시 출처와 같이 공개해주세요!
도움이 되셨다면 댓글 또는 공감 부탁드립니다!
'IT > Server_서버' 카테고리의 다른 글
[서버 / 메모리] DDR 메모리와 DIMM은 무엇인가?? DDR과 DIMM의 차이 (0) | 2023.05.15 |
---|---|
[서버] 캐시 버퍼의 write through 방식과 wirte back 방식의 차이 (0) | 2023.05.11 |
[Server] Hangup이란? / 대처법 (0) | 2021.03.09 |
[가상화/Virtualization]하이퍼바이저(Hypervisor)란? / 하이퍼바이저의 종류 (0) | 2021.03.09 |
[Server] In-place deploy / 현재위치 배포 방식 (0) | 2021.01.03 |
댓글