Hazelcast 시작하기 -1-

Overview

Hazelcast는 분산 환경에서 데이터 공유를 위한 ‘In Memory Data Grid’ (이하 IMDG) 오픈 소스 솔루션이다. 그동안 비슷한 류의 data grid 소스들이 존재했지만(e.g, Terracotta, Coherence, etc), Hazelcast는 좀 더 단순하게 자신을 소개하고 있다.

The Leading Open Source In-Memory Data Grid. HazelCast is a clustering and high scalable data distribution platform for Java.

  • http://www.hazelcast.com -

Hazelcast는 한창 trend인 vert.x 및 Atlassian, Apache Camel 등에 사용되고 있을 정도로 안정성과 경량화된 컨테이너로 인정받고 있으며, 위에서 보듯이 JVM 환경에서 동작한다. Java로 제공되는 단순한 API들은 learning-curve를 줄여주고 어플리케이션으로의 통합을 쉽게 한다. 기능상으로 보면 오픈 소스 캐시 솔루션인 EhCache와 그 역할이 비슷해 보이는데, 실제로 EhCache의 BigMemory와 Hazelcast의 Direct Memory처럼 native memory allocation 기능을 포함하여 비슷한 기능들을 다수 제공하고 있다.

Features

Hazelcast의 특징을 요약하면 다음과 같다.

Feature Description
Distributed Data Structure Queue, Set, List, Map, MultiMap, etc…
Distributed Executor Service 간단한 분산 스케줄러로 사용할만 하다.
Transaction Commit/Rollback을 지원하므로 좀 더 정합한 연산을 보장한다.
Partitioning 분산 노드로 데이터 분할 저장이 가능하다. (* Default)
Dynamic Clustering 동적인 노드 확장/축소가 가능하며, 100개 이상의 큰 노드 그룹을 지원한다.
Index and Query 데이터 색인 및 간단한 질의문(SQL like)을 제공한다.
Message Queue DistributedTopic의 경우 초당 10만 건 이상의 메세지 처리가 가능하다.
Distributed Lock 분산 환경에서 하나의 동기화된 Lock을 공유할 수 있다. 좀 더 정교한 연산 제어가 가능하다.
Cache Supported 캐시의 특징인 Eviction, Expiration 등의 속성을 지원하며, Hibernate 2nd Level 캐시로 사용이 가능하다.
Integration Spring Framework 및 JCA(Java EE Connector Architecture)를 통한 J2EE Container와의 손쉬운 통합을 지원한다.
Persistency 전체 혹은 일부 데이터를 직렬화를 통해 영구적인 저장소(e.g. File, DBMS, etc…)로 저장할 수 있다. 또한 JVM의 Heap 메모리가 아닌, Off-Heap 메모리(Direct Buffer) 할당이 가능하므로, big memory 환경에서의 Full GC delay에 대비할 수 있다. 동기/비동기(sync/async) 쓰기를 지원한다.
Distributed Event 데이터 연산에 대한 분산 이벤트가 제공되므로, 분산 환경에서 다양한 이벤트 핸들링이 가능하다.

특징만으로 보자면 일반적인 Cache + NoSQL 성향을 보인다. 클러스터링 노드를 구성하기가 쉬워 다른 Open Source들의 데이터 분산/공유, Web Session Clustering/Replication 등의 용도로 많이 사용되고 있다.

이전에 많은 프로젝트에서 도입했던 EhCache보다도 사용하기가 쉽고, 위에는 언급하지 않았으나 자체 설정으로 AWS를 지원하는 것도 특징 중 하나이다.

License

Apache License 2.0을 준수한다. Off-Heap Memory, WAN, Monitoring 등의 몇가지 기능이 빠져있는 Community Edition과 상용 버전인 Enterprise Edition 두 버전이 제공된다.

(기능 비교표: http://hazelcast.com/products/hazelcast-enterprise)

Benchmark

Independent Benchmark: Hazelcast Performance vs MongoDB, Cassandra, Terracotta and Oracle Coherence (

http://blog.hazelcast.com/2013/11/14/independent-benchmark-hazelcast-performance-vs-mongodb-cassandra-terracotta-and-oracle-coherence)

Ps. 다음 포스팅에서는 간략한 distributed environment에서 cluster replication을 hazelcast를 통해 구성하는 예를 들겠다.

Comments