앞의 포스팅에서 운영 서버 관리 중 환경을 구성하는 것을 다뤘고, 환경을 구성한 후에는 코드를 배포해야 한다.
배포와 관련된 여러 용어들을 정리해보자 👍
무중단/중단 배포
무중단 배포: 서비스를 중단하지 않고 배포를 진행하는 것
중단 배포: 시스템 전체를 정지한 뒤 배포를 진행하는 것
=> 구버전과 신버전이 동시에 서비스되면 안되는 경우나 무중단 배포에 너무나 큰 비용이 들 때 중단 배포를 실시한다.
현재 위치 배포 ( 무중단 배포 )
새롭게 서버를 생성하거나 줄이지 않고 배포하는 것
예) 절반은 잠시 로드 밸런서에서 제외하고 코드를 배포한 뒤 다시 로드 밸런서에 등록하고 나머지에 똑같은 방법을 진행하는 것
블루/그린 배포 ( 무중단 배포 )
현재 블루 그룹에 서버들이 존재하며 그린 그룹에 똑같은 수의 서버 인스턴스르 생성하고, 새로운 코드를 배포한다.
그린 그룹을 로드 밸런서에 등록하고, 블루 그룹을 로드 밸런서에서 제외한다.
장점
1. 구, 신버전이 동시에 떠 있는 시간을 매우 짧게 처리할 수 있음 ( 최신 버전의 코드를 배포한 서버들이 이미 준비돼 있으므로 )
2. 롤백을 굉장히 빠르게 할 수 있다. ( 다시 블루 그룹을 로드 밸런서에 등록하고, 그린 그룹을 해제하면 되므로 )
3. 서비스되는 인스턴스의 수가 줄지 않으므로 요청량을 처리하는 데서 오는 장애의 부담이 없다.
서버 내 블루/그린 배포
Auto Scaling 그룹으로 여러 대의 인스턴스를 사용하는 경우에는 서버 단위로 블루/그린 배포를 진행해야 한다.
하지만 적은 수의 서버를 운영하는 경우에는 nginx와 같은 서버 네의 웹 서브를 통해 블루/그린 배포를 진행할 수 있다.
=> 웹 서버를 이용해 각 포트로 라우팅하는 방식!
예) v1의 코드가 10001번 포트를 사용하고 있다면, v2의 코드는 10002번 포트를 사용하도록 한 후 10002번 포트로 요청을 전달하도록 한다.
AWS에서 블루/그린 배포를 진행하는 것도 간단하다 😃
1. 블루/그린 배포를 위한 Auto Scaling 그룹을 만든다.
2. 새로운 버전의 코드를 적용한 AMI와 시작 템플릿을 생성한다.
3. 로드 밸런서에 등록해 블루/그린 배포를 진행한다.
=> GREEN 그룹을 로드 밸런서에 등록하고, 정상적으로 작동하면 BLUE 그룹을 로드 밸런서에서 제외한다.
'AWS' 카테고리의 다른 글
[Terraform] 테라폼으로 모듈 구성하기 - count, for-each 등 (0) | 2021.02.06 |
---|---|
[AWS] 대용량 스트림 데이터 처리 플랫폼 - Kinesis (0) | 2021.02.06 |
[AWS] 운영 서버 환경 구성 - 외부 환경 ( 도메인, HTTPS, SSL/TLS ) (0) | 2020.10.09 |
[AWS] 운영 서버 환경 구성 - 다중 서버 ( 오토 스케일링, 로드 밸런서 ) (0) | 2020.10.09 |
[AWS] 운영 서버 환경 구성 - 단일 서버 (0) | 2020.10.07 |