AWS Blue/Green deployment


서비스 운영이 쉬워지는 AWS 인프라 구축 가이드 를 읽고 실습 한 내용이고 AWS Blue/Green deployment 생성 방법에 대해서 설명한다.

Blue/Green 배포전 필요한 설정 참고

  1. Auto Scaling
  2. Elastic Load Balancing

AWS에서 Blue/Green 배포 개념

  1. EC2 인스턴스 v1을 정지하고 AMI v1 생성용 인스턴스를 생성

  1. v2을 배포 후 인스턴스 종료하고 AMI v2시작 템플릿 v2생성
  2. 로드 밸런서에 Green 그룹을 등록해서 Green, Blue 인스턴스들을 나눠서 처리
  3. Green, Blue 요청 처리에 문제가 없으면 Blue 그룹을 로드 밸런서에서 제외
  4. 몇 시간 모니터링 후 문제가 없으면 Blue 그룹 인스턴스를 모두 종료

Blue/Green 배포

Blue/Green 배포를 위한 Auto Scaling 그룹 만들기

  1. Blue 그룹을 생성하기 위해 [Auto Scaling 그룹 생성] 클릭


  1. [시작 템플릿]에서 기존에 AMI로 만든 exercise-launch-template를 선택하여 다음 클릭

  1. [시작 템플릿 준수] 선택
  2. a, c 리전의 기본값을 설정 후 [다음] 클릭

  1. 로드 밸런스 설정한 exercise-target-group 선택 후 [다음] 클릭

exercise-target-group 은 미리 로드 밸런스를 설정 해서 생성된 그룹이다. 로드 밸런스 부분 참고

  1. 그룹 크기 설정 후 [다음] 클릭

  1. 메일, 연락처 알림은 추가 하지 않으므로 [다음] 클릭

  1. 태그 추가 후 [다음] 클릭

  1. 검토 화면에서 값들이 제대로 설정됐는지 확인하고 Auto Scaling 그룹 생성 클릭

  1. Auto Scaling 생성 확인

기존 버전의 코드 서비스하기

  1. [로드 밸런서] -> [exercise-lb] 선택 -> DNS 이름 복사

  1. 브라우저에서 로드 밸런서의 DNS 주소로 접속 확인

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

  1. 인스턴스 상태 [stopeed] 상태에서 오른쪽 마우스 클릭 [이미지] -> [이미지 생성] 클릭

  1. [이미지 이름] 입력 후 [이미지 생성] 클릭

  1. [이미지] -> [AMI] 메뉴에 이미지가 생성될때까지 기다리면 상태 값이 available로 변경 확인

  1. [인스턴스] -> [시작 템플릿] 에서 [시작 템플릿 생성] 버튼 클릭

  1. 템플릿 생성 정보 입력 후 [시작 템플릿 생성] 버튼 클릭

  1. [인스턴스] -> [시작 템플릿] 에서 exercise-launch-template-beta 시작 템플릿 생성 확인

  1. [Auto Scaling 그룹 생성] 버튼 클릭

  1. 위에 정보 입력 후 [다음] 버튼 클릭

  1. 세부 정보 구성 후 [다음] 버튼 클릭

  1. 로드 밸런스 설정한 exercise-target-group 선택 후 [다음] 클릭

exercise-target-group 은 미리 로드 밸런스를 설정 해서 생성된 그룹이다. 로드 밸런스 부분 참고

  1. 그 이하 설정은 Blue와 같으니 위에 부분을 참고하면 된다.

  1. EXERCISE-GROUP-GREEN 생성 확인

로드 밸런서에 등록해 Blue/Green 배포 진행하기

  1. 로드 밸런서에 DNS 이름을 복사 후 브라우저에 새로고침을 해보면 2가지 화면이 나오는 것을 확인할 수 있다.

  1. Blue/Green 처리 과정 화면

  1. Green 그룹이 로드 밸런서에 올바르게 등록된것을 확인했으니 Blue 그룹에 대상 그룹을 제거 해야된다. [Auto Scaling Groups] -> [EXERCISE-GROUP-BLUE] 선택 -> [편집] 버튼 클릭

  1. 로드 밸런싱 타겟 제거 후 저장

  1. 로드 밸런서에 DNS 이름을 복사 후 브라우저에 새로고침을 해보면 Blue 화면이 나오는 것을 확인할 수 있다.

Auto Scaling은 항상 사용하지 않을때는 그룹 세부 정보에서 원하는 용량, 최소 그룹 크기 를 0로 해줘야 추가 요금이 발생하지 않는다.

정리

AWS에서 배포 방법을 공부하기 위해서는 기본적으로 로드밸런서, 시작템플릿, AMI 등 개념을 알고 있어야 할 것 같다.
서비스를 배포 하는 도중에 서비스가 중단이 되면 큰 문제가 발생하지만, Blue/Green 배포 방법으로 서비스가 중단 되지 않고 서비스를 계속 진행 할 수 있다.
내가 기본적으로 생각하는 개념은 로드 밸런서의 중심으로 새로운 각 인스턴스에 하나씩 반영하면서 서버가 중지 되지 않는것처럼 보이게 하는것 같다.

참조