캐싱
캐시는 비싼 질문에 대한 답을 저장해서 다시 묻지 않아도 되게 한다. 홈페이지가 방문자마다 같은 무거운 쿼리를 돌린다면, 그 결과를 Redis에 60초 동안 캐시하고 즉시 제공하라.
캐싱은 성능 최적화이지 신뢰의 원천이 아니다. 초보자의 고전적 함정은 캐시 무효화를 잊는 것이다 — 캐시된 사본이 낡아져 사용자가 옛 데이터를 본다. 경험 법칙: 진짜 병목을 측정했을 때만 캐시하고, 캐시된 값이 언제 만료되거나 갱신되는지에 대한 명확한 규칙을 항상 가져라.
깔끔한 전략은 두 가지인데, 이 둘을 헷갈리는 것이 대부분의 캐시 버그를 일으킨다. **시간 기반 만료(TTL)**는 "이 값은 60초 동안 유효하고, 그다음엔 버려라"라고 말한다 — 단순하며, 약간 낡은 데이터가 무해할 때(조회수, 홈페이지 피드) 괜찮다. 이벤트 기반 무효화는 "기반 데이터가 바뀌는 순간 캐시된 값을 삭제하라"라고 말한다 — 정확하지만, 그것을 모든 쓰기 경로에서 기억해야 하고, 바로 거기서 사람들이 미끄러진다. 확신이 안 서면 짧은 TTL을 선호하라: 길어야 1분 낡은 값은, 무효화 하나를 잊어서 영원히 낡은 값보다 작은 버그다.