Hazelcast Pub/Sub , REST API
1. Hazelcast Pub/Sub vs REST API: 주요 차이점
특징 | Hazelcast Pub/Sub | REST API |
---|---|---|
통신 방식 | 클러스터 내부 통신 (노드 간 Pub/Sub 메시지 전달) | HTTP 프로토콜 기반의 요청-응답 방식 |
통신 범위 | Hazelcast 클러스터 내 노드 간 통신 | 네트워크를 통해 서로 다른 서비스(혹은 서버) 간 통신 |
상태 관리 | Hazelcast의 상태 공유 (분산 Map/Replicated Map 등) | 무상태(Stateless), 각 요청은 독립적으로 처리됨 |
지연 시간 | 로컬 네트워크 기반 통신으로 지연이 적음 | 네트워크 및 HTTP 요청 처리로 인해 지연이 발생할 수 있음 |
의존성 | Hazelcast 클라이언트 및 클러스터 설정 필요 | HTTP 프로토콜과 RESTful 엔드포인트만 필요 |
메시지 보장 |
| 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 혼합 구조
Hazelcast Pub/Sub:
캐시 무효화와 같은 클러스터 내부 작업 처리.
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 활용.