ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 캐시(Cache) 무엇일까? - 1
    캐시 2025. 3. 10. 23:09

    말하기에 앞서 우리는 흔히 사용하는 3-Tire 아키텍처 또는 모놀리식 구조에서

    트래픽이 증가하면 가장 먼저 데이터베이스에 부하가 집중된다

    3-Tire 아키텍처

    이때 DB의 부하를 줄이고 응답속도를 높이기 위해 서버와 데이터베이스 사이에 캐시(Cache)를 도입한다


    캐시란?

     

    캐시(Cache)는 자주 접근하는 데이터나 계산 결과를 메모리에 미리 저장해 두고

    필요할 때마다 빠르게 가져다 쓰는 임시 저장소이다.

     

    좀더 쉽게 말하면 데이터나 값을 미리 복사해 놓는 임시 저장소 

     

    디스크 대신 메모리를 사용하기 때문에 읽고 쓰는 속도가 빠르다는 장점이 있다

     

    사용 예시로는

    다이나믹 프로그래밍(DP) 에서 사용하는 메모이제이션 기법도 일종의 캐시 개념이고 

    JPA의 영속성 컨텍스트의 1차 캐시도 같은 거라고 보면 된다 

     


    캐시를 사용하는 이유

     

    1. DB 부하감소

    • 동일하거나 유사한 요청이 반복될 때마다 DB에 접근하지 않고 한 번 캐시에 적재된 데이터를 활용하여 DB의 부하를 크게 줄일 수 있다

    2. 응답시간 감축

    • 네트워크 요청 없이 로컬 또는 캐시 서버의 메모리에서 데이터를 바로 가져오므로 응답시간이 단축 된다

    캐시의 장단점

     

    장점

     

    1. 빠른 데이터 접근

    • 메모리에 저장된 데이터에 접근해서 속도가 빠름

    2. 시스템 확장성

    • DB 접근 횟수를 줄여 트래픽이 증가해도 서버가 안정적으로 동작할 수 있음

    3. 비용절감

    • 데이터베이스 사용량을 줄여 DB 서버 증가 또는 Cloud DB 비용 증가를 어느 정도 줄일 수 있다

     

    단점

     

    1. 데이터 동기화 문제

    • 원본 DB와 캐시 사이의 데이터가 불일치 할 위험이 있다 

    2. 메모리 비용 증가

    • 캐시는 메모리를 활용해서 서버의 메모리 자원이 많이 필요함

    3. 캐시 적중률관리 필요 

    • 만약 캐시에 저장된 데이터가 실제로 자주 사용되지 않는다면 캐시의 이점이 작아짐 
    • 적절하게 전략을 세워 캐시 적중률을 높이는 설계가 필요 

    캐시 종류

     

    1. 로컬 캐시(Local Cache)

    • 서버 메모리에 데이터를 저장하는 방식
    • 장점 : 접근 속도가 빠르고 구조가 단순하다
    • 단점 : 서버 다중화를 할때 캐시가 분산되지 않아서 서버마다 데이터가 달라질 수 있다 

    ex) 자바에서는 ConcurrentHashMap 또는 Spring 프레임워크의 @Cacheable 

     

     

    2. 분산 캐시 

    • 캐시 서버를 따로 두고 여러 애플리케이션 서버가 공동으로 캐시 데이터를 사용하는 방식
    • 장점 : 서버 다중화를 하여도 캐시 데이터가 일관성 있게 공유된다 
    • 단점 : 네트워크를 통해 캐시에 접근해야 해서 로컬 캐시보다 접근 속도가 다소 느릴 수 있음, 따로 서버를 두는 거라 비용 증가가 있다

    ex) Redis, Memcached

     

     

    3. CDN(Content Delivery Network) 캐시

     

    • 정적 파일을 전 세계에 분산된 CDN 서버에 저장하여 사용자와 지리적으로 가까운 서버에서 빠르게 데이터를 전달한다
    • 장점 : 글로벌 트래픽 분산, 빠른응답 
    • 단점 : 동적으로 자주 변하는 데이터에는 적합하지 않다 

    ex) CloudFront(AWS) 등


    지역성(Locality)

     

    캐시를 공부한다면 꼭 들어보는 지역성이란 개념이 있다 

     

    지역성이란 프로그램이 메모리나 데이터를 참조하는 방식이 특정 패턴을 가진다는 이론이다 

    크게 "시간적 지역성", "공간적 지역성" 이렇게 2개가 있다

     

    1. 시간적 지역성 (Temporal Locality)

    • 최근에 사용된 데이터는 가까운 미래 에도 다시 사용될 확률이 높다
    • 다시 말해 한 번 읽어 온 데이터를 일정 기간 동안 캐시에 보관함으로써 재사용 효율을 높일 수 있다

     

    2. 공간적 지역성 (Spatial Locality)

    • 어떤 위치의 데이터가 참조되면 그 근처에 있는 데이터도 함께 참조될 가능성이 높다
    • DB 에서 보면 특정 데이터를 참조하면 인덱스나 인접한 데이터도 참조될 가능성이 있다는 말이다
    • 그래서 캐시에 근처 데이터도 묶어서 캐싱하거나 한번에 가져오는 방식을 고려할 수 있다

     

     

     

    그 다음글 에서는 캐시 전략 종류 와 캐시의한계 점에 대해서 공부할 예정이다.

    '캐시' 카테고리의 다른 글

    캐시 전략은 무엇일까? - 2  (0) 2025.03.13
Designed by Tistory.