/
Hazelcast Pub/Sub , REST API

Hazelcast Pub/Sub , REST API

 

1. Hazelcast Pub/Sub vs REST API: 주요 차이점

특징

Hazelcast Pub/Sub

REST API

특징

Hazelcast Pub/Sub

REST API

통신 방식

클러스터 내부 통신 (노드 간 Pub/Sub 메시지 전달)

HTTP 프로토콜 기반의 요청-응답 방식

통신 범위

Hazelcast 클러스터 내 노드 간 통신

네트워크를 통해 서로 다른 서비스(혹은 서버) 간 통신

상태 관리

Hazelcast의 상태 공유 (분산 Map/Replicated Map 등)

무상태(Stateless), 각 요청은 독립적으로 처리됨

지연 시간

로컬 네트워크 기반 통신으로 지연이 적음

네트워크 및 HTTP 요청 처리로 인해 지연이 발생할 수 있음

의존성

Hazelcast 클라이언트 및 클러스터 설정 필요

HTTP 프로토콜과 RESTful 엔드포인트만 필요

메시지 보장

At Least Once 또는 At Most Once 메시지 보장

REST API는 기본적으로 성공 여부를 응답으로 반환

동작 방식

비동기 메시지 전송

주로 동기식 요청-응답 처리

적용 사례

실시간 이벤트 전파, 데이터 동기화

외부 서비스 통신, CRUD 작업


2. Hazelcast Pub/Sub의 특징

  • 클러스터 내부 통신:

    • Hazelcast Pub/Sub은 클러스터 내부에서 메시지를 전달하며, 클러스터 외부로 직접 통신하지 않습니다.

    • REST API와 달리 HTTP 요청/응답 과정을 거치지 않고, Hazelcast의 내부 네트워크를 통해 메시지가 전달됩니다.

  • 비동기 이벤트 전달:

    • Hazelcast Pub/Sub은 비동기적으로 작동하므로, 발행자(Publisher)가 메시지를 발행하면 구독자(Subscriber)가 이를 비동기로 수신합니다.

    • 반면 REST API는 주로 요청-응답 형태의 동기적 통신 방식입니다.

  • 메시지 보장:

    • Reliable Topic을 사용하면 At Least Once 메시지 보장을 제공.

    • 하지만 REST API는 HTTP 상태 코드로 성공 여부를 명확히 알릴 수 있습니다.


3. REST API와 비슷한 점

  • 서비스 간 데이터 전달:

    • REST API처럼 Hazelcast Pub/Sub도 데이터를 다른 서비스에 전달하는 데 사용할 수 있습니다.

    • 예를 들어, 한 서비스가 Hazelcast 토픽에 메시지를 발행하면, 다른 서비스가 이를 수신하고 처리할 수 있습니다.

  • 서비스 간 의존성 관리:

    • REST API는 URL과 엔드포인트에 의존하지만, Hazelcast Pub/Sub은 토픽 이름을 사용해 통신 대상 관리.

  • 확장성:

    • REST API와 Hazelcast Pub/Sub 모두 다수의 서비스 간 통신을 지원하며, 확장성이 높습니다.


4. REST API와 다른 점

(1) 통신 방식

  • Hazelcast Pub/Sub:

    • 클러스터 내부의 노드 간 데이터 전송.

    • 네트워크 지연이 적으며, 클러스터가 동일 네트워크에 있는 한 빠른 응답 시간 보장.

  • REST API:

    • 클러스터 외부 또는 다른 시스템과의 통신을 위해 HTTP 프로토콜 사용.

    • 네트워크 지연 및 HTTP 요청 처리 시간이 더 소요될 수 있음.

(2) 메시지 전달 보장

  • Hazelcast Pub/Sub:

    • 기본적으로 At Most Once 보장.

    • Reliable Topic을 사용하면 At Least Once 메시지 보장 가능.

  • REST API:

    • 성공 여부는 HTTP 상태 코드(200, 500 등)로 명시적으로 알림.

(3) 상태 관리

  • Hazelcast Pub/Sub:

    • 클러스터 내부에서 Hazelcast의 분산 데이터 구조(Map, List 등)와 함께 상태를 관리.

  • REST API:

    • 요청마다 무상태로 작동, 상태 정보는 클라이언트 또는 외부 저장소에서 관리.

(4) 사용 시나리오

  • Hazelcast Pub/Sub:

    • 실시간 이벤트 전파:

      • 예: 데이터 변경 이벤트, 캐시 무효화, 사용자 알림.

    • 클러스터 내부 데이터 동기화:

      • 노드 간 데이터 상태를 유지하고 동기화.

  • REST API:

    • 외부 서비스와의 통신:

      • 예: API Gateway, 타사 API 호출.

    • CRUD 작업:

      • 클라이언트와 서버 간 요청-응답 기반 데이터 처리.


5. Hazelcast Pub/Sub과 REST API 통합 가능성

  • Hazelcast Pub/Sub과 REST API를 조합하면, 클러스터 내부와 외부 통신을 모두 최적화할 수 있습니다.

    • 클러스터 내부: Hazelcast Pub/Sub로 빠르고 효율적인 데이터 동기화.

    • 클러스터 외부: REST API로 외부 서비스와 통신.

예제: Hazelcast Pub/Sub과 REST API 혼합 구조

  1. Hazelcast Pub/Sub:

    • 캐시 무효화와 같은 클러스터 내부 작업 처리.

  2. REST API:

    • 외부 클라이언트 요청을 받아 Hazelcast 클러스터에 전달.

@RestController @RequestMapping("/api/cache") public class CacheController { @Autowired private HazelcastInstance hazelcastInstance; @PostMapping("/invalidate") public ResponseEntity<String> invalidateCache(@RequestParam String cacheKey) { ITopic<String> topic = hazelcastInstance.getReliableTopic("cacheInvalidation"); topic.publish(cacheKey); // Hazelcast 토픽에 메시지 발행 return ResponseEntity.ok("Cache invalidation message published."); } }

 


결론

Hazelcast Pub/Sub은 REST API와 같지 않지만, 유사한 목적(데이터 전달)을 클러스터 내부에서 더 빠르고 효율적으로 수행할 수 있습니다. REST API는 클러스터 외부와의 통신에 적합하며, Hazelcast Pub/Sub은 클러스터 내부 통신에 적합합니다.

  • 클러스터 내부 통신: Hazelcast Pub/Sub로 최적화.

  • 클러스터 외부 통신: REST API 활용.