FIFO(First In First Out)
뉴스 플랫폼에는 하루에도 수만건의 기사가 등록된다. 그러나 파레토의 법칙(80/20 rule)를 참고하여 상위 20% 기사에 80%의 트래픽이 집중된다고 가정할 수 있다. 아무리 실시간성이 중요한 기사라고 해도, 대개 몇 시간 정도의 시간차는 화제성이 있는 경우 문제되지 않는다. FIFO에 따르면 1시간 전에 발생한 전국적인 뉴스가 1초 전에 발생한 지역적인 뉴스에 밀려 캐시에서 삭제되게 된다. 따라서 뉴스 사이트의 캐시로는 적절하지 않다.
LFU(Least Frequently Used)
LFU는 오래된 인기 기사가 캐시에 남을 가능성이 크다. 최신 기사가 아니더라도 사용 횟수가 높으면 캐시에 남기 때문이다. 따라서 뉴스 사이트에는 적합하지 않다.
LRU(Least Recently Used)
LRU는 최근에 사용된 기사라면 앞으로 또 사용될 가능성이 높다고 판단하는 알고리즘이다. 기사는 실시간성이 중요하기 때문에 최근에 눌러본 기사를 가장 많이 눌러보게 되는 성격이 있기 때문에 LFU보다 뉴스 사이트에 더 잘 맞는 알고리즘이다.
Windowed-LFU(Least Frequently Used)
LRU보다도 뉴스 사이트에 더 나은 알고리즘이 있다면 Windowed-LFU라고 할 수 있다. Windowed-LFU는 최근 일정 시간 동안의 사용 빈도를 기준으로 한다. 최근에 사용빈도수가 높았다면 마지막으로 조회한 시간이 조금 지났더라도 캐시에 보존된다. 최근 급상승 기사를 조금 더 오래 보존할 수 있기 때문에, 화제성이 있다면 몇 시간 정도의 시간차도 용인되는 뉴스의 특성상 가장 적절하다고 보인다.
'시스템 디자인' 카테고리의 다른 글
SNS 피드 시스템 설계하기 (1) | 2025.03.14 |
---|---|
캐시 적중률(Cache hit ratio)과 캐시 적중률 높이는 법 (1) | 2025.02.28 |
시스템 디자인을 위한 "Back-of-the-envelope calculation" (0) | 2025.02.26 |
개발자라면 외워야 하는 지연 시간 14가지 (0) | 2025.02.24 |
넷플릭스가 여러 데이터센터에 걸쳐 데이터를 다중화 하는 방법 (0) | 2025.02.20 |