고민보단 실천을

CDN 캐시 키 설계 실전: 쿼리스트링/헤더/쿠키를 캐시 키에 넣는 기준 본문

카테고리 없음

CDN 캐시 키 설계 실전: 쿼리스트링/헤더/쿠키를 캐시 키에 넣는 기준

Just-Do-It 2026. 3. 24. 14:59

CDN 캐시 키 설계 실전: 쿼리스트링/헤더/쿠키를 캐시 키에 넣는 기준

CDN을 붙였는데도 느리다면, 대부분 캐시 키가 잘못돼서 적중률이 낮습니다.
캐시 키 설계를 '넣을 것/빼야 할 것' 기준으로 정리합니다.

이 글의 목표는 '개념 정리'보다, "어떤 기준으로 결정할지"와 "어떻게 운영에서 사고를 줄일지"를 남기는 것입니다.

왜 이게 어려운가(운영 관점)

운영 이슈는 대부분 한 설정이 아니라 '정렬되지 않은 설정 조합'에서 나옵니다(타임아웃, 종료, 리소스, 재시도).

따라서 증상 -> 원인 -> 검증 루틴을 팀 표준으로 만들면, 장애 대응 시간이 크게 줄어듭니다.

실전 내용(바로 적용)

CDN을 붙였는데도 느리다면, 대부분 캐시 키가 잘못돼서 적중률이 낮습니다.
캐시 키 설계를 '넣을 것/빼야 할 것' 기준으로 정리합니다.

핵심 요약(결론부터)

  • 기준(정책)을 먼저 정하고, 구현/도구는 그 다음에 선택한다
  • 실패/예외/회귀를 운영 체크리스트로 막는다
  • 공식 문서를 최종 근거로 삼고, 팀 문서로 재가공한다

원칙

캐시 키는 최소화(적중률)
정합성 필요 요소만 포함

실무 함정

쿠키 전체를 키에 넣어 적중률 0
언어/기기별 변형을 무제한으로 늘림

체크

쿼리스트링은 '캐시 버전' 용도로 제한
Authorization은 대부분 캐시 비활성 또는 분리
Vary 헤더를 의도적으로 사용

운영 체크리스트(바로 적용)

  • 캐시 적중률 지표를 본다
  • 키에 포함되는 헤더/쿠키를 문서화
  • 퍼지 vs 버전 URL 전략을 합의

FAQ

Q. 쿠키가 있으면 캐시 못 하나요?
A. 가능하지만 어렵습니다. 보통은 쿠키가 붙는 요청은 캐시를 분리하거나, 인증과 컨텐츠를 분리하는 설계가 필요합니다.

마무리: 다음 액션

  • 팀의 기본값(정책)을 1페이지로 문서화한다
  • 대표 시나리오 1개를 코드/설정 예시로 고정한다
  • 배포 전후 지표(p95/p99, 오류율)를 비교해 효과를 확인한다

자주 하는 실수(사고 패턴)

  • 증상만 보고 timeout/limit을 크게 늘려 원인을 숨긴다
  • 프로브/스케일/리소스를 따로따로 튜닝해 전체 QoS가 흔들린다
  • 변경 후 효과를 지표로 검증하지 않아 회귀가 반복된다
  • 운영 자동화(CI/CD)에서 권한/보안 경계를 느슨하게 둔다

적용 순서(추천)

  • 1) 지표로 증상을 고립한다(오류율/지연/재시도율/리소스)
  • 2) 타임아웃을 레이어별로 정렬한다(client > proxy > server > db)
  • 3) 스케일(파드/노드)과 워밍업(readiness)을 같이 설계한다
  • 4) 변경은 작게/단계적으로 하고, 알람/롤백을 같이 준비한다
  • 5) 운영 기준을 문서로 고정하고, 체크리스트로 반복 가능하게 만든다

검증/회귀 방지

  • 재현: 스파이크/롤링업데이트/대용량 업다운로드 같은 시나리오를 고정
  • 로그: upstream time, 종료 이벤트, 재시도 횟수 같은 필드를 고정
  • 알람: OOMKilled, throttling, 5xx burst, p99 spike를 조기 경보로 운영

팀 합의 템플릿(복붙용)

# 장애 대응 템플릿(복붙용)
증상: (오류율/지연/시점/영향 범위)
가설: (타임아웃/리소스/종료/프록시/코드)
검증: (재현/로그/지표 링크)
조치: (설정 변경/배포/롤백)
재발 방지: (알람/체크리스트/문서)

FAQ

Q. 쿠키가 있으면 캐시 못 하나요?
A. 가능하지만 어렵습니다. 보통은 쿠키가 붙는 요청은 캐시를 분리하거나, 인증과 컨텐츠를 분리하는 설계가 필요합니다.

참고/출처

버전/환경에 따라 동작이 달라질 수 있으니, 최종 기준은 공식 문서를 확인합니다.

Comments