Canary
Canary ๋ฆด๋ฆฌ์ค๋ ์๋ก์ด ๋ฒ์ ์ ์ํํธ์จ์ด๋ฅผ ์ฒ์ฒํ ๋ ธ์ถ์ํค๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ์ด๋ก ์ ๋ฐฐ๊ฒฝ์๋ ์ฒ์์ ์๋ก์ด ๋ฒ์ ์ ์ํํธ์จ์ด๋ฅผ ์ง์ํจ์ผ๋ก์จ, ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ 5%์ ์์ฒญ๋ง์ด ๋ฐ๊ฒฌ๋์ด ๋กค๋ฐฑ๋๊ธฐ ์ ์ ๋งค์ฐ ์ ์ ๋น์จ์ ์ฌ์ฉ์์๊ฒ๋ง ์ํฅ์ ๋ฏธ์น๋ค๋ ๊ฒ์ ๋๋ค.
์ด์ Product catalog app ์๋๋ฆฌ์ค๋ก ๋์๊ฐ์ proddetail-v2
์๋น์ค๊ฐ ์ถ์๋์์ผ๋ฉฐ, "XYZ.com"๊ณผ ๊ฐ์ ๋ ๋ง์ ์ ํ ์นดํ๋ก๊ทธ ๊ณต๊ธ์
์ฒด๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
AWS App Mesh๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์๋ก์ด ๋ฒ์ ์ proddetail-v2
๋ฅผ canary ๋ฐฉ์์ผ๋ก ์ถ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์์
์ด ์๋ฃ๋๋ฉด ์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.

1. Canary ๋ฐฐํฌ
์ด์ Catalog Product Detail backend service์ ์ ๋ฒ์ (๋ฒ์ 2)์ ๋ฐฐํฌํ๊ฒ ์ต๋๋ค. ๋ํ Proddetail
VirtualRouter๋ฅผ ๋ณ๊ฒฝํ์ฌ ํธ๋ํฝ์ 90%๋ฅผ proddetail-v1
์ผ๋ก, 10%๋ฅผ proddetail-v2
๋ฒ์ 2๋ก ๋ผ์ฐํ
ํฉ๋๋ค. ๋ํ proddetail-v2
์ ๋ํ ์ ๋ขฐ๋๊ฐ ๋์์ง์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก %๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค.

Catalog Detail V2 ์๋น์ค๋ฅผ ๋น๋ํฉ๋๋ค.
aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
PROJECT_NAME=eks-app-mesh-demo
export APP_VERSION_2=2.0
for app in catalog_detail; do
aws ecr describe-repositories --repository-name $PROJECT_NAME/$app >/dev/null 2>&1 || \
aws ecr create-repository --repository-name $PROJECT_NAME/$app >/dev/null
TARGET=$ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$PROJECT_NAME/$app:$APP_VERSION_2
cd apps/$app
docker build -t $TARGET -f version2/Dockerfile .
docker push $TARGET
done
cd ../../.
์๋์ ํ์๋ canary.yaml ์น์
์ ๋ณด๋ฉด ์๋ก์ด ์๋น์ค proddetail-v2
์ 10% ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ์๋น์ค proddetail-v1
์ 90%์ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.

์ด์ proddetail-v2
๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
envsubst < ./deployment/canary.yaml | kubectl apply -f -

kubectl get all -n prodcatalog-ns | grep 'proddetail2\|proddetail-v2'

2. Canary ํ
์คํธ
๋ค์ browser ์ฐฝ์ผ๋ก ๋์๊ฐ๋ฉด, Catalog Detail proddetail-v1
Version 1 ์ด ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.

์ด์ Canary Deployment ๋ฒํผ์ ์ฌ๋ฌ๋ฒ ํด๋ฆญํ๋ฉด proddetail-V2
๋ก 10%, proddetail-V1
์ผ๋ก 90%์ ํธ๋ํฝ์ด ์ด๋ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. proddetail-V2
์ ๋ํด์ XYZ.com ๋ฒค๋๊ฐ ์ถ๊ฐ๋๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.

VirtualRouter์ weigh๊ฐ์ ์กฐ์ ํ์ฌ V1๊ณผ V2๋ก ๊ฐ๋ ํธ๋ํฝ ์์ ์กฐ์ ํ ์ ์์ผ๋ฉฐ, ์ฝ๊ฒ V1์ผ๋ก ํธ๋ํฝ์ ๋ณต๊ตฌํ ์๋ ์์ต๋๋ค.

Last updated
Was this helpful?