피드로 돌아가기
CDN Cache Invalidation: Why Deleted URLs Still Redirect (And How We Fixed It)
Dev.toDev.to
Infrastructure

Cloudflare CDN-Redis 다층 캐시 무효화 최적화로 데이터 정합성 확보

CDN Cache Invalidation: Why Deleted URLs Still Redirect (And How We Fixed It)

Anand Rathnas2026년 5월 20일7intermediate

Context

Cloudflare CDN, Redis, PostgreSQL로 이어지는 다층 캐시 구조에서 Redis만 무효화하여 CDN의 stale 데이터가 지속 노출되는 문제 발생. 특히 Admin API가 Service Layer를 우회하여 DB에 직접 접근함에 따라 모든 캐시 계층의 무효화 로직이 누락된 구조적 한계 노출.

Technical Solution

  • CDN API를 활용한 purgeUrls() 메서드 구현 및 @Async 기반의 Fire-and-forget 전략 채택으로 사용자 응답 지연 방지
  • Cloudflare API 제약 사항인 요청당 최대 30개 URL 제한을 해결하기 위한 Batch Partitioning 로직 도입
  • 단일 리소스가 UI 페이지, API 엔드포인트, Custom Domain 등 다수 경로로 캐싱되는 특성을 반영한 addCacheableUrls 매핑 로직 설계
  • URL 변경 시 기존(Old) 경로와 신규(New) 경로를 모두 추적하여 무효화하는 전방위적 Purge 프로세스 구축
  • 모든 Mutation 경로(User/Admin API)가 Service Layer를 통과하도록 강제하여 캐시 무효화 누락 가능성 제거

1. CDN-App-DB 구조에서 모든 Mutation 경로가 캐시 무효화 로직을 포함하는지 감사

2. 외부 API 의존성이 있는 무효화 로직에 `@Async` 적용 및 타임아웃/실패 로그 모니터링 설정

3. 하나의 논리적 리소스가 가지는 모든 물리적 URL 경로(Alias, Domain 등)를 리스트업하여 Purge 대상에 포함

원문 읽기