본문 바로가기

AWS

[AWS] 운영 서버 관리 - 코드 배포

앞의 포스팅에서 운영 서버 관리 중 환경을 구성하는 것을 다뤘고, 환경을 구성한 후에는 코드를 배포해야 한다.

 

 

배포와 관련된 여러 용어들을 정리해보자 👍

무중단/중단 배포

무중단 배포: 서비스를 중단하지 않고 배포를 진행하는 것

중단 배포: 시스템 전체를 정지한 뒤 배포를 진행하는 것

=> 구버전과 신버전이 동시에 서비스되면 안되는 경우나 무중단 배포에 너무나 큰 비용이 들 때 중단 배포를 실시한다.

 

현재 위치 배포 ( 무중단 배포 )

새롭게 서버를 생성하거나 줄이지 않고 배포하는 것

예) 절반은 잠시 로드 밸런서에서 제외하고 코드를 배포한 뒤 다시 로드 밸런서에 등록하고 나머지에 똑같은 방법을 진행하는 것

 

블루/그린 배포 ( 무중단 배포 )

현재 블루 그룹에 서버들이 존재하며 그린 그룹에 똑같은 수의 서버 인스턴스르 생성하고, 새로운 코드를 배포한다.

그린 그룹을 로드 밸런서에 등록하고, 블루 그룹을 로드 밸런서에서 제외한다.

 

장점

1. 구, 신버전이 동시에 떠 있는 시간을 매우 짧게 처리할 수 있음 ( 최신 버전의 코드를 배포한 서버들이 이미 준비돼 있으므로 )

2. 롤백을 굉장히 빠르게 할 수 있다. ( 다시 블루 그룹을 로드 밸런서에 등록하고, 그린 그룹을 해제하면 되므로 )

3. 서비스되는 인스턴스의 수가 줄지 않으므로 요청량을 처리하는 데서 오는 장애의 부담이 없다.

 

서버 내 블루/그린 배포

Auto Scaling 그룹으로 여러 대의 인스턴스를 사용하는 경우에는 서버 단위로 블루/그린 배포를 진행해야 한다.

하지만 적은 수의 서버를 운영하는 경우에는 nginx와 같은 서버 네의 웹 서브를 통해 블루/그린 배포를 진행할 수 있다.

=> 웹 서버를 이용해 각 포트로 라우팅하는 방식!

예) v1의 코드가 10001번 포트를 사용하고 있다면, v2의 코드는 10002번 포트를 사용하도록 한 후 10002번 포트로 요청을 전달하도록 한다.


 

AWS에서 블루/그린 배포를 진행하는 것도 간단하다 😃

1. 블루/그린 배포를 위한 Auto Scaling 그룹을 만든다.

2. 새로운 버전의 코드를 적용한 AMI와 시작 템플릿을 생성한다.

3. 로드 밸런서에 등록해 블루/그린 배포를 진행한다. 

=> GREEN 그룹을 로드 밸런서에 등록하고, 정상적으로 작동하면 BLUE 그룹을 로드 밸런서에서 제외한다.