ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 어떤 캐싱을 도입할까? feat. 로컬캐시, Redis, 웹캐시
    개발/Infra 2023. 1. 7. 18:23

    캐시란?

    • 복잡한 연산이나 시간이 오래 걸리는 연산을 미리 수행한 후, 그 결과 값을 저장하여 필요시 빠르게 가져와 사용할 수 있게 하는 것

    캐시의 종류

    • 로컬캐시
    • Redis
    • DB내부 캐시
    • 웹캐시
    • CDN 등 

    종류별 특징

    • 로컬캐시: 서버의 리소스(Memory, Disk) 내 결과값을 저장한다. (Caffeine cache, EHcache) 
      • 장점
        • 타 서버간 통신비용이 발생하지 않는다.
        • 서버 인스턴스 메모리에 저장하기 때문에 가져오는데 속도가 빠르다.
      • 단점
        • 서버가 여러대로 클러스터링 되어있는 경우, 동기화가 되지 않는다.
        • 캐시 데이터가 커질수록 서버 메모리가 부족해 지며 이에 따라 애플리케이션 성능이 저하 될 수 있다.

     

    • Redis: 데이터 영속성을 지원하는 In-memory 저장소 (스냅샷 기능을 통해 Disk에 캐시데이터를 저장할 수 있기 때문)
      • 장점
        • 서버 복제 지원. Master-slave 구조로 여러대의 복제본을 만들 수 있다.
        • 트랜잭션 지원
        • 여러 데이터 자료형 지원(문자열, 숫자, boolean 등)
      • 단점(?)
        • 싱글스레드로 동작하기 때문에 병목현상이 발생할 수 있다.
        • 로컬캐시에 비해 서버 <-> 레디스 간 통신 비용이 발생한다.

     

    • 웹캐시: 웹 사용자에 의해 빈번히 요청되는 데이터를 웹캐시 서버(Nginx 등)에 보관함으로써 응답한다. 
      • Client - Nginx proxy server - server 구조 일 때, 요청이 nginx 서버에 캐시되어 있다면 실제 요청은 server에 전달되지 않고 Client에게 반환한다.
      • 장점
        • 요청이 실제 서버로 넘어가지 않기 때문에 부하 자체를 줄여줄 수 있다.
      • 단점
        • 별도의 웹캐시용의 서버 구성 필요
        • Client에서 Server로 요청하는 과정에 Proxy 서버가 중간에 끼게 되는 형태인데, 통신 과정이 늘어나니까 당연히 소요시간이 길어질 수 있다.

    '개발 > Infra' 카테고리의 다른 글

    [Kubernetes] Canary 배포 환경 구성  (0) 2022.12.30
Designed by Tistory.