pile·
인프라 / DevOps·aws-architectureAWS Architecture·

삼성이 AWS Lambda Response Streaming으로 실시간 가격 조회를 구현한 방법

삼성 이커머스의 가격 제공 시스템이 시간당 크론 잡 기반 캐싱에서 AWS Lambda Response Streaming을 활용한 실시간 스트리밍 아키텍처로 전환한 과정을 다룬다. 기존 방식은 30개 이상 제품 변형 조합의 폭발과 1시간 동기화 지연으로 플래시 세일 중 오래된 가격이 노출되는 문제가 있었다. 신규 아키텍처는 P90 레이턴시를 4,500ms에서 50ms로 90배 단축하고 인프라를 100개 이상 인스턴스에서 Lambda 5~10개로 단순화했다.

핵심 포인트
  • 기존 시간당 크론 잡은 수천 개 사전 계산 레코드를 저장했으나 대부분 미사용이고 1시간 동기화 지연으로 플래시 세일 시 잘못된 가격이 노출됐다.
  • Bulk Arbitration Engine이라는 상태 비저장 오케스트레이션 레이어가 요청 시점에 Pricing Engine을 직접 조회해 캐시 없이 실시간 가격을 제공한다.
  • AWS Lambda Response Streaming으로 30개 상품 병렬 조회 결과를 버퍼링 없이 스트리밍해 TTFB를 줄였다.
  • SKU 목록을 POST 바디 대신 압축 GET 쿼리 스트링(~800바이트)으로 변환해 CloudFront CDN 캐싱을 가능하게 했다.
  • GZIP Level 1 압축으로 응답 크기 76% 감소(170KB → 40KB), CloudFront 엣지 캐싱으로 95% 트래픽을 처리한다.
상세 정리
  • 기존 문제: 30개 이상 제품과 다양한 변형·혜택 조합으로 수천 개 사전 계산 레코드를 저장, 대부분 미사용이며 가격 동기화 주기가 1시간이라 플래시 세일 중 오래된 가격이 노출됐다.
  • 해결 방향: 중간 캐싱 레이어를 제거하고 요청 시점에 Pricing Engine을 직접 조회하는 상태 비저장 아키텍처로 전환, "가격 엔진이 유일한 진실의 원천"으로 동작하게 했다.
  • Lambda Response Streaming 구현: awslambda.streamifyResponse() 래퍼로 스트리밍 활성화, SKU 목록 파싱 후 30개 병렬 요청 fan-out, 결과를 NDJSON 형식으로 즉시 스트리밍한다.
  • 압축 GET 변환: g=group1(p=SKU-A:1:p=SKU-B:2:c=context) 형식으로 SKU 목록을 쿼리 스트링에 압축해 GET 시맨틱을 유지, CDN 캐싱을 가능하게 했다.
  • CloudFront 설정: 기본 TTL 5분/최대 30분, 모든 쿼리 스트링을 캐시 키에 포함해 SKU 조합별 독립 캐시 엔트리 생성, 커스텀 가격 헤더 화이트리스트 적용.
  • 최적화 4단계 - VPC Peering: 네트워크 오버헤드 제거 + Provisioned Concurrency로 P90 4,500ms → 1,000ms(4.5배 개선).
  • 최적화 4단계 - HTTP/2 멀티플렉싱: 30개 병렬 요청에 커넥션 재사용으로 P90 1,000ms → 218ms(누적 20배 개선).
  • 최적화 4단계 - CloudFront 엣지 캐싱: 95% 트래픽을 엣지에서 처리해 P90 218ms → 50ms(누적 90배), P99 5,100ms → 150ms.
  • 응답 크기: GZIP Level 1 압축 적용으로 170KB → 40KB(76% 감소), 전송 비용과 TTFB 동시 개선.
  • 부분 실패 처리: 한 상품 가격 조회 실패 시에도 나머지 스트림은 계속 진행, 대부분 완성된 페이지를 사용자에게 전달한다.
  • 30개 배치 제한: 타임아웃 방지와 동시성 관리를 위해 30개 단위로 분할 처리, 초과 요청은 병렬 배치로 분리된다.
  • 운영 효과: 피크 시 100개 이상 자동 확장 인스턴스에서 Lambda 함수 5~10개로 단순화, 블랙프라이데이 등 고트래픽 이벤트에서 안정성 향상.
왜 읽나실시간 가격·재고 집계처럼 여러 백엔드 응답을 조합해야 하는 서비스에서 Lambda Streaming + CDN 캐싱 패턴을 구체적 수치와 함께 적용할 수 있는 인프라/백엔드 엔지니어에게 유용하다.
aws-architecture
AWS Architecture 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·vercel-blogVercel Blog·

    Vercel CLI 드라이런 배포로 실제 배포 전 구성 미리 확인하기

    Vercel CLI v54.17.2부터 vercel deploy --dry 명령으로 실제 파일 업로드 없이 배포 구성을 미리 검사할 수 있다. 프레임워크 감지 결과, 포함/제외 파일 목록, 디렉터리 크기 분포, 콘텐츠 해시까지 사전에 확인하고 나서 배포를 결정할 수 있어 의도치 않은 배포 실패를 예방한다.

    #deployment#ci-cd#vercel-cli+1