티스토리 뷰

캐시(Cache)란?

캐시는 데이터 혹은 값의 복사본을 저장해놓는 장소를 말한다. 캐싱(Caching)은 캐시에 계산된 값이나 처리된 결과를 저장해놓는 행위를 말한다. 미리 처리 된 값을 캐시에 저장되어 있는 값을 가져오면 재처리에서의 리소스를 절약할 수 있기 때문에 처리속도에서 큰 이점을 가질 수 있다. 보통 어플리케이션에서는 처리할 때 리소스가 높은 DBMS의 결과값 혹은 외부 API 호출의 응답값 등 을 캐싱해두고 사용한다. 이를 적용해서 반응속도가 중요한 웹어플리케이션에서의 레이턴시(latency) 이점을 얻을 수 있다.

캐시 적용이 적합한 데이터
- 호출 빈도가 잦은 데이터
- 응답 결과가 동일하거나 자주 변경되지 않는 데이터
- 호출 혹은 계산 시 많은 비용이 드는 데이터

 

로컬 캐시란?

어플리케이션 서버의 메모리에 저장되어있는 캐시를 말한다. scale-out 된 분산환경에서는 어플리케이션 서버가 각각 다른 캐시값을 가질 수 있다. 이는 각 서버마다 데이터의 일관성이 달라질 수 있다. 이러한 문제를 해결하기 위해 Redis나 Memcached 등 글로벌 캐시 저장소를 사용한다.

아래 그림은 각 어플리케이션 서버가 Database에 접근하여 데이터를 조회하고 로컬캐시를 활용한 예시이다.

 

 

글로벌 캐시란?

로컬캐시의 데이터 일관성을 보완하기 위해 글로벌 캐시를 사용하지만 어플리케이션 서버와 글로벌캐시 서버간의 네트워크 I/O 비용으로 로컬캐시보다 상대적으로 느린 속도를 가진다. 또한 글로벌 캐시로 사용하는 저장소가 단일저장소라고 하면 단일장애지점(Single Point of Failure / SPOF)으로 이어져 전체 장애로 이어질 수 있는 위험성이 있다.

아래 그림은 각 어플리케이션 서버가 Database에 접근하여 데이터를 조회하고 그 결과를 글로벌캐시(Redis)에 저장한 예시이다.

 

 

 

대용량 트래픽이 발생하는 웹 어플리케이션에서는 고가용성과 낮은 레이턴시를 요구하기 때문에 적절한 아키텍처 구성이 필요하다. 로컬캐시와 다음 포스팅에서는 분산환경에서 로컬캐시의 속도의 이점을 가지면서 분산 된 서버 간의 데이터 동기화를 할 수 있게 아키텍처를 구성해본다.

'Database > Database' 카테고리의 다른 글

[MySQL] MySQL 기본 함수  (0) 2016.04.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함
Total
Today
Yesterday