기술 블로그
B레벨 - 심화
토스 페이먼츠 결제 SDK에 카나리 배포를 적용하여 프론트엔드 배포 안정성을 높인 방법
프론트엔드
DevOps
인프라
AWS CloudFrontLambda@EdgeS3JavaScript SDKJA3 Fingerprint
배경
토스 페이먼츠의 JavaScript SDK는 수많은 가맹점 파트너의 결제 처리를 담당하는 핵심 인프라이다.
도전 과제
CDN 캐싱(99% 이상 히트율)과 점진적 롤아웃이라는 상충하는 요구사항을 동시에 만족시켜야 했다.
해결 방안
AWS CloudFront와 Lambda@Edge를 활용한 User-Based Canary 시스템을 구축했다. JA3 핑거프린트를 활용하여 사용자를 코호트로 분류하고, 코호트별로 캐싱을 유지하면서 카나리 가중치에 따라 버전을 분기한다.
결과
캐시 히트율 99% 이상을 유지하면서 점진적 배포가 가능해졌다. Lambda@Edge 실행 시간이 1ms 미만이며, 1000만 요청당 추가 비용이 $0.60에 불과했다.
핵심 인사이트
- 1.CDN 캐싱과 카나리 배포는 코호트 기반 캐시 키 설계로 양립 가능하다
- 2.JA3 핑거프린트는 쿠키 없이도 일관된 사용자 식별을 제공한다
- 3.Edge 함수를 활용하면 배포 없이 실시간으로 트래픽 분배를 조절할 수 있다