티스토리 뷰

728x90

🔗 HTTP/REST, gRPC, 메시지 브로커 기반 이벤트 소개

1. HTTP/REST: 가장 널리 쓰이는 표준 API 통신

  • 방식: 클라이언트-서버 방식의 동기 통신 (Request/Response)
  • 전송 포맷: 일반적으로 JSON
  • 장점:
    • 직관적인 URI 설계
    • 브라우저 친화적
    • 거의 모든 언어/프레임워크에서 지원
  • 단점:
    • 동기 통신: 호출자가 응답을 기다려야 함 → 시스템 결합도 높음
    • 에러나 타임아웃 발생 시 실패 처리 필요
  • 사용 예: 사용자 인증, 주문 요청, 리소스 CRUD 등 명령형 API 호출

2. gRPC: 고성능 이진 프로토콜 기반 RPC

  • 방식: 동기 또는 비동기 Remote Procedure Call
  • 전송 포맷: Protocol Buffers (Protobuf)
  • 장점:
    • 빠르고 효율적인 바이너리 전송
    • 자동 코드 생성 → 인터페이스 일관성 보장
    • 양방향 스트리밍 지원
  • 단점:
    • 디버깅이 어렵고 가독성 낮음
    • 브라우저 직접 접근 어려움 (gRPC-Web 필요)
  • 사용 예: 마이크로서비스 간 고속 통신, 실시간 데이터 처리

3. 메시지 브로커 기반 이벤트 아키텍처

  • 방식: 비동기 메시지 기반 통신, Pub/Sub 모델
  • 대표 브로커: Apache Kafka, RabbitMQ, NATS 등
  • 이벤트 드리븐 아키텍처(Event-Driven Architecture):
    • 하나의 서비스가 이벤트를 발행(Publish) 하면,
    • 다른 서비스들이 구독(Subscribe) 하여 비동기로 반응

✅ 장점:

  • 강한 확장성: 이벤트 수신자는 동적으로 늘릴 수 있음
  • 비동기 처리: 느린 서비스나 실패한 서비스도 독립적으로 복구 가능
  • 낮은 결합도: 발행자는 수신자를 몰라도 됨 → 유연한 서비스 확장

❌ 단점:

  • 시스템 상태 파악이 어려움 → 이벤트 추적과 모니터링 필요
  • 트랜잭션 처리 복잡성 증가 (Eventually Consistent)
  • 메시지 중복, 순서 문제 처리 필요

🧭 선택 가이드

 

기준  HTTP/REST gRPC   메시지 브로커 기반 이벤트
통신 방식 동기 동기/비동기 비동기
성능 보통 높음 매우 높음 (비동기 병렬)
결합도 높음 중간 낮음
확장성 제한적 좋음 매우 좋음
트랜잭션 일관성 관리 간단 복잡 어려움 (보상 트랜잭션 필요)
디버깅/모니터링 쉬움 보통 어려움
사용 예 API 게이트웨이, 외부 호출 마이크로서비스 내부 통신 비즈니스 이벤트 처리

🧩 비교 예시 다이어그램

[ REST API 호출 흐름 ]
Client → [ API Gateway ] → [ Service A ] → [ Service B ]

[ gRPC 통신 흐름 ]
Service A → gRPC call → Service B → gRPC call → Service C

[ 메시지 브로커 이벤트 흐름 ]
Service A → [ Kafka Topic (주문 생성됨) ]
                      ↓
          [ Service B (재고 차감) ]
                      ↓
          [ Service C (알림 전송) ]

✨ 마무리

  • REST와 gRPC는 명령형, 요청 기반 통신에 적합
  • 메시지 브로커는 이벤트 기반, 반응형 시스템 설계에 적합
  • 실제 마이크로서비스 아키텍처에서는 이들을 혼합 구성하는 경우가 많음
    • 예: REST로 주문 요청 → Kafka로 이벤트 발행 → 다른 서비스는 이벤트 기반 처리

 

728x90

'Programming' 카테고리의 다른 글

Kafka REST API 요청 API Gateway or custom 처리  (0) 2025.03.31
Apache Pulsar란?  (0) 2025.03.31
@ReflectionHint란?  (0) 2025.03.24
GraalVM Native 이미지로 빌드 에러 발생 원인  (0) 2025.03.24
AOT는 Ahead-Of-Time 컴파일  (0) 2025.03.24
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함