본문 바로가기
AWS

AWS 블루/그린 배포 실습

by 장중앙 2021. 8. 19.

블루/그린 배포

블루 - 기존의 서비스, 그린 - 업데이트될 서비스

State 0

  • 두 개의 동일한 프로덕션 환경이 병렬로 작동
  • 하나는 모든 사용자의 트래픽을 수신하도록 설정하고 다른 하나는 유효한 상태를 유지

 

State 1

  • 새로운 버전의 애플리케이션은 그린 환경(서비스 하지 않고 유효 상태의 환경)에 배포하고 기능 및 성능 테스트를 수행
  • 테스트 결과가 성공이면 애플리케이션의 트래픽을 파란색에서 초록색으로 라우팅(변경)

 

  • 초록색이 활성화된 후 문제가 발생하면 트래픽을 다시 파란색으로 라우팅되도록 변경

기본적으로 Auto scaling과 Load Balance가 필요

새로운 ASG를 만들어 Load Balance와 기존의 ASG의 연결을 끊고 새로운 ASG와 연결

 

ASG(Auto Scaling Group)생성 - 블루버전(현재 서비스)

AWS 기반 웹서비스 구성 실습(2, 3)에서 만든 시작 템플릿, VPC, 서브넷, 로드 벨런스 사용

단순 배포환경 실습이기 때문에 그룹 크기는 최소로 구성

이후는 기본 설정

 

만들어진 ASG과 ASG내부의 인스턴스가 생성된 것을 확인

로드벨런스와 웹서비스 정상 동작 확인

현재 버전(blue) 서비스

 

새로운 버전(green)을 위한 인스턴스 생성

AWS 기반 웹서비스 구성 실습(2)에서 생성한 AMI를 이용하여 인스턴스 생성

내부 설정은 AWS 기반 웹서비스 구성 실습(2, 3)에서와 동일 

* 단 보안그룹의 경우 기존의 보안그룹이 외부에서의 80포트 접속이 거부로 설정했기 때문에 새로운 보안 그룹 생성

 

 


생성된 인스턴스

인스턴스의 소스코드 수정

http public IP접속과 변경한 내용 확인

 

변경된 코드가 반영된 인스턴스의 스냅샷을 생성

인스턴스 중지

 

이미지 생성 : 작업 > 이미지 및 템플릿 > 이미지 생성 

 

생성된 이미지 확인

 

생성한 이미지를 이용해서 시작 템플릿을 생성

 

 

 

AMI 정보를 새로 생성한 AMI로 변경하고, 나머지 기존 시작 템플릿의 설정을 유지



ASG(green)  생성

시작 템플릿 설정에 이어서 ASG설정으로 넘어감

 

시간이 지난 후에 Auto Scaling내부의 인스턴스와 Load Balance 추가된 Auto Scaling 설정이 반영

 

Load Balance를 통해 접속하면 이전 버전(blue)와 새로운 버전(green)이 번갈아 서비스됨

이전 서비스(blue) 중단

blue ASG의 그룹 크기 용량을 0으로 조절 - 인스턴스를 직접적으로 종료할 경우 새로운 인스턴스가 다시 생겨날 것이며 - ASG를 삭제하지 않는 이유는 변경된 서비스인 green에 문제가 발생하면 트래픽을 다시 이전 서비스인 blue로 라우팅되도록 남겨놓음

 

 

 

Load Balance에 접속하여 서비스를 확인

green 서비스로만 접속되는 것을 확인

* rollback의 경우 반대로 green ASG의 그룹 크기 용량을 0으로 blue를 다시 할당하는 것으로 가능

댓글