...
펼치기 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
|
펼치기 | ||
---|---|---|
| ||
2021-04-12
2019-09-26
|
...
- Lambda 코드를 수정하여 새로운 버전의 API를 만들어 보겠습니다. Cloud9에서 index.js 파일을 열고 기존 "Hello, AWS!"를 " Hello, DevOps! "로 변경합니다. Ctrl + S 를 눌러 저장합니다.
SAM 템플릿 수정
아래와 같이 Canary 배포를 위한 코드를 넣고 Ctrl +s 를 눌러 저장합니다. 5분간 10퍼센트의 트래픽만 변경된 버전으로 흐릅니다.
코드 블럭 language yml theme RDark title Canary 배포를 위한 SAM 템플릿 수정 linenumbers true AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: AWS DevOps 301 Demo Application Resources: ApiAppFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs14.x Timeout: 5 AutoPublishAlias: live DeploymentPreference: Enabled: true Type: Canary10Percent5Minutes Events: RootHandler: Type: Api Properties: Path: / Method: GET
변경된 코드 체크인
아래와 같이 변경된 코드를 체크인 합니다.
코드 블럭 language bash theme DJango title 변경된 코드 체크인 git add . git commit -am "Canary deploy" git push origin master
CodePipeline에서 배포 상황 확인
코드가 체크인 되면 CodePipeline은 자동으로 CI/CD 작업을 수행합니다.
배포가 진행되는 동안 ExecuteChangeSet은 대기를 하게 됩니다. 이때, Canary 배포가 진행중이므로 아래로 내려가서 트래픽이 바뀌는지 테스트를 진행합니다.
CodeDeploy 서비스에서 확인
Canary 배포 확인
- Canary 배포가 정상적으로 되는지 확인합니다. 배포가 진행중이면 클릭합니다.
...
- 배포가 진행중인 것을 확인할 수 있습니다.
...
테스트
Cloud9에서 정상적으로 API가 동작하는지 살펴 봅니다. 아래와 같은 명령을 수행합니다. API 주소는 본인이 배포된 URL로 변경합니다.
코드 블럭 for ((i=1;i<=100;i++)); do curl "https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod"; echo ; sleep 0.1; done
...
- 5분이 지나면, 배포가 모두 완료되고 트래픽은 새로운 버전으로 100% 전환됩니다.
...
...
- CodeDeploy가 배포되는 중에 Stop and roll back deployment 버튼을 클릭하여 배포가 중단되도록 테스트 해 보세요.
CleanUp
Code 서비스를 이용한 서버리스 서비스 CICD 배포 프로세스를 만들 수 있게 되었습니다.
...