민스씨의 일취일장

Cache | 캐시 전략과 캐시 소프트웨어 종류에 대한 정리 본문

Database

Cache | 캐시 전략과 캐시 소프트웨어 종류에 대한 정리

읻민스 2024. 9. 3. 17:09
반응형

캐시 전략과 캐시 소프트웨어 종류에 대한 정리 글이다.

Cache

rTcl : Cache 썸네일 이미지이다.
rTcl : Cache

캐시를 도입하기에 앞서 캐시에 대해 알아보려고 한다.

캐시란?

캐시란 데이터 임시 저장소이다. 주로 자주 사용하는 데이터 또는 이미 사용한 데이터를 저장해 둬, 다시 데이터를 사용하려 할 때 데이터베이스까지 가지 않고 바로 꺼내쓸 수 있도록 한다. 이런 사용방식으로 성능을 향상시키고, 네트워크의 트래픽을 감소시킬 수 있다.

전략에 따른 캐시

캐시라는 임시 저장소를 어떤 구성, 즉 어떤 전략으로 사용하는지에 따라서 크게 3가지로 구분해 생각해 볼 수 있다.

1) 캐시 Cache

지금 위에서 설명한 말그대로의 캐시이다. 클라이언트와 서버 사이 또는 서버와 데이터베이스 사이에 위치시켜 서버에 요청을 보내기 전 또는 데이터베이스로 Query를 보내기 전에 임시저장해 놓은 데이터가 있는지 확인해 볼 수 있도록 하는 캐시이다.

2) 분산 캐시 Distributed Cache

캐시에서 조금 더 발전한 형태로 분산캐시가 있다. 캐시를 여러개의 노드로 위치 시켜, 하나의 캐시에 장애가 발생하거나 트래픽 부하가 발생해도 다른 노드의 캐시가 처리할 수 있도록 캐시를 분산시켜 놓은 형태이다. 각 노드는 독립적으로 존재하기 때문에 각 캐시의 장애를 격리시키는 효과도 있고, 독립적으로 확장 축소 할 수 있어 시스템 전체 크기를 유동적으로 관리하기 용이한 특징이 있다.

3) 클러스터드 캐시 Clustered Cache

클러스터드 캐시는 분산 캐시와 물리적 구성은 다소 비슷한데, 각 노드들이 논리적으로 연결돼 있다는 특징이 있다. 그래서 Clustered라고 불린다. 클러스터드 캐시를 이해하는 데 어려웠던 점은 두 가지 특징을 모두 가지고 있었기 때문이다.

1. 여러 노드에 걸쳐 데이터가 분산 분포
2. 여러 노드에 걸쳐 동일한 데이터가 분포

 

1번의 경우 여러 노드에 걸쳐서 마치 하나의 캐시 처럼 분산돼 데이터가 저장돼 있는 것을 말한다. 해시값을 이용해 해당 값에 해당하는 노드에 데이터가 저장돼 있는 방식이다. 이에 반해 2번의 경우는 같은 캐시데이터가 다른 노드에도 존재하는 것을 말한다. 즉 서버를 이중, 삼중화 한 것과 같은 것이다. 어떤 캐시에 도달하더라도 같은 데이터를 확인할 수 있다. 비슷하지만 엄연히 다른 개념이라 가볍게 알아보고 지나가면 헷갈리기 쉽다.

클러스터드 캐시는 위의 2가지 기능을 모두 가져도 되고, 둘 중 하나만 가져도 된다. 즉, 필요에 따라서 캐시를 분산시켜 사용하거나, 캐시를 이중, 삼중화 해서 사용할 수 있다는 것이다.

캐시 소프트웨어 종류

위의 캐시를 구현하기 위해 사용할 수 있는 다양한 선택지가 있다. 각 소프트웨어의 특징을 알아보고 필요에 맞게 사용하면 된다.

캐시하면 무조건 Redis가 아니다.

1) Redis

레디스 로고 모습이다.
Redis Logo [출저 : Wikipedia.org]

하지만 가장 유명한 Redis 먼저 살펴볼 것이다. 레디스는 오픈소스 인메로리 데이터 구조로 캐시 뿐만 아니라, 키-값 데이터베이스, 메시지 브로커, Pub/Sub 등의 기능을 제공한다. 또 다양한 데이터 구조(문자열, 해시, 리스트, 셋 등)을 지원한다. 따라서 여러가지 상황에서 사용수 있다. 기능이 많은 만큼, 오로지 캐시 하나만을 위해서 사용한다면 다소 무거울 수 있다.

2) Memchaced

멤케시드 로고이다.
Memcached Logo [출처 : https://fornex.com/en/help/oca-memcached/]

단순한 키-값 저장소로 데이터베이스 부하를 줄이이 줄이기 위해서 사용된다. 매우 빠르고, 데이터 휘발성의 특징을 갖는 경량화 캐시 솔루션이다. 서버 리소스가 적거나 가벼운 서비스에 적용하기에 좋은 도구이다.

3) EHCACHE

EH캐시 로고이다.
EHCACHE Logo [출처 : https://www.ehcache.org/]

Ehache는 Java 애플리케이션을 위한 캐시 라이브러로, Hibernate와 같은 ORM 프레임워크와 함께 사용할 수 있다. 다양한 캐시 전략(복제, 분산 캐싱)등을 지원하고 메모리 내 캐시와 디스크 기반 캐시를 모두 지원해 캐싱의 유연성이 높다.

4) Apache Ignite

아파치 ignite 로고이다.
Apache Ignite Logo [출처 : https://ignite.apache.org/]

Apache Ignite는 분산 데이터베이스, 캐시, 컴퓨팅 플래폼으로 사용된다. 캐시만을 위해 사용하진 않는다. 대규모 데이터 처리와 실시간 분석 기능이 좋아 스트리밍, 머신러닝 서비스에 고려해볼만한 서비스이다.

728x90
반응형