WEBBOOK CHAPTER

Next.js 16.3, 서비스로 완성하기: 28장. 캐시를 데이터 분류표로 결정한다

28장. 캐시를 데이터 분류표로 결정한다

공개·회원·예약 데이터가 브라우저, CDN, Next 캐시와 DB를 지나는 경계
공개·회원·예약 데이터가 브라우저, CDN, Next 캐시와 DB를 지나는 경계

캐시 적용 전에 데이터를 네 등급으로 분류한다. 클래스 소개와 공개 이미지는 공유 가능, 지역별 목록은 key가 명확할 때 공유 가능, 로그인 사용자의 예약은 private, 잔여석 최종 판정은 DB transaction이 권위자다. 공개 목록에 사용자별 isBooked를 섞으면 전체 응답을 공유할 수 없으므로 공개 데이터와 개인 overlay를 분리한다.

mutation 뒤에는 영향을 받은 class detail, 지역 목록, host dashboard tag를 기록하고 무효화한다. TTL 만료만 기다리면 취소된 클래스가 계속 팔릴 수 있다. 반대로 요청마다 전체 cache를 비우면 장애 시 DB로 부하가 몰린다. 실습에서는 예약 전후 응답 header, cache 상태, DB query 수를 기록하고 다른 session에서 개인 데이터가 섞이지 않았음을 확인한다.

캐시 회귀 테스트는 같은 URL을 익명 A, 익명 B, 회원 C로 요청한다. 공개 본문은 같아도 cookie·authorization이 들어간 응답의 정책은 달라야 한다. CDN purge 뒤 여러 지역에서 오래된 제목이 남는지 확인하며, 실패하면 우회 header와 원복 절차를 runbook에 둔다.