-
[AWS] 블루/그린(Blue/Green) 방식으로 무중단 배포하기Cloud/AWS 2021. 4. 13. 14:57728x90반응형
AWS Blue/Green 배포 실습하기
블루/그린(Blue/Green) 방식이 무엇인지 잘 모르겠다면 여기 를 먼저 읽고 오는 것을 추천합니다.
그럼 바로 실습을 진행해보겠습니다. 먼저
Auto Scaling Group
을 만들겠습니다. (먼저블루 그룹
을 만드는 것입니다.)시작 템플릿을 통해서 이미지와 인스턴스 유형을 등록해주면 Auto-Scaling을 통해서 템플릿 스펙에 맞게 인스턴스가 생성됩니다.
Auto-Scaling 그룹 만들기
그리고 위와 같이 만든
시작 템플릿
을 등록하겠습니다.그리고 위와 같이
가용영역
두 개를 지정하겠습니다. 이렇게 두개를 지정하면 Auto Scaling을 통해 인스턴스를 만들 때 가용영역을 번갈아 가면서 만들기 때문에 하나의 가용영역에 문제가 생겨도 상대적으로 영향을 덜 받을 수 있게 됩니다.기존에 만들었던
로드 밸런서
를 연결하겠습니다.그 외에 설정은 Default로 두고 다음을 누르겠습니다.
Auto Scaling 그룹의 크기를 구성하려면
최소, 최대 및 원하는 용량
을 설정합니다. 원하는 용량은 그룹의 최소 크기보다 크거나 같고 그룹의 최대 크기보다 작거나 같아야 합니다.(용량 설정은 지금 실습에서는 모두 1로 해도 될 거 같습니다.)원하는 용량
: 그룹 내 목표로 하는 인스턴스 수, 평상시에 유지하고 있을 인스턴스 수최소 용량
: 그룹 내 최소 유지할 인스턴스 수 예를들어 최소가 2이면 자동조정 정책이나 사람에 의해 인스턴스 수를 2개 미만으로 줄일 수 없습니다.최대 용량
: 그룹 내 최대 유지할 인스턴스 수
저는
평균 CPU 사용률
을 사용하겠습니다. 즉, 위와 같이 50이라고 지정했으면 평균 CPU 사용량이 50이 넘을 때 Auto Scaling이 일어나는 것입니다.그리고 위와 같이 로드밸런서의
DNS 주소
로 접속했을 때 AMI 이미지를 만들 때 쓰였던 EC2와 같은 결과가 나온다면 잘 연결된 것입니다.새로운 버전의 코드를 적용한 AMI와 시작 템플릿 생성
이제 코드를 새로운 것으로 업데이트 한 후에
Blue/Green 배포
방식을 사용해서 진행해보겠습니다.위와 같이 약간의 소스 코드를 수정한 후에 새로운 AMI를 만들어 시작 템플릿에 적용한 후에 배포를 해보겠습니다.
먼저 새로운 버전의 AMI를 만들기 위해서 소스 코드 변경이 일어난 인스턴스의 AMI를 생성하겠습니다. 그리고 이미지 이름만 지정하고 나머지는 그대로 두고 이미지를 생성하겠습니다.
그러면 위와 같이 새로운 버전의 코드를 담고 있는
이미지
가 만들어진 것을 볼 수 있습니다. 그리고 시간이 좀 지나면 이미지가available
상태가 될 것입니다. (이미지를 만드는 최신화가 되는 소스 코드를 갖고 있는 EC2는 중지 상태로 해놓다가 AMI를 새로 만들어야 할 때만 시작해도 좋습니다.)그리고
시작 템플릿
으로 가서 새로운 AMI를 등록하면서 시작 템플릿을 만들겠습니다.여기서는 위에서 만들었던 시작 템플릿과는 다르게 새로운 AMI 이미지를 등록하는 것을 볼 수 있습니다.
위와 같이 새로운 이미지를 등록하고 인스턴스 유형에는 프리티어로 사용할 수 있는
t2.micro
를 선택하고 시작 템플릿을 만들겠습니다. 보안그룹은 새로 만들어도 되고 기존에 본인이 쓰던 것으로 만들어도 됩니다. (22, 80번 포트가 열려있는 보안그룹이면 아무거나 상관 없습니다.)그러면 위와 같이
현재 배포 중인 시작 템플릿
과업데이트 하고자 하는 시작 템플릿
이 존재합니다.새로운 시작 템플릿을 적용한 그린 그룹을 생성하기
이와 같이 시작 템플릿만 새로운 것으로 교체하고 뒤에서 하는 설정들은 위에서 만들었던 것과 똑같이 한 후에 다시 한번 만들겠습니다.
그리고 Auto Scaling Group을 만들었으면 EC2 하나가 생성될 것이고 조금 기다렸다가
로드밸런서-대상그룹
을 확인해보면 아래와 같이healthy
상태인 것을 볼 수 있습니다.로드 밸런서로 확인해보기
그래서 위와 같이 로드밸런서 DNS로 접속해보면
Blue/Green 그룹
이 번갈아가면서 출력되는 것을 볼 수 있습니다. 이와 같이 잠시 동안 배포 서버, 업데이트 된 서버가 동시에 트래픽을 받고 있습니다. 잘 작동하는 것을 확인했기 때문에
Blue Group 서버는 제거해야 합니다.위와 같이 Blue Group에 속하는 인스턴스를
등록 취소
하겠습니다.그러면 위와 같이 새로 소스 코드가 업데이트 된 Green Group 인스턴스만 계속 트래픽을 받는 것을 볼 수 있습니다. 그리고 현재 서버에 문제가 없다는 것을 확신해서 Blue Group으로 롤백 할 일이 없다면 기존의
Auto Scaling Group
과 EC2 인스턴스는 종료 및 삭제해도 됩니다.이렇게
블루/그린(Blue/Green) 무중단 배포
과정에 대해서 알아보았습니다. 하지만 소스 코드 변경이 일어날 때마다 매 번EC2 AMI
를 만들고 수작업을 하는 것은 쉽지 않을 것입니다. 그래서 다음 글에서는CodeDeploy
를 사용하여 자동화 배포를 하는 과정에 대해서 다뤄보겠습니다.반응형'Cloud > AWS' 카테고리의 다른 글
[AWS] Spring Boot, S3, Travis CI, Auto-Scaling, Load-Balacner, CodeDeploy로 자동화 배포하기 (0) 2021.04.14 [AWS] IAM 개념 및 용어 정리 (1) 2021.04.14 [AWS] 블루/그린(Blue/Green) 배포 방식이란? (0) 2021.04.13 [AWS] EC2 Auto Scaling 간단한 실습해보기 (0) 2021.04.13 [AWS] JMeter를 사용하여 EC2 서버에 부하 테스트하는 법 (0) 2021.04.12