안녕하세요 이번 포스팅에서는 서버 배포 방식중에서 In-place deploy (현재 위치 배포) 라는 배포 방식의 하나를 다뤄보도록 하겠습니다.
0. 무중단 배포
서버를 배포하는 방법에는 여러가지가 있습니다. 여러가지 배포 방법들이 있지만 거의 모든 배포 방식의 공통점은 서버 사용자들의 불편함을 덜어내는 것이 요점입니다.
특히 서비스 중인(running) 상태의 서버에서의 업데이트와 같은 배포 상황은 더욱 중요합니다. 서버 배포를 위해서 서비스를 잠시 중단하거나 서버를 리부트하게 된다면 배포하는 사람 입장에서는 편하게 작업을 할 수 있겠지만 서비스 사용자들의 불편을 증폭시키는 것에는 이견이 없습니다.
그렇기 때문에 이를 해결하기 위해 서버를 작동중인 상태에서 배포를 진행하는 무중단 배포 방법론들이 많고 이를 수행하지 않는 것이 이상할 정도의 풍조가 자리잡았습니다.
여러가지 무중단 배포 방식중에서 In-place deploy 방식은 무엇인지 단순 방법론적인 시점에서 보도록 하겠습니다.
1. In-place deploy (현재위치 배포) 의 방법
In-place deploy 방식은 무중단 배포의 한 방식이며, 현대 가동중인 서버를 그대로 무중단 배포로 구현하기 때문에 현재위치(In-place)라고 합니다.
In-place deploy를 아주 간단하게 도식화해서 표현해 보겠습니다. 실제 상황에서는 서버가 수십, 수백대 까지도 위치할 수 있습니다.
위의 그림에서는 한대의 로드밸런서와 서버 두 대가 있고, 로드밸런서가 각 서버에게 클라이언트의 요청을 골고루 보내고 있습니다.
만약 이 서버들을 업데이트 작업이 필요해서 In-place deploy(현재위치 배포)를 진행한다고 가정하고 시작하면 아래의 왼쪽 그림부터 순서대로 진행됩니다.
첫번째로 로드밸런서와 서버 B의 연결을 해제합니다. 이렇게 연결이 끊어져도 클라이언트의 요청은 서버 A에서 처리할 수 있기 때문에 서비스에는 지장이 없습니다.
연결이 해제된 서버 B를 업데이트합니다.
이 업데이트가 끝나면 로드밸런서에 다시 서버 B를 연결시키고 그 후에 서버 A를 로드밸런서에서 연결해제합니다. 이 때부터 클라이언트는 업데이트된 서버를 사용하게 됩니다.
서버 A를 업데이트하고 다시 LB에 연결합니다.
이런 방식으로 클라이언트에게 서비스중단이 없이 서버들을 차례로 업데이트할 수 있습니다.
2. In-place deploy 의 장단점
위와 같은 방식대로 In-place deploy는 현재 사용 가능한 자원을 그대로 이용하며 운영중인 상태에서 무중단으로 배포할 수 있다는 장점이 있습니다.
배포를 위해 서버를 증축할 필요가 없으며 로드밸런서에서 해제 및 연결 작업을 이용해서 배포를 쉽게 끝낼 수 있습니다. 그렇지만 명백한 단점도 존재합니다.
첫번째 단점은 업데이트에 문제가 생겨서 이를 롤백해야 하는 경우에 똑같은 방식으로 롤백을 진행해야합니다. 단순하게 롤백 그 자체의 문제가 아니라 해당 업데이트에 문제가 많아서 롤백과 업데이트를 수차례 반복해야한다면 효율적이지 못합니다. 그리고 롤백과 업데이트의 반복에 시간이 오래 걸릴 수록 두번째 단점의 영향을 크게 받습니다.
두번째 단점은 이 방식의 배포를 진행한다면 가용중이던 서버 또는 자원이 자연스레 적어집니다. 위의 그림에서 한 서버의 업데이트를 위해서 두 개중 하나의 서버자원을 중단하기 때문에 병목현상이나 성능저하의 결과로 이어지게됩니다.
In-Place 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]Blue-Green Deploy (블루-그린 배포) 방식 / 서버배포 (0) | 2020.12.30 |
댓글