MQTT 3.1.1/5.0, QoS 0/1/2, Retain/Session, WebSocket 지원.
솔루션IoT / MQTT / HTTP디도스보호(프록시)
디바이스 게이트웨이
수백만 디바이스의 텔레메트리/명령 채널을 MQTT/HTTP/WebSocket으로 수용합니다. 장치 등록・인증, 주제(Topic) 라우팅, 규칙 엔진, 디지털 트윈(Shadow)과 모니터링까지 한 번에. 요금은 별도문의로 안내합니다.
TLS 1.2+, X.509 mTLS(옵션), 토큰 인증, 레이트 제한, 디도스보호(프록시).
디바이스/그룹 등록, 속성/태그, 수명주기 상태, 키/인증서 관리.
주제 규칙으로 Webhook/Queue/DB 전송, 필터/변환(매핑/집계).
프로토콜/보안
| 프로토콜 | 전송 | 보안 | 용도 |
|---|---|---|---|
| MQTT 3.1.1 / 5.0 | TCP 1883 / TLS 8883, WebSocket | TLS 1.2+, X.509 mTLS(옵션), 토큰/JWT | 센서 텔레메트리, 명령/응답 |
| HTTP Ingest | HTTPS POST | TLS 1.2+, API 키/JWT, IP 허용목록(옵션) | 간단한 업로드/펌웨어 리포트 |
| WebSocket | WSS | TLS 1.2+, 토큰 | 브라우저/앱 연결 |
엔드포인트 예시:
mqtts://gw.example.com:8883, wss://gw.example.com/mqtt, https://gw.example.com/ingest디바이스 등록/인증
① 등록 — deviceId 발급, 그룹/태그/메타데이터 설정.
② 인증 — X.509(mTLS) 또는 API 키/JWT. 회전/폐기 자동화.
③ 정책 — 퍼블리시/구독 허용 토픽, QoS 제한, 레이트 제한.
④ 온보딩 — 프로비저닝 번들(엔드포인트/키/토픽 규칙) 배포.
⑤ 수명주기 — 상태: 등록→활성→격리→해지. 감사 로그 기록.
보안 — 디도스보호(프록시), IP 허용목록, 지역 제한(옵션).
토픽 네임스페이스 & 라우팅
| 패턴 | 설명 | 예시 |
|---|---|---|
gw/{tenant}/{deviceId}/event |
이벤트/텔레메트리 업링크 | gw/acme/thermo-001/event |
gw/{tenant}/{deviceId}/state |
주기 상태 보고 | gw/acme/thermo-001/state |
gw/{tenant}/{deviceId}/cmd |
다운링크 명령 | gw/acme/thermo-001/cmd |
gw/{tenant}/{deviceId}/shadow/+ |
디지털 트윈(리포트/원함/델타) | .../shadow/update, .../shadow/get |
와일드카드
+/#로 멀티 디바이스 구독. QoS/Retain은 정책으로 제한 가능.규칙 엔진(라우팅/변환)
토픽/페이로드 조건으로 외부 시스템(Webhook/Queue/DB)으로 전송하거나 필드 매핑/집계/필터를 수행합니다.
{
"name": "temp-to-webhook",
"match": { "topic": "gw/acme/+/event", "jsonpath": "$.sensor=='temp' && $.value>30" },
"transform": { "keep": ["deviceId","timestamp","value"], "rename": {"value":"tempC"} },
"action": { "type": "webhook", "url": "https://hook.example.com/iot", "auth": {"type":"header","key":"X-API-Key","value":"***"} }
}
디지털 트윈(Shadow)
디바이스의 reported(실제) / desired(원함) 상태를 JSON으로 관리하고, delta를 통해 동기화합니다.
{
"deviceId": "thermo-001",
"reported": { "temp": 28.1, "mode": "auto" },
"desired": { "mode": "eco" },
"metadata": { "fw": "1.2.3", "rssi": -62 },
"version": 42, "timestamp": 1735640123
}
모니터링/로그
| 항목 | 범위 | 설명 |
|---|---|---|
| 메트릭 | 게이트웨이/테넌트/디바이스 | 연결수, 메시지/초, QoS별 수신/발행, 드롭/거부, 지연 p95. |
| 이벤트 로그 | 보안/운영 | CONNECT/SUB/PUB, 인증 실패, 레이트 초과, 정책 거부. |
| 알림 | 이상징후 | 연결 급감/급증, 오류율 증가, 디도스보호(프록시) 트리거. |
로그 예시(JSON)
{"ts":"2025-08-31T12:00:01Z","tenant":"acme","device":"thermo-001","op":"PUBLISH","topic":"gw/acme/thermo-001/event","qos":1,"bytes":142}
샘플: Python(paho-mqtt)
import ssl, json, time
import paho.mqtt.client as mqtt
client = mqtt.Client(client_id="thermo-001", protocol=mqtt.MQTTv311)
client.username_pw_set("acme/thermo-001", password="<TOKEN>")
client.tls_set(ca_certs="ca.pem", certfile=None, keyfile=None, tls_version=ssl.PROTOCOL_TLSv1_2)
client.connect("gw.example.com", 8883, keepalive=60)
client.loop_start()
payload = {"sensor":"temp","value":28.7,"ts":int(time.time())}
client.publish("gw/acme/thermo-001/event", json.dumps(payload), qos=1, retain=False)
샘플: HTTP Ingest(curl)
curl -X POST https://gw.example.com/ingest \
-H "Authorization: Bearer <JWT>" \
-H "Content-Type: application/json" \
-d '{
"tenant":"acme",
"deviceId":"thermo-001",
"topic":"gw/acme/thermo-001/event",
"payload":{"sensor":"temp","value":28.7,"ts":1735640123},
"qos":1
}'
요금 안내
요금: 별도문의
연결 동시수, 메시지/초, 데이터 전송량, 규칙 엔진/웹훅 호출량, 보관기간(로그/메트릭) 기준으로 산정됩니다.
디바이스 연결, 수집, 라우팅까지 하나로
엔드포인트/정책/토픽만 알려주시면 바로 구성해드립니다.
디바이스 게이트웨이 문의
ℹ️
개인정보 처리 안내
문의 응대를 위해서만 사용되며 일정 기간 후 파기됩니다.