MQTT๋ ๊ฒ์ ๋ฐ ๊ตฌ๋ ๋ธ๋ก์ปค ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฐฉํฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋ ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ OASIS ํ์ค ํ๋กํ ์ฝ์ ๋๋ค. MQTT ํ๋กํ ์ฝ์ ๋คํธ์ํฌ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํ ๊ฒฝ๋ ํ๋กํ ์ฝ๋ก์ MQTT ํด๋ผ์ด์ธํธ๊ฐ ๋งค์ฐ ์์ ์ ํ๋ ๊ธฐ๊ธฐ์ ๋ฆฌ์์ค ์ฌ์ฉ์ด ์ต์ํ๋ฉ๋๋ค - Google์ MQTT ์ค๋ช
- Message Queuing Telemetry Transport
- Client - Broker ๊ฒ์/๊ตฌ๋
ํํ ํ๋กํ ์ฝ
- IoT ๊ธฐ๊ธฐ์ ๊ฐ์ด ๋์ญํญ์ด ์ ํ์ ์ด๊ฑฐ๋ ๋คํธ์ํฌ๊ฐ ๋ถ์์ ํ ํ๊ฒฝ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ตํํ๋๋ก ์ค๊ณ
- TCP/IP ์์์ ๋์
- ์ค๋งํธํ, ํฌ์ค์ผ์ด, ๊ตํต, ์ฐ์ ์๋ํ๋ฑ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ
- ํต์ฌ ๊ตฌ์ฑ ์์
- MQTT Broker
- MQTT Client
- ๊ฒ์์(Publisher)
- ๊ตฌ๋ ์(Subscriber)
-
๊ฐ๋ณ๊ณ ํจ์จ์ ์
๋ฉ์์ง ํค๋ ํฌ๊ธฐ๊ฐ ์์ ๋ฑ์ ํต์ ์ ํ์ํ ๋ฆฌ์์ค๊ฐ ์ ์.
-
์๋ฐฉํฅ ํต์
-
ํ์ฅ์ฑ
์๋ฐฑ๋ง๊ฐ์ ์ฐ๊ฒฐ๋ ์ฅ์น๋ฅผ ์ง์
-
๋ฉ์์ง ์ ๋ฌ ๋ณด์ฅ
3๊ฐ์ง QoS ๋ ๋ฒจ ์ค์ ์ ํตํ ๋ฉ์์ง ์ ๋ฌ ์์ ์ฑ ํ๋ณด ๊ฐ๋ฅ
- QoS 0: At most once (์ต๋ ํ ๋ฒ) โ ์ ๋ฌ ๋ณด์ฅ ์์
- QoS 1: At least once (์ต์ ํ ๋ฒ) โ ์ค๋ณต ๊ฐ๋ฅ
- QoS 2: Exactly once (์ ํํ ํ ๋ฒ) โ ๊ฐ์ฅ ์์ ํ์ง๋ง ์ค๋ฒํค๋ ํผ
-
์๊ตฌ์ ์ธ ์ธ์ ์ ํตํ ์ฌ ์ฐ๊ฒฐ ์ต์ ํ
์๊ตฌ ์ธ์ ์ ํตํ ๋ถ์์ ์ ์ธ(Unreliable) ํ๊ฒฝ์์ ์ฐ๊ฒฐ์ด ์ง์์ ์ผ๋ก ๋๊ฒผ์ ๋, ์ฌ ์ฐ๊ฒฐ ์๊ฐ์ ์ ์ฝํ ์ ์๋๋ก ์ง์
-
๋ณด์ ์์ ์ ์ฉ ๊ฐ๋ฅ
TLS๋ฅผ ํตํ ๋ฉ์์ง ์ํธํ ๊ฐ๋ฅ
- OAuth์ ๊ฐ์ ์ต์ ์ธ์ฆ ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์๋ ์์.
๋ฐ์ ์์ ์์ ์ ์ฌ์ด์ ์ค๊ฐ์๋ก์, ๊ตฌ๋ ์๋ฅผ ๊ด๋ฆฌํ๊ณ ๊ตฌ๋ ์์๊ฒ ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ์ญํ ์ ์ํ.
ํ ํฝ์ ๊ตฌ๋ ํ์ฌ ๋ฉ์์ง๋ฅผ ์์ ํ๊ฑฐ๋ ๋ฉ์์ง๋ฅผ ๊ฒ์ํ๋ ์ญํ
- ๋ช ๋ น/๋ช ๋ น ACK ํ์ ํต์
- Exmaple
- connect ์์ฒญ โ Connect ACK
- ๊ตฌ๋ ์์ฒญ โ ๊ตฌ๋ ACK
- ๊ฒ์ ์์ฒญ โ ๊ฒ์ ACK
-
MQTT์์ ํ ํฝ์ ๊ฒ์์์ ๊ตฌ๋ ์ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ผ์ฐํ ํ๋ ๋ฐฉ์์ ํต์ฌ ์์.
- ๋ฉ์์ง๊ฐ ์ ๋ฌ๋ ์์น๋ฅผ ์ ์ํ๋ ์ฃผ์์ ์ญํ
- UTF-8 ๋ฌธ์์ด ํํ๋ก ํํ
-
์ฃผ๋ก ๊ณ์ธต์ ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ๊ณ์ธต์ ์ฌ๋์(/) ๋ก ๊ตฌ๋ถ๋๋ค (ํ์ผ ๊ฒฝ๋ก์ ์ ์ฌ)
- ๊ฐ ๊ณ์ธต์ topic level์ด๋ผ๊ณ ์นญํ๋ค.
-
์์
- southkorea/seoul/gangnam/temperature
- ์์ธ์ ๊ฐ๋จ๊ตฌ์ ์จ๋๋ฅผ ๋ชจ๋ํฐ๋ง ํ๋๋ฐ ์ฌ์ฉ
- company/device/12345678/status
- 12345678 ๊ธฐ๊ธฐ์ ์์คํ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋๋ฐ ์ฌ์ฉ
- southkorea/seoul/gangnam/temperature
-
Topic Name VS Topic Filter
- Topic Name
- ๊ฒ์์๊ฐ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ ์ ํํ ์ฃผ์
- Topic Filter
- ๊ตฌ๋ ์๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ํจํด
- ์์ผ๋ ์นด๋๋ฅผ ํตํด ์ฌ๋ฌ ํ ํฝ์ ๋์์ ๊ตฌ๋ ๊ฐ๋ฅ
- Topic Name
- WildCard๋ฅผ ํตํด ์ฌ๋ฌ ํ ํฝ์ ๋์์ ๊ตฌ๋ ๊ฐ๋ฅ
- single-level๊ณผ multi-level์ด ์์
- single-level
- ๋ํ๊ธฐ(+) ๊ธฐํธ๋ฅผ ํตํด ํ๋์ topic level์ ๋์ฒด ๊ฐ๋ฅ
- ๋์ฒด๋ topic level์ ๋์ํ๋ ๋ชจ๋ topic์ ๊ตฌ๋
- ์์
- southkorea/seoul/+/temperature
- ์์ธ์์ ๋ชจ๋ ๊ตฌ์ ๋ํ ์จ๋๋ฅผ ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ
- โ ย southkorea/seoul/gangnam/temperature
- โ ย southkorea/seoul/nowon/temperature
- โ ย southkorea/seoul/jongno/temperature
- โย southkorea/seoul/gangnam/sinsa/temperature
- southkorea/seoul/+/temperature
- multi-level
- ํด์(#) ๊ธฐํธ๋ฅผ ๋ง์ง๋ง topic level์ ๋ถ์ฌ ๋์ผ ๋ ๋ฒจ ๋ฐ ํ์ ๋ ๋ฒจ๊น์ง ๊ตฌ๋ ๊ฐ๋ฅ
- ์์
- southkorea/seoul/#
- ์์ธ์์ ๋ชจ๋ ๊ตฌ์ ๋ํ ์จ๋๋ฅผ ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ
- โ ย southkorea/seoul/gangnam/temperature
- โ ย southkorea/seoul/jongno/temperature
- โ ย southkorea/seoul/jongno/humidity
- โย southkorea/chungnam/gangnam/temperature
- ์ค์ ๋ก ์ถฉ๋จ์ ๊ฐ๋จ์ด ์์ง๋ง ๋จ์ ์์
- southkorea/seoul/#
MQTT - The Standard for IoT Messaging
MQTT Essentials: Your 2025 Learning Hub for IoT & IIoT Data Streaming
MQTT Topics, Wildcards, & Best Practices โ MQTT Essentials: Part 5