본문 바로가기

Spring Boot/Cache

캐시의 기본 개념과 필요성 : 캐시의 정의와 목적

API를 통해 대용량 트래픽을 관리해봤다보니 캐싱을 하고 싶어졌음

Redis, Memcached, Guava Cache 등등..

 

 - Cache의 기본 개념

 - 대용량 트래픽 환경에서 캐시가 왜 중요한가?

 - 캐시가 시스템 성능에 사용자 경험에 미치는 영향

 - 캐시의 주요 목적(빠른 검색, 부하 감소, 지연 최소화)

 - 캐시의 필요성 사고


 

1. 캐시

Cache, 자주 접근하는 데이터를 빠르게 가져오기 위해 임시로 저장해두는 저장소

자주 쓰는 정보를 미리 꺼내두는 메모장같은 느낌으로 보면 된다

 

예를 들어 우리가 매일 사용하는 앱의 홈 화면에서,

데이터를 매번 DB에서 불러온다면 사용자 수가 많아질수록 DB 부하가 증가하게 된다.

이럴 때 한번 불러온 데이터를 일정 시간 동안 캐시에 저장해두면, 다음 요청부터는 캐시에서 바로 가져와 빠르게 응답할 수 있다

 


2. 캐시의 필요성 : 대용량 트래픽 환경에서의 역할

대용량 트래픽 환경이란, 짧은 시간에 수많은 사용자가 동시에 요청을 보내는 상황을 말한다.

이 경우 모든 요청이 DB를 향해버리면 시스템은 과부하에 걸리게 된다.

 

이러한 문제를 해결하기 위한 중간 계층(Cache Layer)를 두면 DB 부하를 줄어들게 하는 효과가 있다.

요청에 대해 캐시를 검증하고 DB에 요청하던, 캐시에서 응답하던..

 

이러한 구조를 통해 DB로 향하는 요청량이 크게 줄어들고, 시스템 전체가 안정적으로 동작할 수 있다.

DB 요청량이 줄어들테니 서버 부하도 줄어들겠구나?

 

구분 캐시 미사용 캐시 사용
요청 수 10,000건 10,000건
DB접근 10,000건 1,000건 (9,000회는 캐시에서 처리함)
평균 응답속도 1.2초 0.2초 (!!)
서버 부하율 90% 이상 30% 이하

 

 

* 캐시는 응답 속도를 높이고, DB 부하를 줄이며, 트래픽이 폭주해도 안정적인 서비스 운영을 가능케 함

 


3. 캐시의 주요 목적

자주 접근하는 데이터의 빠른 검색 / 원본 데이터 소스의 부하 감소 / 네트워크 지연 시간 최소화

 

1) 자주 접근하는 데이터의 빠른 검색

 - 사용자가 자주 요청하는 데이터를 미리 저장해두어, 재요청시 빠르게 제공할 수 있음

 - 인기 게시글 목록, 사용자 프로필, 상품 상세 정보 등등..

 - DB를 거치지 않기 때문에 네트워크 왕복 시간과 쿼리 실행 시간을 절약할 수 있음

 

흐름 예시

사용자 요청 - > 캐시 확인 - > 캐시에 데이터가 존재한다면? - > 즉시 응답함

 

 

2) 원본 데이터 소스의 부하 감소

캐시가 없다면, 모든 요청이 DB로 전달되어 CPU, I/O 자원을 빠르게 소모한다.

캐시를 사용하면 동일한 데이터를 여러번 요청하더라도 DB는 한번만 조회하면 된다

따라서, DB 연결 수가 급격히 증가하는 것을 방지할 수 있다

캐시 로직 구조

 

* 캐시를 활용하면 DB는 더 중요한 연산에 집중할 수 있음

 

 

3) 네트워크 지연 시간 최소화

캐시는 사용자와 가까운 위치(CDN, 브라우저, 서버 메모리)에 데이터를 저장하여 지연을 최소화함(latency)

 

* CDN(콘텐츠 전송 네트워크, Content Delivery Network) : 전 세계에 분산된 서버를 이용해 웹 콘텐츠(이미지, 영상, 파일 등)를 사용자에게 가장 가까운 서버에서 전송하여 웹사이트 로딩 속도를 향상시키고, 안정성과 보안성을 강화하는 기술. 여러 지역 서버에 복제해 두고 사용자 요청 시 가까운 서버에서 빠르게 전달하는 방식

 

물리적으로 가까운 곳에서 데이터를 꺼내기 때문에 응답속도가 비약적으로 향상됨

구분 데이터 위치 평균 응답 시간
DB 직접 조회 원격 서버 1.0초
캐시 조회 근처 메모리 조회 0.1초

 

 


4. 예시 - 웹 서비스에서의 캐시

온라인 쇼핑몰을 운영한다고 할 때 사용자들이 특정 상품 페이지를 자주 조회한다면,

 - 첫번째 사용자가 페이지를 열 때 DB에서 데이터를 조회함

 - 그 결과를 캐시에 저장함

 - 이후 사용자들은 캐시에서 즉시 데이터를 불러올 수 있음

실무에서 Read Through 패턴이라고 부른다고 함

 

* 캐시는 필요한 곳에만 선택적으로 적용해야 한다고 함

 - 모든 데이터를 캐시에 적용하면 오히려 비효율적일 수 있다

* 변경이 자주 일어나는 데이터는 캐시보다 DB 직접조회가 나을 수 있다

* 캐시 저장소로는 Redis, Memcached, Guava Cache 등이 자주 사용된다고 함

* CDN은 정적 파일(이미지, CSS, JS 등)의 캐시를 담당하는 대표적인 예라고 함

 


정리

구분 설명
캐시(Cache) 자주 사용하는 데이터를 임시로 저장해 빠르게 제공하는 저장소
필요성 대규모 트래픽 상황에서 서버 부하를 줄이고, 응답속도를 향상시킴
주요 목적 빠른 검색, 부하 감소, 지연 시간 최소화
적용 예시 인기 게시글 목록, 상품 상세 페이지, 정적 리소스 등등..
실무 효과 서버 안정성 확보, 사용자 만족도 향상

 


캐시는 단순 '속도 향상 도구'가 아닌, 대용량 트래픽 환경에서 시스템의 안정성을 보장하는 핵심 기술이다

자주 접근하는 데이터를 빠르게 가져오고, 불필요한 DB 요청을 줄이며, 네트워크 지연을 최소화한다