배포 전략: 버전, 별칭, 트래픽 전환

AWS Lambda로 구축하는 서버리스 애플리케이션

Claudio Canales

Senior DevOps Engineer

배포 전략이 중요한 이유

  • 버그를 빠르게 감지합니다.
  • 피해 범위를 최소화합니다.
  • 신속하게 복구합니다.

위험한 배포 vs 안전한 배포

AWS Lambda로 구축하는 서버리스 애플리케이션

$LATEST vs 게시된 버전

$LATEST

  • 코드를 업데이트할 때마다 이동합니다.

Versions

  • 변경 불가능한 스냅숏입니다.
  • 롤백 및 트래픽 분할 시 고정하기 쉽습니다.

Latest vs versions

AWS Lambda로 구축하는 서버리스 애플리케이션

버전은 변경 불가능한 스냅숏입니다

  • 버전을 릴리스 아티팩트처럼 다루세요.
  • 코드와 구성을 모두 캡처합니다.
  • 게시 후에는 변경되지 않습니다.
  • 언제든지 정상 상태로 되돌릴 수 있습니다.

변경 불가능한 버전 스냅숏

AWS Lambda로 구축하는 서버리스 애플리케이션

별칭은 안정적인 포인터입니다

  • 안정적인 포인터입니다.
  • 버전 대신 별칭을 호출합니다.
  • 호출자를 변경하지 않고 가리키는 대상을 바꿀 수 있습니다.

버전을 가리키는 별칭

AWS Lambda로 구축하는 서버리스 애플리케이션

dev 및 prod 별칭

  • 환경 관리에 적합합니다.
  • dev는 자주 이동합니다.
  • 별칭을 이동하여 prod로 승격합니다.

dev 및 prod 별칭 매핑

AWS Lambda로 구축하는 서버리스 애플리케이션

가중 별칭을 이용한 트래픽 전환

  • 프로덕션 환경에서 안전하게 테스트합니다.
  • 대부분의 트래픽은 현재 버전으로 유지됩니다.
  • 일부 트래픽만 후보 버전으로 전달됩니다.

가중 별칭 라우팅 개념

AWS Lambda로 구축하는 서버리스 애플리케이션

카나리 1단계: 90/10

  • 90%는 현재 버전으로 유지됩니다.
  • 10%는 실제 트래픽으로 후보 버전을 테스트합니다.
  • 오류와 지연 시간을 모니터링합니다.

카나리 90/10 분할

AWS Lambda로 구축하는 서버리스 애플리케이션

카나리 2단계: 50/50

  • 10% 슬라이스가 정상이면 가중치를 높입니다.
  • 현재 버전 50%, 후보 버전 50%.
  • 50/50에서는 문제가 빠르게 드러납니다.
  • 모니터링이 중요합니다.

카나리 50/50 분할

AWS Lambda로 구축하는 서버리스 애플리케이션

카나리 3단계: 100% 새 버전

  • 모든 트래픽을 새 버전으로 전환합니다.
  • 이전 버전은 그대로 유지됩니다.
  • 롤백이 간단합니다.

카나리 100% 새 버전

AWS Lambda로 구축하는 서버리스 애플리케이션

Blue/green 개념 모델

  • Blue = 현재 안정 버전.
  • Green = 새 후보 버전.
  • 별칭을 이동하여 전환합니다.
  • 가중 라우팅으로 전환을 점진적으로 진행합니다.

Blue/green 전환

AWS Lambda로 구축하는 서버리스 애플리케이션

롤백 = 별칭을 되돌리기

  • 재배포가 필요하지 않습니다.
  • 마지막으로 알려진 정상 버전으로 별칭을 이동합니다.
  • 몇 초 만에 복구할 수 있습니다.
  • 변경 불가능한 버전과 안정적인 별칭이 함께 작동합니다.

별칭 이동으로 롤백

AWS Lambda로 구축하는 서버리스 애플리케이션

전환 중 모니터링

  • 오류 및 타임아웃.
  • 실행 시간 및 지연 시간.
  • 한도 설정 시 스로틀.
  • 신속하게 일시 중지하거나 롤백합니다.

배포 모니터링 지표

AWS Lambda로 구축하는 서버리스 애플리케이션

흔한 실수: $LATEST를 프로덕션으로 사용하기

  • $LATEST에 의존하면 예측 가능성이 떨어집니다.
  • 버전과 별칭을 사용하면 실행 중인 내용이 명확해집니다.
  • 롤백이 안전합니다.

Latest 드리프트 경고

AWS Lambda로 구축하는 서버리스 애플리케이션

Ignore

AWS Lambda로 구축하는 서버리스 애플리케이션

안전한 배포 체크리스트

  • 버전을 게시합니다.
  • 별칭을 통해 트래픽을 점진적으로 전환합니다.
  • 결과를 모니터링합니다.
  • 매 단계마다 롤백을 준비해 두세요.

안전한 배포 체크리스트 다이어그램

AWS Lambda로 구축하는 서버리스 애플리케이션

핵심 요점

  • 버전은 예측 가능성을 제공합니다.
  • 별칭은 안정성을 제공합니다.
  • 가중 라우팅은 안전성을 높입니다.
  • 롤백 = 별칭 이동.

배포 핵심 요점

AWS Lambda로 구축하는 서버리스 애플리케이션

연습해 봅시다!

AWS Lambda로 구축하는 서버리스 애플리케이션

Preparing Video For Download...