Hwahae Tech Blog

캐시 스탬피드를 대응하는 성능 향상 전략, PER 알고리즘 구현

thumbnail

1. 캐시 스탬프딩 문제의 발생

캐시 스탬프딩은 캐시가 만료되어 새로운 캐시를 생성하는 시간 동안 데이터 요청이 몰리는 문제입니다. 이는 캐시를 사용하는 서비스에서 성능 저하를 일으킬 수 있습니다.

2. PER 알고리즘을 통한 캐시 스탬프딩 대응

PER (Probabilistic Early Refresh) 알고리즘은 캐시 갱신을 위한 확률 방법입니다. 이를 구현하기 위해서는 캐시 대상 데이터뿐만 아니라 캐시 생성 소요 시간을 저장해야 합니다.

3. PER 알고리즘의 구현과 템플릿 메서드 패턴

PER 알고리즘을 구현하기 위해 부모 클래스에는 public 메서드만 있고, 추상 메서드를 protected로 선언하여 자식 클래스에서만 구현하도록 하는 템플릿 메서드 패턴을 사용합니다.

4. PER 알고리즘의 실제 테스트

Python으로 PER 알고리즘을 구현하고, TTL과 캐시 생성 시간의 차이에 따라 캐시 갱신 횟수를 비교하는 실험을 진행하였습니다. TTL과 캐시 생성 시간의 차이가 크지 않는 경우 캐시 갱신 횟수가 많아지는 것을 확인하였습니다.

5. 개선된 코드를 통한 캐시 스탬프딩 해결

더 간단한 방법으로 캐시 스탬프딩 문제를 해결하기 위해 개선된 코드를 소개하였습니다. 이를 통해 캐시 스탬프딩에 자유로워질 수 있습니다.