반응형

backend-performance 2

4편. Cache 동시성 문제 - Cache Stampede와 sync 옵션의 진실

이 글은 Spring Framework 공식 문서(Cache Abstraction)를 기반으로 캐시 환경에서 가장 자주 발생하는 동시성 문제와 @Cacheable(sync = true) 옵션의 실제 의미를 정리합니다.들어가며캐시를 도입하면 성능이 좋아질 것이라 기대합니다. 하지만 트래픽이 몰리는 순간, 캐시는 오히려 장애의 시작점이 되기도 합니다.캐시가 비어 있는 상태에서 동시에 수십 개의 요청이 몰림모든 요청이 DB를 동시에 때림캐시는 있는데 DB 부하가 더 커짐이 현상을 일반적으로 Cache Stampede라고 부릅니다.1. Cache Stampede란 무엇인가Cache Stampede는 다음 조건이 동시에 만족될 때 발생합니다.캐시 미스 상태동시에 여러 스레드가 동일한 키를 조회캐시를 채우는 비용이..

1편. Spring Cache Abstraction - 캐시는 왜 ‘추상화’되었을까?

이 글은 Spring Framework 공식 문서(Cache Abstraction)를 기반으로 “왜 Spring은 Cache를 추상화했는가”를 설계 관점에서 정리합니다.들어가며캐시는 대부분의 서버 애플리케이션에서 성능 최적화의 마지막 카드처럼 사용됩니다. 하지만 Spring 공식 문서를 읽다 보면, 캐시는 단순한 성능 옵션이 아니라 애플리케이션 설계의 일부로 다뤄집니다.Spring은 왜 Redis, EhCache, Caffeine 같은 구체적인 기술 대신 Cache Abstraction이라는 계층을 만들었을까요?이 질문에 대한 답을 이해하지 못하면, Spring Cache는 곧 이렇게 사용됩니다.“조회 느리니까 @Cacheable 붙이자”“Redis 있으니까 그냥 캐시 쓰는 거지”이 글에서는 공식 문서가..

반응형