초보 개발자

AWS Lambda canary release ( alias, version, weight ) 본문

AWS

AWS Lambda canary release ( alias, version, weight )

taehyeki 2023. 5. 17. 11:37

Version

하나의 람다를 versioning을 사용하여 여러 코드로 보관할 수 있다. 업데이트 이후 나중에 문제가 생겼을 경우 버저닝을 사용한 경우라면 쉽게 업데이트 전의 코드로 돌아갈 수 있게된다.

 

Alias

alias는 별명이라는 뜻이다. linux에서 길고 복잡한 값을 alias를 사용해서 짧은 단어로 사용할 수 있었다.

변수와 같은 내용이라고 생각한다.

 

Canary Release

인터넷에 canary를 검색해보면 새가 가장먼저 나온다.

canary release란 광부들이 광물을 캐러가기 전에 유독가스가 광산안에 있는지 확인하기 위해서 저 canary라는 새를 이용했다고 한다. 새장에 넣어둔 뒤 같이 광물을 캐러 들어가면, 광부들이 가스에 중독되기 전에 먼저 canary가 죽기에 이를 활용했다고 한다.

따라서 canary release란 SW 배포의 방법 중 하나이며, 잠재적으로 문제를 발견하여 전체 운영환경이나 사용자에게 영향을 미치는 것을 방지한다. 또 사용자의 범위를 늘려가며 피드백을 통해 배포하는 방식을 의미한다. 

5%의 사용자를 신규 버전을 사용하게 하면서 관찰, 피드백을 통해 서비스의 안정성을 확인할 수 있으며, 확신이 서게되면 더 많은 사용자들에게 서비스를 제공한다.

Weight

하나의 alias를 사용하여 두 개의 lambda version을 지정할 수 있다. 하나는 90% 다른 하나는 10%로 설정해두면. 그 alias를 사용했을 경우 가중치의 확률로 각 버전의 lambda가 실행이 된다.

 

 

실습해보기

 

HTTP API와 람다를 사용해서 간단히 canary release를 확인할 수 있는 방법을 알아보자 전체적인 아키텍쳐는 다음과 같다.

 

v1
v2

간단한 람다 함수를 만들어서 v1과 v2를 만들어두자, 그 뒤에

그 뒤에 하나의 별칭을 만든 뒤 두 개의 서버를 지정하고 원하는 만큼의 가중치를 설정해두자.

그 다음 HTTP API를 생성하여 아래와 같이 lambda함수를 지정해주자

lamba함수 뒤에 :alias 를 붙여주면 된다.

이 후에 URL을 클릭하면 80퍼센트의 확률로 버전2가 실행이되고 20퍼센트의 확률로 버전1이 실행되는 걸 확인할 수 있다.

이렇게 해서 새로운 람다를 생성했을 때 이 기능이 잘 동작을 하는지 람다의 alias version weight를 상요하여 canary relase방식으로 테스트 해보는 방법을 간단히 알아보았다.