728x90

    [원문] : https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/

     

    Caching Strategies and How to Choose the Right One

    Compare the pros and cons of various caching strategies to choose the best one for your use case.

    codeahoy.com

     

    -캐싱은 데이터베이스 응답 시간을 줄여주고, 데이터베이스의 부하를 감소시킴.

    -데이터와 데이터 접근 패턴에 따라 올바른 캐싱 전략을 선택하는것이 성능 향상의 핵심.

    예) 많이 쓰고 덜 자주 읽는가 ?

          한번 쓰고 여러번 읽는가?

     

    # Cache-Aside

    - 애플리케이션은 캐시와 데이터베이스와 직접 통신함

    1. 어플리케이션은 먼저 캐시를 확인

    2. 데이터가 캐시에서 발견되면(cache hit) 데이터를 읽고 클라이언트에 반환

    3. 캐시에 데이터가 없으면(cache miss) 어플리케이션은 데이터베이스에 쿼리해서 데이터를 읽고 클라이언트에 반환하고  캐시에 데이터를 저장

     

    [사용예와 장단점]

    범용적으로 사용하며 읽기 작업이 많은 워크로드에 가장 적합. memcached와 redis가 널리 사용됨.

    캐시 오류에 탄력적. 캐시 클러스터가 다운되더라도 시스템은 데이터베이스에 직접 통신하여 계속 작동 함.

    TTL이 만료될때까지 데이터베이스와 일치하지 않는 데이터를 제공할수 있다.

    따라서 데이터 최신성을 보장해야 하는 경우 캐시 항목을 무효화 하거나 적절한 쓰기 전략을 사용한다.

     

    # Read-Through

    - 캐시는 데이터베이스와 인라인으로 배치.

    - cache miss가 발생하면 데이터베이스에서 데이터를 가져오고 캐시에 저장한 후에 어플리케이션에 반환한다.

    [사용예와 장단점]

    read-through 캐시는 동일한 데이터가 여러번 요청될때 읽기가 많은 워크로드에 적합. 예를들어 뉴스기사.

    단점은 데이터가 처음 요청될때 cache miss가 나서 데이터를 캐시에 로드하는 패널티가 있다. 이는 워밍업을 통해 이 문제를 해결함.

     

    # Write-Through

    -데이터를 캐시에 먼저 쓰고 데이터베이스에 쓴다. 캐시는 데이터베이스와 인라인으로 배치.

    [사용예와 장단점]

    데이터가 캐시에 먼저 기록된 다음 데이터베이스에 기록되기 때문에 추가 쓰기 대기 시간이 발생.

    Read-Through 캐시와 함께 사용하면 Read-through 캐시의 모든 이점을 얻을수 있고 데이터의 일관성도 보장되므로 캐시 무효화 기술을 사용하지 않아도 됨.

    DynamoDB Accelerator(DAX)는 Read-Through/Write-Through 캐시의 좋은 예시.

     

    # Write-Around

    - 데이터는 데이터베이스에 직접 기록되고 읽은 데이터만 캐시로 저장.

     

    [사용예와 장단점]

    read-through 캐시와 결합할수 있으며 데이터를 한번 쓰고 덜 자주 읽거나 전혀 읽지 않는 상황에서 우수한 성능을 제공.

    예를 들어 실시간 로그 또는 채팅방 메시지. cache-aside와도 결합될수 있음.

     

    # Write-Back

    -어플리케이션은 즉시 확인하는 캐시에 데이터를 쓰고 약간의 지연 후에 데이터를 다시 데이터베이스에 쓴다. 비하인드 쓰기라고도 함.

    [사용예와 장단점]

    write-back 캐시는 쓰기 성능을 향상시키고 쓰기 작업량이 많은 워크로드에 적합.

    read-through와 결합하면 가장 최근에 업데이트되고 액세스된 데이터를 항상 캐시에서 사용할 수 있는 혼합 워크로드에 적합.

    데이터베이스 오류에 탄력적이며 일부 데이터베이스 다운타임을 허용할 수 있다.

    단, 캐시 오류가 발생하면 데이터가 영구적으로 손실될수 있다.

    대부분의 RDBMS는 기본적으로 내부에서 write-back 캐시를 활성화하고, 쿼리는 메모리에 먼저 쓰고 결국 디스크에 기록된다.

     

    # 요약

    올바르지 않은 캐시전략을 선택하면 추가 대기 시간이 발생하거나 이점을 가져가지 못하게 됨.

     

     

     

    'Architecting' 카테고리의 다른 글

    대규모 시스템 설계 기초 책 정리  (0) 2022.01.05
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기