규턴의 개발블로그
article thumbnail
Published 2022. 8. 17. 11:21
[IMDG] Redis vs Hazelcast data/imdg

IMDG?

IMDG란 In-momory-data-grid로 아래 사진과 같은 형태의 아키텍쳐 입니다.

다음 그림과 같이 여러개의 메모리를 grid 형태로 보관하며, 메모리를 데이터베이스와 같은 형식으로 사용하는것입니다. 당연히 memory를 데이터 베이스로 사용한다면 더 빠르다는 장점이 있습니다.

IMDG architecture

 

또한 예전에는 memory의 크기가 작다는 한계가 있었지만, 기술적인 발전으로 memory의 크기가 상대적으로 증가하고 위와 같은 형태의  여러개의 memory를 하나의 memory처럼 사용하여 빠른속도로 데이터를 read/write를 할 수 있습니다.

 

IMDG 사용 예제

 

 

IMDG vs Cache System

처음 IMDG를 공부하면서 캐시 시스템과 어떤게 다른지 헷갈렸는데 아래의 정리된 표를 가져와봤습니다.

 

  Cache System IMDG
읽기 캐시 안에 데이터가 있다면 데이터 베이스에서 읽어오지 않는다.
캐시 안에 데이터가 없을 때는 데이터베이스에서 읽어온다.
언제나 IMDG에서만 읽어온다. 항상 메인 메모리에서 읽어오기 때문에 빠르다.
쓰기 영구 저장소에 쓰기 때문에 캐시 시스템 적용과 쓰기 성능 향상은 관계 없다. 영구 저장소에 데이터를 동기화하도록 구성하더라도, 제품에 따라 비동기 쓰기를 지원하는 제품이 있다. 비동기 쓰기를 지원하는 경우에는 매우 높은 수준의 쓰기 성능을 기대할 수 있다.

 

cahce system architecture

Redis VS Hazelcast

간단하게 imdg개념에 대해서 알아보았습니다. 대표적인 IMDG 솔루션이 redis와 hazelcast가 있는것으로 알고있는데, 어떤 차이가 있는지 알아보았습니다.

  Redis Hazelcast
서버운영체제 linux,windows.. JVM
지원언어 c, c#, c++, java, js, haskell, pascal, D.. 등 대부분언어 .net, c++, go, java, js, python
데이터 구조 map, list, set, queue등 제공
deque, sortedset, priorityqueue, tansferqueue 등 더많이 제공  
cluster 구성 master/slave구조 모두 동등한 노드로 구성
장애조치 슬레이브 노드 마스터 노드로 승격 hazelcast내 자동 장애 복구
blue/green deploy 전략
SQL 지원 enterprise에서만 지원 O
데이터 Persistence RDB, AOF 방식으로 저장 partion$sharding 구성의 백업
java api, management-center 등을 사용하여 백업트리거 설정
API 및 기타 접근 방법 propritetary protocol jcahce, jpa, restful http API
Scale out 어느정도의 고가용성 보장
(redis cluster는 추후에 만들어짐)
고가용성 보장
(처음부터 고가용성 cluster를 위해 만들어짐)
thread single nuliti
reference 다수 존재  부족
관리자 UI tool O O
license opensource opensource

 

 

제가 생각했을때 가장 큰 차이점은 redis는 처음부터 imdg 사상을 가지고 생겨난것이 아닙니다. 실제로 imdg를 구성할 수 있게 해주는 redis cluster는 추후에 만들어졌으니까요

반대로 hazelcast는 imdg사상을 가지고 만들어 졌기에 imdg를 구성하는데 적합하다고 볼 수 있습니다.

하지만 아직 국내에는 hazelcast를 사용하는곳은 적기에 reference가 부족하다고 할 수 있습니다. 저라면 아직까지는 redis를 사용할 것 같긴합니다.... ㅎㅎ

 

 

 

 

 

 

 

참고

https://d2.naver.com/helloworld/106824

https://hazelcast.com/

https://redis.io/docs/reference/

profile

규턴의 개발블로그

@규턴이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!