본문 바로가기
[AWS]/MEGA-SAM-FM

[AWS-성공] 블루/그린(Blue/Green) 방식으로 무중단 배포

by SAMSUNG CLOUD-OKY 2021. 10. 5.
반응형

 

AWS Blue/Green 배포 실습하기

블루/그린(Blue/Green) 방식이 무엇인지 잘 모르겠다면 여기 를 먼저 읽고 오는 것을 추천합니다.

 

그럼 바로 실습을 진행해보겠습니다.
먼저 Auto Scaling Group을 만들겠습니다. (먼저 블루 그룹을 만드는 것입니다.)

 

 

 

1. 시작템플릿 생성 (블루그룹 시작템플릿 없을시)

 

 

시작 템플릿을 통해서 이미지와 인스턴스 유형을 등록해주면 Auto-Scaling을 통해서 템플릿 스펙에 맞게 인스턴스가 생성됩니다. 

 

 

 

 

 

 

 

2. Auto-Scaling 그룹 만들기 (블루그룹)

 

 

그리고 위와 같이 만든 시작 템플릿을 등록하겠습니다.

 

 

 

그리고 위와 같이 가용영역 두 개를 지정하겠습니다.
이렇게 두개를 지정하면 Auto Scaling을 통해 인스턴스를 만들 때 가용영역을 번갈아 가면서 만들기 때문에 하나의 가용영역에 문제가 생겨도 상대적으로 영향을 덜 받을 수 있게 됩니다.

 

 

 

기존에 만들었던 로드 밸런서를 연결하겠습니다.

 

 

 

그 외에 설정은 Default로 두고 다음을 누르겠습니다.

 

 

 

Auto Scaling 그룹의 크기를 구성하려면 최소, 최대 및 원하는 용량을 설정합니다.
원하는 용량은 그룹의 최소 크기보다 크거나 같고 그룹의 최대 크기보다 작거나 같아야 합니다.
(용량 설정은 지금 실습에서는 모두 1로 해도 될 거 같습니다.)

  • 원하는 용량: 그룹 내 목표로 하는 인스턴스 수, 평상시에 유지하고 있을 인스턴스 수
  • 최소 용량: 그룹 내 최소 유지할 인스턴스 수
                  예를들어 최소가 2이면 자동조정 정책이나 사람에 의해 인스턴스 수를 2개 미만으로 줄일 수 없습니다.
  • 최대 용량: 그룹 내 최대 유지할 인스턴스 수

 

 

 

 

저는 평균 CPU 사용률을 사용하겠습니다.
즉, 위와 같이 50이라고 지정했으면 평균 CPU 사용량이 50이 넘을 때 Auto Scaling이 일어나는 것입니다.

 

 

 

그리고 위와 같이 로드밸런서의 DNS 주소로 접속했을 때 AMI 이미지를 만들 때 쓰였던 EC2와 같은 결과가 나온다면 잘 연결된 것입니다.

 

 

 

 

 

 

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

이제 코드를 새로운 것으로 업데이트 한 후에 Blue/Green 배포 방식을 사용해서 진행해보겠습니다.

 

 

위와 같이 약간의 소스 코드를 수정한 후에 새로운 AMI를 만들어 시작 템플릿에 적용한 후에 배포를 해보겠습니다.

 

 

 

먼저 새로운 버전의 AMI를 만들기 위해서 소스 코드 변경이 일어난 인스턴스의 AMI를 생성하겠습니다.
그리고 이미지 이름만 지정하고 나머지는 그대로 두고 이미지를 생성하겠습니다.

 

 

 

그러면 위와 같이 새로운 버전의 코드를 담고 있는 이미지가 만들어진 것을 볼 수 있습니다.
그리고 시간이 좀 지나면 이미지가 available 상태가 될 것입니다.
(이미지를 만드는 최신화가 되는 소스 코드를 갖고 있는 EC2는 중지 상태로 해놓다가 AMI를 새로 만들어야 할 때만 시작해도 좋습니다.)

 

 

그리고 시작 템플릿으로 가서 새로운 AMI를 등록하면서 시작 템플릿을 만들겠습니다.

 

 

여기서는 위에서 만들었던 시작 템플릿과는 다르게 새로운 AMI 이미지를 등록하는 것을 볼 수 있습니다. 

 

 

위와 같이 새로운 이미지를 등록하고 인스턴스 유형에는 프리티어로 사용할 수 있는 t2.micro를 선택하고 시작 템플릿을 만들겠습니다.
보안그룹은 새로 만들어도 되고 기존에 본인이 쓰던 것으로 만들어도 됩니다.
(22, 80번 포트가 열려있는 보안그룹이면 아무거나 상관 없습니다.)

 

 

그러면 위와 같이 현재 배포 중인 시작 템플릿과 업데이트 하고자 하는 시작 템플릿이 존재합니다.

 

 

 

 

 

 

 

4. 새로운 시작 템플릿을 적용한 그린 그룹을 생성하기

 

이와 같이 시작 템플릿만 새로운 것으로 교체하고 뒤에서 하는 설정들은 위에서 만들었던 것과 똑같이 한 후에 다시 한번 만들겠습니다.

그리고 Auto Scaling Group을 만들었으면 EC2 하나가 생성될 것이고 조금 기다렸다가 로드밸런서-대상그룹을 확인해보면 아래와 같이 healthy 상태인 것을 볼 수 있습니다.

 

 

 

 

 

 

 

5. 로드 밸런서로 확인해보기

 

그래서 위와 같이 로드밸런서 DNS로 접속해보면 Blue/Green 그룹이 번갈아가면서 출력되는 것을 볼 수 있습니다.
이와 같이 잠시 동안 배포 서버, 업데이트 된 서버가 동시에 트래픽을 받고 있습니다.
잘 작동하는 것을 확인했기 때문에 Blue Group 서버는 제거해야 합니다.

 

 

위와 같이 Blue Group에 속하는 인스턴스를 등록 취소 하겠습니다.

 

 

 

그러면 위와 같이 새로 소스 코드가 업데이트 된 Green Group 인스턴스만 계속 트래픽을 받는 것을 볼 수 있습니다.
그리고 현재 서버에 문제가 없다는 것을 확신해서 Blue Group으로 롤백 할 일이 없다면 기존의 Auto Scaling Group과 EC2 인스턴스는 종료 및 삭제해도 됩니다.

 

이렇게 블루/그린(Blue/Green) 무중단 배포 과정에 대해서 알아보았습니다.
하지만 소스 코드 변경이 일어날 때마다 매 번 EC2 AMI를 만들고 수작업을 하는 것은 쉽지 않을 것입니다.
그래서 다음 글에서는 CodeDeploy를 사용하여 자동화 배포를 하는 과정에 대해서 다뤄보겠습니다.

 

 

 

 

 

 

출처 : 

https://devlog-wjdrbs96.tistory.com/301

반응형

댓글