고정부하

해결하고 싶은 문제

순간적으로 접속자가 폭증할 경우 원본 장애가 빈번하다. 랭킹, 검색, 핫딜, 항공권 등 특정 시간에 오픈되는 서비스에 이런 경우가 많다.

솔루션/패턴 설명

순간적으로 발생한 동일한 요청에 대해 최초의 결과를 공유한다. TTL(Time To Live)을 0으로 설정하면 원본서버의 1트랜잭션 시간동안(1ms 내외)만 결과는 유효하다.

../../_images/dgm017.png

M2 는 최초의 요청만 원본서버로 보낸다. 응답은 대기 중인 모든 클라이언트에게 공유됨과 동시에 만료된다. (=유효하지 않다.) 이 과정의 반복을 통해 접속자 수와 무관하게 원본부하를 고정시킨다.

구현

  • cache 는 기본으로 활성화된다.

  • 콘텐츠에 알맞은 적절한 ttl 을 설정한다. 0초도 가능하다.

장점/효과

  • 백엔드 부하를 고정/예측할 수 있어 서비스 안정성이 높아진다.

주의점

  • 읽기에는 적합하나 쓰기에는 사용할 수 없다.

  • 휘발성이 높은 콘텐츠에 대해서는 Memory-Only 모드 를 권장한다.

기타

로그인한 개인 페이지라도 공유할 수 있는 영역에 대해서는 AJAX 로 분리하는 것이 효과적이다.