Canary 배포를 하는 방법은 크게 2가지가 존재합니다. lambda function자체를 활용하는 방법과 Rest Api Gateway를 추가로 활용하는 방법이 있습니다.
여기서는 Gateway를 활용해서 Canary Release를 해보도록 하겠습니다. 왜냐하면 이게 더 간단하게 진행할 수 있기 떄문입니다.
방법 1
이를 위해서 우선 버전2를 하나 더 만든 다음에, 기존의 prod라는 별칭을 삭제하고, 새로 prod라는 별칭을 아래와 같이 버전1, 버전2의 가중치를 9 : 1로 설정해 줍니다.
기존에 만든 것과 같이, 별칭을 만들고 이에 대한 /shops경로에 대한 GET메소드를 추가하고 위 canaryFunction:prod에 연결해 주도록 하겠습니다.
이렇게 한 다음에 스테이지 변수를 조금 바꾸어 주고
제 위 URL로 들어가서 확인을 해보겠습니다.
당연히 대부분의 경우에서는 가중치가 높은 버전1이 응답으로 올 것입니다. 하지만 계속 새로고침을 하다보면 10%의 확률로 아래와 같은 화면이 나오게 됩니다.
지금까지 한 방법은 lambda내에서 가르는 방법이었습니다. 버전1, 버전2에 대한 비율을 갈라서 말이죠. 하지만 다음으로는 하나의 별칭에 하나의 버전을 등록하고 Rest Api Gateway에서 Canary기능을 활용하여 Gateway에서 갈라주게끔 설정해 보도록 하겠습니다.
이를 하기 전에 일단 모든 설정했던 것을 지우고 다시 시작해 보도록 하겠습니다.
방법 2
다음과 같이 별칭 stable, new를 만들고 각각 하나의 버전과 연결해 주었습니다.
그리고 이제 Gateway에서 Canary release를 하기 위해 lambda함수를 연결해 주는데, 어떤 별칭이 들어올 지 모르므로 이전과는 다르게 :${stageVariables.version}으로 변수로 작성해 주었습니다.
그리고 배포를 누르게 되면 권한 설정을 해주라고 나옵니다. 저는 그냥 aws-cli가 깔려 있는 맥에서 configure에 등록되어 있는 사용자에게 위 권한을 ${stageVariables.version}을 stable, new로 해주어 등록해 주었습니다.
그리고 second라는 이름으로 API를 배포하겠습니다.
그리고 스테이지 변수를 version - stable을 하나 만든다음에 위 그림의 Canary탭에 들어가서 Canary로 지정된 요청 백분율을 10%로 수정하고 Canary단계 변수에 Canary 재정의 값에 new를 설정해 줍니다.
이렇게 하게 되면 second(으)로 지정된 요청 백분율 90%는 stable에 해당되게 되는 것이고, Canary로 지정된 요청 백분율 10%는 new에 해당되게 되는 것입니다.
이제 위와 동일하게 계속 응답을 받아와서 정말 9:1비율로 찍히는지 확인해 보겠습니다.
드문경우로 아래와 같은 화면이 뜹니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - (AWS Lambda) 스케일링과 동시성 (0) | 2022.07.19 |
---|---|
[ DevOps ] - (API 게이트웨이) Cors (0) | 2022.07.19 |
[ DevOps ] - (API 게이트웨이) Lambda와 Rest API Gateway 연결 (0) | 2022.07.19 |
[ DevOps ] - (API 게이트웨이) Lambda와 HTTP API Gateway 연결 (0) | 2022.07.19 |
[ DevOps ] - (API 게이트웨이) Lambda 함수 생성 및 모니터링 (0) | 2022.07.18 |