배포 전략: 버전, 별칭, 트래픽 전환
AWS Lambda로 구축하는 서버리스 애플리케이션
Claudio Canales
Senior DevOps Engineer
배포 전략이 중요한 이유
버그를 빠르게 감지합니다.
피해 범위를 최소화합니다.
신속하게 복구합니다.
$LATEST vs 게시된 버전
$LATEST
코드를 업데이트할 때마다 이동합니다.
Versions
변경 불가능한 스냅숏입니다.
롤백 및 트래픽 분할 시 고정하기 쉽습니다.
버전은 변경 불가능한 스냅숏입니다
버전을 릴리스 아티팩트처럼 다루세요.
코드와 구성을 모두 캡처합니다.
게시 후에는 변경되지 않습니다.
언제든지 정상 상태로 되돌릴 수 있습니다.
별칭은 안정적인 포인터입니다
안정적인 포인터입니다.
버전 대신 별칭을 호출합니다.
호출자를 변경하지 않고 가리키는 대상을 바꿀 수 있습니다.
dev 및 prod 별칭
환경 관리에 적합합니다.
dev
는 자주 이동합니다.
별칭을 이동하여
prod
로 승격합니다.
가중 별칭을 이용한 트래픽 전환
프로덕션 환경에서 안전하게 테스트합니다.
대부분의 트래픽은 현재 버전으로 유지됩니다.
일부 트래픽만 후보 버전으로 전달됩니다.
카나리 1단계: 90/10
90%는 현재 버전으로 유지됩니다.
10%는 실제 트래픽으로 후보 버전을 테스트합니다.
오류와 지연 시간을 모니터링합니다.
카나리 2단계: 50/50
10% 슬라이스가 정상이면 가중치를 높입니다.
현재 버전 50%, 후보 버전 50%.
50/50에서는 문제가 빠르게 드러납니다.
모니터링이 중요합니다.
카나리 3단계: 100% 새 버전
모든 트래픽을 새 버전으로 전환합니다.
이전 버전은 그대로 유지됩니다.
롤백이 간단합니다.
Blue/green 개념 모델
Blue = 현재 안정 버전.
Green = 새 후보 버전.
별칭을 이동하여 전환합니다.
가중 라우팅으로 전환을 점진적으로 진행합니다.
롤백 = 별칭을 되돌리기
재배포가 필요하지 않습니다.
마지막으로 알려진 정상 버전으로 별칭을 이동합니다.
몇 초 만에 복구할 수 있습니다.
변경 불가능한 버전과 안정적인 별칭이 함께 작동합니다.
전환 중 모니터링
오류 및 타임아웃.
실행 시간 및 지연 시간.
한도 설정 시 스로틀.
신속하게 일시 중지하거나 롤백합니다.
흔한 실수: $LATEST를 프로덕션으로 사용하기
$LATEST에 의존하면 예측 가능성이 떨어집니다.
버전과 별칭을 사용하면 실행 중인 내용이 명확해집니다.
롤백이 안전합니다.
Ignore
안전한 배포 체크리스트
버전을 게시합니다.
별칭을 통해 트래픽을 점진적으로 전환합니다.
결과를 모니터링합니다.
매 단계마다 롤백을 준비해 두세요.
핵심 요점
버전은 예측 가능성을 제공합니다.
별칭은 안정성을 제공합니다.
가중 라우팅은 안전성을 높입니다.
롤백 = 별칭 이동.
연습해 봅시다!
AWS Lambda로 구축하는 서버리스 애플리케이션
Preparing Video For Download...