Web

MQTT 프로토콜 알아보자! (Http, gRPC 비교)

hoonylab 2025. 5. 2. 16:22
728x90
반응형

MQTT란 무엇인가?

MQTT(Message Queuing Telemetry Transport)는 경량 메시지 전송 프로토콜로, 저전력 장치와 제한된 네트워크 환경을 고려해 설계되었습니다. 주로 사물인터넷(IoT) 기기 간 통신에 많이 사용되며, 발행(Publish)과 구독(Subscribe) 방식의 구조를 가집니다.

MQTT의 특징

  • TCP/IP 기반 통신
  • 브로커(Broker)를 통한 Pub/Sub 구조
  • 낮은 대역폭, 저전력 환경에 최적화
  • QoS(Quality of Service)를 통한 신뢰성 제어

Request/Response vs Publish/Subscribe 통신 방식의 차이

프로토콜을 이해하려면 먼저 각각의 통신 방식 차이를 아는 것이 중요합니다. MQTT는 Pub/Sub 방식, HTTP와 gRPC는 기본적으로 Request/Response 방식을 사용합니다.

🔁 Request / Response 방식

  • 1:1 구조 — 클라이언트가 요청을 보내고 서버가 응답함
  • 직접 통신 — 클라이언트와 서버가 직접 연결
  • HTTP는 보통 단발성 연결, gRPC는 지속 연결 가능 (HTTP/2 기반)
  • 예: 웹 브라우저의 HTTP 요청, REST API 호출

📡 Publish / Subscribe 방식

  • 1:N 구조 — 발행된 메시지를 여러 구독자가 수신 가능
  • 브로커를 통해 간접 통신
  • 지속 연결 유지 (MQTT는 항상 연결 상태 유지)
  • 클라이언트 간 결합도가 낮아 확장성과 유연성이 높음

✅ 핵심 비교

항목 Request / Response Publish / Subscribe
통신 구조 직접 통신 (1:1) 브로커 기반 간접 통신 (1:N 가능)
연결 방식 단발성(Stateless) 또는 지속 (gRPC) 항상 연결 유지 (Persistent)
결합도 높음 (요청자와 응답자 간) 낮음 (브로커를 통해 연결)
적합한 용도 웹 API, 명령 실행 IoT, 실시간 이벤트, 알림 시스템

MQTT vs HTTP vs gRPC

구분 MQTT HTTP gRPC
통신 방식 Publish / Subscribe Request / Response Request / Response (HTTP/2)
연결 유지 지속 연결 보통 단발성 지속 연결 (Streaming 지원)
전송 경량성 매우 경량 헤더 부담 있음 Protobuf 기반으로 경량
사용 용도 IoT, 실시간 메시징 웹 API, 브라우저 요청 마이크로서비스 간 통신

MQTT의 QoS(Quality of Service) 레벨 설명

MQTT는 메시지의 전송 품질을 보장하기 위해 세 가지 QoS 레벨을 제공합니다.

QoS 0 - At most once (최대 한 번)

  • 메시지는 한 번 전송되며 손실 가능
  • 가장 빠르지만 신뢰도는 낮음

QoS 1 - At least once (최소 한 번)

  • 메시지가 최소 한 번은 도달함
  • 중복 수신 가능

QoS 2 - Exactly once (정확히 한 번)

  • 중복 없이 정확히 한 번만 전송됨
  • 가장 높은 신뢰도, 처리 비용은 가장 큼

마무리

각 프로토콜은 목적과 사용 환경에 따라 강점이 다릅니다. MQTT는 IoT와 같이 네트워크 제약이 큰 환경에서 적합하며, HTTP는 브라우저 기반 서비스에, gRPC는 마이크로서비스 통신에 적합합니다. 또한, 통신 구조와 QoS 설정 방식에 따라 성능과 신뢰성에 큰 차이가 생기므로, 프로젝트 특성에 맞는 선택이 중요합니다.

728x90
반응형