이전 포스트에서 말씀 드렸듯이, 블루그린 배포 스크립트에서
Deploy CLI --deployment-config-name CodeDeployDefault.OneAtATime 옵션 부분을 수정해서
마지막 Deploy Script만 다음과 같이 고치면, Canary로 할 것인지 Linear로 할 것인지 정할 수 있습니다.
withAWS(credentials:"$AWS_CREDENTIALS") {
sh"""
aws deploy create-deployment \
--application-name AppECS-${CLUSTER_NAME}-${SERVICE_NAME} \
--deployment-config-name ECSCanary10Percent1Minutes \
--deployment-group-name DgpECS-${CLUSTER_NAME}-${SERVICE_NAME} \
--region ap-northeast-2 \
--s3-location bucket=cb-test-deploy,bundleType=YAML,key=${env.JOB_NAME}/${env.BUILD_NUMBER}/appspec.yaml \
--output json > DEPLOYMENT_ID.json
"""
}
기본 옵션이 5분 간격이기 때문에 빠른 배포테스트를 위해 1분마다 10%씩 트래픽을 옮기도록 하겠습니다.
배포가 알맞은 방법으로 수행되었고 테스트해보도록 하겠습니다.
선형이나 카나리 모두 블루그린 처럼 모든 동일한 개수의 서비스를 띄우는 것을 확인할 수 있었습니다.
이번에는 좀 머리를 써서 10% 트래픽에 대한 체크를 해보도록 하겠습니다.
어쩌다가 한번씩 Canary에 대한 새로운 서비스가 호출되는 것을 확인할 수 있습니다.
그러나 배포가 1분에 10%씩인데, 3분만에 100%까지 트래픽이 모두 옮겨진 것을 확인할 수 있었습니다.
음 아무래도 제가 AWS에서 정의하는 Linear와 Canary에 대한 방법에 대한 이해가 조금 더 필요할 것 같습니다.
하지만, ECS에서도 이제 안전하게 서비스를 배포하기 위해서 트래픽을 일부만 조금씩 보내면서
테스트하며 배포하는 방법이 구현되었으므로, 한층 더 서비스의 안정성을 높일 수 있게 된 것 같습니다.
'CICD > ECS' 카테고리의 다른 글
ECS CICD Automation - 10. ECS Linear Deployment (0) | 2020.02.11 |
---|---|
ECS CICD Automation - 9. ECS Linear, Canary Deployment Intro (0) | 2020.02.09 |
ECS CICD Automation - 8. Jenkins Job (ECS Fargate Blue Green) (0) | 2020.01.31 |
ECS CICD Automation - 8. ECS Fargate Blue/Green 생성 (0) | 2020.01.31 |
ECS CICD Automation - 7. Jenkins Job (ECS Fargate Rolling) (0) | 2020.01.31 |