AWS App Mesh를 사용한 Amazon ECS의 Blue/Green 배포
이 기사에서는 AWS App Mesh을 사용하여 Amazon ECS에서 Blue/Green 배포를 수행하고 싶습니다.
AWS App Mesh란 무엇입니까?
시작하기 전에 AWS App Mesh를 간략하게 소개합니다.
AWS App Mesh는 서비스 간 상호 통신을 쉽게 제어하고 모니터링하는 서비스 메쉬입니다.
컨트롤 플레인은 AWS App Mesh에서 관리하며 Envoy proxy를 데이터 플레인으로 사용합니다.
AWS App Mesh에서 정의한 리소스를 사용하여 아래 그림과 같은 네트워크 모델을 구축하면 네트워크 모델이 Envoy 설정으로 변환되어 데이터 플레인인 Envoy proxy에 배포됩니다.
20201014 AWS Black Belt Online Seminar AWS App Mesh Deep Dive
여기서 네트워크 모델을 위의 그림과 같이 구성한 경우 Virtual Router에서 요청을 배분할 Virtual Node의 가중치와 연결을 변경하여 client인 Virtual Node의 요청 대상을 변경합니다. 없이 Blue/Green 배포를 수행할 수 있습니다.
실현 정책
이번에는 샘플로 다음 그림과 같은 간단한 애플리케이션을 준비합니다.
Frontend service
, Backend service
는 각각 다른 ECS 서비스 Frontend service
는 요청을 받은 후 Backend service
에서 필요한 정보를 가져옵니다 Frontend service
는 Virtual Service에서 Backend service
에 요청 보내기 이 어플리케이션에 대해서, 이하와 같이 네트워크 모델을 구축해 둡니다.
Backend service
서비스로 구성된 Virtual Service 공급자로 Virtual Router 설정 Backend service (blue)
및 Backend service (green)
를 대상으로 설정 Route 타겟의 가중치는 blue : green = 1 : 0 으로 한다
이 상태에서 Route 대상의 가중치를 변경하여 Blue/Green 배포를 수행할 수 있습니다.
동작 검증
그러면 실제로 동작을 확인하고 싶습니다.
시작하기 전에 Blue/Green 배포 전
Frontend service
에 요청을 던져 보겠습니다.$ curl -s $ENDPOINT | jq
{
"message": "\"blue\""
}
위와 같이 blue 환경에 대한 정보를 얻었습니다.
이 상태에서 Route 대상의 가중치를 변경합니다.
$ cat update-route.json
{
"meshName": "advent-calendar",
"routeName": "default",
"spec": {
"httpRoute": {
"action": {
"weightedTargets": [
{
"virtualNode": "http-server-blue",
"weight": 0
},
{
"virtualNode": "http-server-green",
"weight": 1
}
]
},
"match": {
"prefix": "/"
}
},
"priority": 1
},
"virtualRouterName": "http-server-vr"
}
$ aws appmesh update-route --cli-input-json file://update-route.json
...
변경 후
Frontend service
다시 요청을 던져보십시오.$ curl -s $ENDPOINT | jq
{
"message": "\"green\""
}
무사히 green 환경의 정보가 취득되는 것을 확인할 수 있었습니다.
요약
이 기사에서는 AWS App Mesh를 사용하여 Amazon ECS의 Blue/Green 배포를 수행했습니다.
이번 단계에서는 blue 환경에서 green 환경으로 트래픽 전환을 한번에 실시했습니다. 가능합니다.
이 정보가 Amazon ECS에서 Blue/Green 배포를 고려 중이라면 조금이라도 도움이 되길 바랍니다 🙌
Reference
이 문제에 관하여(AWS App Mesh를 사용한 Amazon ECS의 Blue/Green 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/otty246/items/f2aae569c5b2df07cf79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)