본문 바로가기
Infra

[Infra] 무중단 배포의 2가지 방법(Rolling Update, Blue-Green)

by 진꿈청 2024. 3. 16.

배포에는 무중단 배포중단 배포.

 

당연하게도 무중단 배포와 중단 배포의 차이점은 중단의 유무이다.

 

배포 중단 과정은 다음과 같다.

 

만약 다음과 같은 서비스가 있다고 하자.

 

참고 블로그 사진

 

해당 서비스에 배포를 한다고 하면

 

 

새로운 버전으로 업데이트를 하기 위해서는 기존에 연결된 서비스를 해제하고
새로운 버전으로 갈아끼운 뒤 다시 서비스를 해야 한다.

 

 

무중단 배포

반면에 무중단 배포는 여러 기술들을 이용해 배포되는 도중에 연결을 해제하지 않고 새로운 버전으로 변경한 뒤 지속해서 서비스를 유지하는 것이다. 

지속적인 배포(CD)라고 볼 수 있다.

 

이런 무중단 배포를 사용하는 방식은 4가지가 있는데 2가지에 관해 소개하려 한다.

  1. Rolling Deployment
  2. Blue-Green Deployment
  3. Canary Deployment
  4. L4 Switch

 

1. Rolling Deployment

Rolling 배포의 컨셉은 다른 배포 방식에 비해 간단하다. 배포된 서버를 한 대씩 구버전에서 새 버전으로 교체하는 것이다.

 

로드밸런서가 새로운 버전으로 업데이트 할 때는 다음과 같은 임무를 수행한다.(하나의 서비스에 다수의 서버가 존재하는 경우)

  • 로드밸런서는 배포된 서버에 연결을 일시적으로 끊는다.
  • 연결이 끊어진 서버에 새롭게 업데이트된 서버로 교체한다.
  • 교체가 완료되면 나머지 버전을 위와 같은 과정으로 업데이트 한다.

 

참고 블로그 사진

 

Rolling 배포의 장점

인프라에 구성된 현재 자원을 그대로 유지하고 무중단 배포가 가능하다.

그도 그럴 것이 기존의 서버의 연결을 끊고 그 자리에 새로운 서버로 대치시켜버리니
기존의 자원에 크게 줄이거나 늘일 필요가 없는 것이다.

 

Rolling 배포의 단점

단점이 조금 치명적이다.

 

업데이트 도중에 서버를 필연적으로 끊어야 하기 때문에 한쪽 서버에 과부하가 생긴다.

 

그리고 롤백이 힘들다는 점이 있다.

 

문제가 생겨서 롤백을 해야한다면 위와 같은 과정을 또 거쳐야하기 때문에 효율적이지 못한다.

 

2. Blue-Green Deployment

Rolling Update의 단점을 보완할 수 있는 방법이 Blue-Green Deployment이다.

Blue Green Deploy는 다음과 같이 구성된다.

 

참고 블로그 사진

 

Blue/Green 상태를 서비스 그룹으로 나눈다.

참고 블로그 사진

 

Blue 상태Green 상태로 만들기 위해서는 다음과 같은 과정이 진행된다.

  • 서버를 그대로 본떠 하나의 새로운 서버를 만든다. (새로운 서버는 로드밸런서에 연결되어있지 않다.)
  • 새로운 서버 전체를 업데이트.
  • 기존 서버에 연결된 연결을 새로운 서버의 연결로 변경.

이를 그림으로 표현하면 다음과 같다.

 

참고 블로그 사진

 

Blue-Green 배포의 장점

서버의 과부하가 일어나지 않는다.

Rolling은 새로 업데이트를 하기 위해서 기존 서버 하나 연결을 끊어야하기 때문에 과부하가 일어난다.

 

Blue-Green 배포의 단점

비용적인 측면에서 제약이 생긴다.

이 방법은 기존의 서버와 동일한 서버 그룹을 하나 더 생성해야 하기 때문에 물리적인 서버에서 사용하기는 조금 힘들다.
기존에 물리적 서버를 구동하는 장비의 비용이 1억이었다면 동일한 그룹을 하나 더 생성해야 한다.
따라서, 2배인 2억이 들어야 하는데, 이것은 매우 비효율적이다.
그래서 이 방식은 쉽게 인스턴스를 생성하거나 없앨 수 있는 클라우드 환경이나 Docker과 같은 가상환경이 더 어울린다.

 

 

 

참고 블로그

https://wonit.tistory.com/331

 

[Infrastructure] Proxy의 개념과 왜 우리는 프록시를 쓰고 있는가? 프록시의 4가지 장점을 빠르게 이해

오늘은 Proxy의 기능에 대해서 알아보려고 한다. 왜 우리는 프록시를 써야하고 왜 지금까지 프록시를 써왔는지에 대해서 생각하는 시간을 가져보자. Proxy 자 일단 프록시에 대해서 먼저 이야기를

wonit.tistory.com