“Just Add Caching”은 보통 잘못된 답이다.
Source: Dev.to
조기 캐싱의 함정
캐싱은 소프트웨어 엔지니어링에서 가장 오해받기 쉬운 도구 중 하나입니다. 실제 문제를 이해하기도 전에 성능 개선책으로 자주 제안됩니다.
캐싱은 복잡성을 없애는 것이 아니라 옮겨 놓는 것입니다. 갑자기 무효화 규칙, 오래된 읽기, 일관성 트레이드오프, 그리고 부하가 걸렸을 때만 나타나는 엣지 케이스들을 다루게 됩니다. 많은 시스템이 잘못된 데이터를 캐시하거나 너무 일찍 캐시함으로써 전체적으로 느려집니다.
캐싱을 언제 추가해야 할까
캐싱을 추가하기 적절한 시점은 실제로 시간이 어디에 소비되고 있는지를 파악한 뒤입니다. 먼저 측정하세요. 명확한 무효화 규칙이 있는 안정적인 고읽기 데이터를 식별합니다. 시스템을 단순화하는 곳에 캐시를 두고, 불확실성을 추가하는 곳에는 두지 마세요. 많은 경우 더 나은 쿼리, 라운드 트립 감소, 혹은 명확한 데이터 모델이 캐싱 필요성을 완전히 없애줍니다. 복잡성을 줄이는 성능 개선은 복잡성을 늘리는 개선보다 거의 항상 더 좋습니다.
결론
캐싱은 강력하지만, 의도적으로 사용할 때만 효과적입니다.