ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MQTT 프로토콜 알아보자! (Http, gRPC 비교)
    Web 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
    반응형

    댓글

Designed by Tistory.