콘텐츠 분산

해결하고 싶은 문제

모든 콘텐츠 요청이 스토리지에 집중됨에 따라 스토리지의 성능이 저하된다. 더 큰 스토리지는 근본적인 해답이 못 된다. 가용성, 성능, 경제성을 동시에 보장할 수 있는 솔루션이 필요하다.

솔루션/패턴 설명

캐시를 2계층으로 구성한다.

../../_images/dgm010.png

구분

Parent Layer

Child Layer

캐싱대상

COLD 콘텐츠

HOT 콘텐츠

역할

콘텐츠 분산저장, 스토리지 부하 절감

콘텐츠 분산

증설시점

원본 콘텐츠 증가시점

트래픽 증가시점

구현

  • sessionbalanceModehash 로 설정한다.

    # functions.network.backEnd.session
    
    "balanceMode": "hash"
    
  • 추가 함수체인이나 쿼리스트링이 붙는다면 콘텐츠가 HIT되도록 hash 패턴을 구성한다.

장점/효과

  • 스토리지 장애가 발생하여도 캐싱된 콘텐츠는 중단없이 서비스가 가능하다.

  • 콘텐츠 용량/개수가 급증하여도 캐시를 Scale-out하여 손쉽게 대응할 수 있다.

  • 별도의 관리 시스템이 불필요하다.

주의점

블럭캐싱과 데이터 무결성 를 참고한다.

기타 - Sibling 분산

API처럼 크기가 작거나 예측할 수 있는 수의 이미지 서비스라면 레이어 분리 없이 Sibling 분산으로 처리가 가능하다.

../../_images/dgm026.png

다대다(n:n) 구성으로 서로 동등하게 콘텐츠를 분산하여 저장한다.

  • RED 가 처리해야할 요청이 YELLOW 로 유입되었다. YELLOWRED 로 요청을 위임한다.

  • GREEN 이 처리해야할 요청이 BLUE 로 유입되었다. 이전에 동일 요청이 BLUE 에 발생하였고 캐싱되어 있다. BLUE 가 즉시 응답한다.

  • PURPLE 이 처리해야할 요청이 PURPLE 로 유입되었다. 즉시 처리된다.