콘텐츠로 이동

🌰 Hazelcast (IMDG)

Hazelcast는 오픈소스 기반의 분산 인메모리 데이터 그리드(IMDG, In-Memory Data Grid)입니다. 데이터를 여러 서버의 메모리에 분산 저장하여 고가용성과 고성능을 제공합니다.


1. 핵심 개념 (Core Concepts)

  • In-Memory Data Grid (IMDG): 디스크가 아닌 메인 메모리에 데이터를 저장하여 매우 빠른 데이터 접근 속도를 제공합니다.
  • 분산 아키텍처: 데이터를 여러 노드(Node)에 파티셔닝하여 저장하며, 클러스터 규모를 확장함에 따라 성능과 저장 용량이 선형적으로 증가합니다.
  • 고가용성 (High Availability): 데이터의 복사본(Backup)을 다른 노드에 보관하여, 특정 노드에 장애가 발생해도 데이터 유실 없이 서비스를 지속할 수 있습니다.

2. 주요 기능 및 데이터 구조

Hazelcast는 Java의 표준 컬렉션 인터페이스를 확장한 분산 데이터 구조를 제공합니다.

  • IMap (Distributed Map): 가장 널리 쓰이는 구조로, Key-Value 데이터를 클러스터 전체에 분산 저장합니다.
  • IQueue, ISet, IList: 분산 환경에서 사용 가능한 큐, 셋, 리스트 구조입니다.
  • Topic (Pub/Sub): 노드 간 메시지를 주고받는 발행/구독 모델을 지원합니다.
  • Distributed Lock: 분산 환경에서 동기화를 위한 락 기능을 제공합니다.

3. 배포 모드 (Topology)

3.1 Embedded 모드

  • 애플리케이션 프로세스 내부에 Hazelcast 노드가 함께 실행됩니다.
  • 장점: 데이터와 애플리케이션이 같은 메모리 공간에 있어 접근 속도가 가장 빠릅니다.
  • 단점: 애플리케이션의 생명주기와 Hazelcast 클러스터가 결합되어 관리가 까다로울 수 있습니다.

3.2 Client-Server 모드

  • Hazelcast 클러스터를 별도로 구성하고, 애플리케이션은 클라이언트를 통해 접속합니다.
  • 장점: 클러스터와 애플리케이션을 독립적으로 확장/관리할 수 있습니다. (운영 환경에서 권장)
  • 단점: 네트워크를 통한 데이터 접근이 발생하여 Embedded 모드보다는 약간의 지연 시간이 발생합니다.

4. 활용 사례

  • 분산 캐싱: 데이터베이스 부하를 줄이기 위한 고성능 캐시 레이어.
  • 세션 클러스터링: 여러 웹 서버 간에 사용자 세션 상태를 공유.
  • 마이크로서비스 간 상태 공유: 서비스 인스턴스 간 공통 데이터 관리.
  • 실시간 스트림 처리: Hazelcast Jet 엔진을 이용한 실시간 데이터 분석.

참고: Hazelcast는 Redis와 자주 비교되지만, Java 환경에서의 깊은 통합과 분산 락, 분산 컬렉션 제공 측면에서 강점이 있습니다.