사내 주요 웹 프론트엔드 서비스 5개의 정적 자산(JS, CSS, 이미지, 폰트)을 Cloud CDN으로 이전했습니다.
목표는 두 가지였습니다:
- 로드밸런서 이그레스(Egress) 네트워크 비용 절감
- 스케일 투 제로(Scale-to-Zero) 환경에서 콜드 스타트 지연 시간 완화 (정적 파일 요청이 컨테이너 기동을 기다리지 않고 CDN 엣지에서 즉각 응답)
사전 측정: 첫 페이지 로드 데이터의 98%가 불변 정적 에셋
각 앱의 첫 화면 로드 시 발생하는 네트워크 페이로드를 전수 분석했습니다. 앱당 약 15~35개 파일, 총 1~2MB 규모의 리소스가 전송되었으며, 이 중 약 98%가 파일명에 고유 해시(Content Hash)가 포함된 불변 정적 파일(/_next/static/*)이었습니다.
해시가 붙은 파일은 내용이 변경되면 파일명 자체가 바뀌므로, 캐시 유효 기간(TTL)을 1년으로 길게 설정해도 캐시 무효화(Cache Invalidation)를 전혀 걱정할 필요가 없는 가장 이상적인 캐싱 대상입니다.
위험을 최소화하는 에셋 전용 CDN 경로 분리
처음에는 전체 도메인 트래픽을 CDN 뒤에 두는 방식을 고려했으나, 이 경우 사소한 캐시 헤더 설정 오류로 인해 개인화된 동적 HTML이나 API 응답이 캐싱되는 심각한 보안 사고가 발생할 수 있습니다.
따라서 동적 요청은 원본 백엔드로 직결하고, 오직 해시가 포함된 정적 에셋 경로(/_next/static/*)만 Cloud Storage 및 CDN으로 전달되도록 라우팅을 엄격히 분리했습니다.
결과 및 효과
- 캐시 적중률(Cache Hit Ratio) 99.0% 달성
- 일일 20만 건 이상의 정적 요청이 원본 컨테이너를 거치지 않고 CDN 엣지에서 수 밀리초 내로 즉각 반환되어 서버 부하와 네트워크 비용을 크게 절감했습니다.
요약
성공적인 CDN 아키텍처는 막연한 추측이 아닌 철저한 사전 페이로드 측정과 동적/정적 요청의 명확한 경로 분리에서 시작됩니다.