API에 HTTP 대신 MQTT를 사용해야 하는 경우

Ashley Innocent

Ashley Innocent

13 March 2026

API에 HTTP 대신 MQTT를 사용해야 하는 경우

TL;DR

제한된 배터리, 불안정한 네트워크 또는 pub-sub 메시징 패턴을 사용하는 IoT 장치에는 MQTT를 사용하세요. 표준 웹/모바일 API에는 HTTP를 사용하세요. MQTT는 HTTP의 100바이트 이상에 비해 2바이트 헤더를 사용하여, 제약이 있는 장치에 이상적입니다. Modern PetstoreAPI는 애완동물 추적 목걸이 및 스마트 급식기에 MQTT를 구현합니다.

소개

애완동물 추적 목걸이는 5분마다 위치 업데이트를 보내야 합니다. 6개월 동안 지속되어야 하는 코인 배터리로 작동합니다. HTTP를 사용하면 배터리가 2주 만에 방전됩니다. MQTT를 사용하면 6개월 내내 지속됩니다.

HTTP는 API의 표준이지만, IoT 장치가 아닌 웹 브라우저용으로 설계되었습니다. MQTT(Message Queuing Telemetry Transport)는 제한된 대역폭과 불안정한 네트워크를 가진 제약이 있는 장치용으로 개발되었습니다.

Modern PetstoreAPI는 웹 및 모바일 앱에는 HTTP를 사용하지만, 애완동물 추적 목걸이, 스마트 급식기, 건강 모니터와 같은 IoT 장치에는 MQTT를 사용합니다.

💡
IoT API를 구축하거나 테스트하는 경우, Apidog는 HTTP와 함께 MQTT 테스트를 지원합니다. pub-sub 패턴을 테스트하고, 메시지 형식을 검증하며, 네트워크 오류를 시뮬레이션할 수 있습니다.
버튼

이 가이드에서는 언제 MQTT가 HTTP보다 우세한지 배우고, Modern PetstoreAPI의 실제 사례를 확인하며, 사용 사례에 맞는 올바른 프로토콜을 선택하는 방법을 알아봅니다.

MQTT란 무엇인가요?

MQTT는 IoT를 위해 설계된 경량 pub-sub 메시징 프로토콜입니다.

MQTT 작동 방식

장치는 토픽에 메시지를 발행합니다. 다른 장치는 토픽을 구독합니다:

Publisher (Pet Collar):
  Topic: pets/019b4132/location
  Payload: {"lat":37.7749,"lng":-122.4194,"battery":85}

Subscriber (Mobile App):
  Subscribe to: pets/019b4132/location
  Receives: {"lat":37.7749,"lng":-122.4194,"battery":85}

MQTT 브로커는 중간에서 발행자로부터 구독자에게 메시지를 라우팅합니다.

주요 MQTT 기능

1. 작은 헤더 - MQTT: 2바이트, HTTP: 100-500바이트

2. 영구 연결 - MQTT는 연결을 유지합니다

3. 서비스 품질(QoS) - 전송 보장을 위한 QoS 0/1/2

4. Last Will - 장치가 예기치 않게 연결 해제될 경우 전송되는 메시지

5. 유지 메시지 - 브로커가 새 구독자를 위해 마지막 메시지를 저장합니다

MQTT vs HTTP 비교

특징 MQTT HTTP
헤더 크기 2바이트 100-500바이트
패턴 Pub-Sub 요청-응답
연결 영구적 요청별
대역폭 매우 낮음 더 높음
배터리 영향 최소 상당함
브라우저 지원 WebSocket을 통해 기본 지원

대역폭 예시

하루 1000회 위치 업데이트:

MQTT는 8배 적은 대역폭을 사용합니다.

MQTT가 우세할 때

1. 제한된 배터리를 가진 IoT 장치

애완동물 추적 목걸이:

이유: 영구 연결, 작은 헤더, 적은 라디오 사용 시간.

2. 불안정한 네트워크

불규칙한 커버리지를 가진 셀룰러 IoT 장치:

3. 다대다 통신

스마트 애완동물 급식기 시나리오:

Feeder 1 → pets/019b4132/feeding
Feeder 2 → pets/019b4127/feeding
App 1 → subscribes to pets/+/feeding (all pets)
App 2 → subscribes to pets/019b4132/feeding (one pet)

4. 실시간 센서 데이터

매초 업데이트를 보내는 애완동물 건강 모니터:

HTTP가 우세할 때

1. 표준 웹/모바일 앱

HTTP는 보편적입니다:

2. 요청-응답 패턴

애완동물 세부 정보 가져오기:

GET /pets/019b4132
200 OK
{"name":"Fluffy","species":"CAT"}

HTTP는 요청-응답에 더 간단합니다.

3. 캐싱 요구 사항

HTTP 캐싱은 즉시 작동합니다:

MQTT는 캐싱 기능이 없습니다.

4. RESTful API

HTTP 상태 코드, 메서드 및 의미론:

Modern PetstoreAPI는 MQTT를 어떻게 사용하나요?

Modern PetstoreAPI는 IoT 장치에 MQTT를 구현합니다.

애완동물 추적 목걸이

목걸이가 위치를 발행합니다:

Topic: pets/019b4132/location
QoS: 1 (at least once)
Payload: {
  "lat": 37.7749,
  "lng": -122.4194,
  "battery": 85,
  "timestamp": "2026-03-13T10:30:00Z"
}

모바일 앱이 구독합니다:

const mqtt = require('mqtt');
const client = mqtt.connect('mqtts://mqtt.petstoreapi.com');

client.subscribe('pets/019b4132/location');

client.on('message', (topic, message) => {
  const location = JSON.parse(message);
  updateMap(location.lat, location.lng);
});

스마트 급식기

급식기가 스케줄을 구독합니다:

Topic: pets/019b4132/feeding-schedule
Retained: true
Payload: {
  "times": ["08:00", "18:00"],
  "amount": 100
}

급식기가 급식 이벤트를 발행합니다:

Topic: pets/019b4132/feeding-events
Payload: {
  "timestamp": "2026-03-13T08:00:15Z",
  "amount": 100,
  "dispensed": true
}

건강 모니터

모니터가 활력 징후를 발행합니다:

Topic: pets/019b4132/health
QoS: 0 (fire and forget, high frequency)
Payload: {
  "heartRate": 120,
  "temperature": 38.5,
  "activity": "resting"
}

Apidog로 MQTT 테스트

Apidog는 HTTP 및 기타 프로토콜과 함께 MQTT 테스트를 지원합니다.

MQTT Pub-Sub 테스트

  1. MQTT 브로커에 연결
  2. 토픽 구독
  3. 테스트 메시지 발행
  4. 메시지 형식 검증
  5. QoS 수준 테스트

네트워크 오류 시뮬레이션

HTTP와 비교

두 프로토콜로 동일한 기능을 테스트합니다:

결론

MQTT와 HTTP는 서로 다른 목적을 가집니다. 제한된 리소스를 가진 IoT 장치에는 MQTT를 사용하세요. 표준 웹/모바일 API에는 HTTP를 사용하세요.

Modern PetstoreAPI는 사용자 대면 API에는 HTTP를, IoT 장치에는 MQTT를 사용하는 방법을 보여줍니다. 올바른 프로토콜은 "더 나은" 것이 아니라 사용자의 제약 조건에 따라 달라집니다.

Apidog로 두 프로토콜을 모두 테스트하여 사용 사례에 가장 적합한 것을 찾아보세요.

버튼

FAQ

MQTT는 HTTP를 통해 작동할 수 있나요?

MQTT는 HTTP를 통해 작동하는 WebSocket 위에서 실행될 수 있습니다. 이는 방화벽 통과에 도움이 되지만, MQTT의 일부 효율성 이점을 잃게 됩니다.

MQTT QoS 수준은 무엇인가요?

MQTT는 안전한가요?

예, MQTT는 TLS 암호화(MQTTS) 및 사용자 이름/비밀번호 인증을 지원합니다. Modern PetstoreAPI는 모든 IoT 장치에 MQTTS를 사용합니다.

브라우저에서 MQTT를 사용할 수 있나요?

브라우저는 WebSocket을 통해 MQTT를 사용할 수 있습니다. MQTT.js와 같은 라이브러리는 브라우저 환경을 지원합니다.

MQTT는 WebSocket과 어떻게 비교되나요?

MQTT는 WebSocket 위에서 실행될 수 있는 프로토콜입니다. WebSocket은 전송 계층입니다. MQTT는 WebSocket 위에 pub-sub, QoS 및 IoT 특정 기능을 추가합니다.

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요