본문 바로가기

용어 정리

[용어 정리] 인플레이스 배포, 블루/그린 배포

운영 서버를 관리하기 위해서는 운영 서버 환경 구성 뿐만 아니라 코드 배포 또한 중요합니다.

우선 코드 배포 관련 용어들을 알아보겠습니다.

 

무중단/중단 배포

무중단 배포와 중단 배포의 차이점은 배포를 할 때 서비스를 중단할지 안 할지에 대한 차이가 있습니다.

서비스를 중단하지 않는다면 사용자들이 해당 서비스를 사용하는데에 지장을 느끼지 못하고,

중단 배포를 한다면 배포를 하는 동안 사용자는 해당 서비스를 사용할 수 없습니다.

 

만약 서비스에 새로운 기능이 추가된다고 하였을 때, 해당 기능이 다른 기능들에게

전혀 영향을 주지 않는다고 하였을 때는 무중단 배포를 하여도 상관이 없지만,

새로운 기능을 추가하면서 기존 데이터베이스에 변경이 들어간다던가 한다면 

과거 테이블 스키마를 사용하던 서버의 인스턴스는 오류가 발생할 것입니다.

 

인플레이스 배포

인플레이스 배포는 무중단 배포를 하기 위한 기법 중 하나입니다.

여러 대의 서버를 배포할 때 새롭게 서버를 생성하거나 줄이지 않고 배포를 하게 됩니다.

 

1. 만약 로드 밸런서가 클라이언트의 요청을 받고, 네 개의 서버에게 해당 요청을 나누어주고 있다고 가정해보겠습니다.

   모든 서버는 현재 version1을 사용 중이고 version2를 배포하려고 합니다.

 

2. 4개의 인스턴스 중 2개의 인스턴스는 로드 밸런서에서 제외를 하고 요청을 보내지 않습니다.

 

3. 제외댄 인스턴스 2대에 대하여 version2의 코드를 배포합니다.

    version2의 인스턴스들에게 요청을 전달하고 기존의 요청을 전달하던 2대의 인스턴스에게는 요청을 전달하지 않습니다.

 

4. 다시 나머지 2개의 인스턴스에게 version2를 배포해줍니다.

 

5. 다시 나머지 인스턴스들도 로드 밸런서에 등록하여 요청을 나눠 받게 합니다.

 

이렇게 하여 로드 밸런서에 등록된 총 4대의 인스턴스에 대하여 무중단 배포를 진행하게 됩니다.

이렇게 하면 새로운 인스턴스를 생성할 필요 없이 무중단 배포가 가능해집니다.

대신에 배포 중에는 요청을 처리할 인스턴스의 수가 감소한다는 단점이 있습니다.

꼭 예시처럼 절반의 인스턴스를 중지시키고 배포를 하는 것 뿐만 아니라

시간이 오래 걸리더라도 한번에 하나의 인스턴스만 중지시키면서 배포 또한 가능합니다.

 

블루/그린 배포

블루/그린 배포 또한 무중단 배포 기법 중 하나입니다.

블루/그린 배포는 두 개의 그룹을 가지고 진행이 됩니다.

여기서 그룹이란 Target Group이나 Auto Scaling Group이 될 수 있습니다.

 

1. 현재 블루 그룹에는 기존의 버전인 version1을 사용하는 인스턴스들이 속해있고, 그린 그룹은 비어있습니다.

 

2. 그린 그룹에 블루 그룹과 같은 수의 인스턴스를 생성하고 version2의 코드를 배포합니다.

 

3. 그린 그룹에 배포가 완료된다면 로드 밸런서에 등록하여 클라이언트의 요청을 블루 그룹과 나누어 받습니다.

 

4. 로드 밸런서에 블루 그룹을 제외하여 클라이언트의 요청을 모두 그린 그룹에서 처리하게 합니다.

 

5. 블루 그룹에 존재하는 인스턴스들을 모두 종료합니다.

 

블루/그린 배포와 인플레이스 배포와의 차이점은 인플레이스 배포의 경우

구버전과 신버전이 동시에 떠 있는 시간이 블루/그린 배포에 비하여 깁니다.

다음으로 블루/그린 배포의 경우 롤백을 하는데에 걸리는 시간이 짧습니다.

인플레이스 배포의 경우 롤백은 구버전을 다시 배포해야하지만, 블루/그린 배포는 로드 밸런서에 등록, 해제만 하면 되기 때문입니다.

그리고 배포의 과정에 있어서 서비스가 되는 인스턴스의 수가 그대로이기 때문에 요청량을 처리하는데에 있어서 부담이 없습니다.

대신에 배포하는 데에 있어서 인스턴스의 수를 두 배로 늘려야 하기 때문에 배포를 준비하는데에 필요한 시간이 더 오래 걸립니다.

 

'용어 정리' 카테고리의 다른 글

[용어 정리] IP address, IP Class, Subnet Mask  (0) 2020.07.20
[용어 정리] Public IP, Private IP  (0) 2020.07.19
[용어 정리] VPC  (0) 2020.07.09
[용어 정리] 가상화  (0) 2020.07.08
[용어 정리] 도메인, DNS  (0) 2020.07.07