38장. 장애 훈련 — 캐시가 취소된 클래스를 판다
host가 클래스를 취소했는데 CDN 또는 Next cache에 이전 상세가 남으면 예약 요청이 계속 들어온다. write path는 DB의 상태를 다시 확인해 거부해야 하며 cache 화면이 업무 무결성의 최종 방어선이면 안 된다. 먼저 신규 예약을 차단하고 어느 cache layer가 stale인지 response header와 tag 기록으로 좁힌다.
실습에서는 상세 페이지를 warm한 뒤 취소 mutation의 무효화 한 단계를 의도적으로 끈다. 익명·회원·다른 지역 요청에서 stale 범위를 확인하고 purge한다. 예약 API가 CLASS_CANCELLED를 반환하고 좌석·Booking이 변하지 않았음을 검증한다. 복구 뒤 crawler와 social preview도 갱신됐는지 본다.
사후 조치는 “purge를 잘하자”가 아니다. mutation과 tag 관계를 review 가능한 표로 만들고 invalidation worker metric을 둔다. stale 허용 시간이 0인 데이터는 cache하지 않거나 write에서 강하게 재검증한다.