| GaonIT Cloud — 호스팅 & 클라우드
가온IT

디바이스 게이트웨이

개발자가 사랑하는 호스팅 & 클라우드. 지금 바로 시작하세요.

솔루션IoT / MQTT / HTTP디도스보호(프록시)

디바이스 게이트웨이

수백만 디바이스의 텔레메트리/명령 채널을 MQTT/HTTP/WebSocket으로 수용합니다. 장치 등록・인증, 주제(Topic) 라우팅, 규칙 엔진, 디지털 트윈(Shadow)모니터링까지 한 번에. 요금은 별도문의로 안내합니다.

🌐 매니지드 MQTT
MQTT 3.1.1/5.0, QoS 0/1/2, Retain/Session, WebSocket 지원.
🛡️ 보안/규모
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
 }'
요금 안내
요금: 별도문의

연결 동시수, 메시지/초, 데이터 전송량, 규칙 엔진/웹훅 호출량, 보관기간(로그/메트릭) 기준으로 산정됩니다.

디바이스 연결, 수집, 라우팅까지 하나로
엔드포인트/정책/토픽만 알려주시면 바로 구성해드립니다.