MQTT ํ๋กํ ์ฝ ๊ฐ๋ ๊ณผ ์ดํด
์๋ ํ์ธ์. ์์ฆ ์กธ์ ์ค๋น๊ฐ ํ์ฐฝ์ด์ด์, (ํ๊ณ์ง๋ง.. ใ ใ ) ๋ธ๋ก๊ทธ์ ๊ธ์ ์์ฃผ ๋ชป์ฐ๊ฒ ๋๋๊ตฐ์.
MQTT ํ๋กํ ์ฝ์ ๋ํ ๊ธ์ ์์ฑํด๋ณด๋ ค ํฉ๋๋ค. MQTT๋ ์ ๊ฐ ํ์ฌ ์กธ์ ์ํ์์ ์ฌ์ฉํ๊ณ ์๋ ํต์ ํ๋กํ ์ฝ์ธ๋ฐ์. ์ฒ์์๋ XMPP ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๋ฅผ ๊ตํํ๋ ค๊ณ ํ์์ผ๋, ๊ต์๋์ ์กฐ์ธ์ผ๋ก MQTT ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
MQTT๋ ๋ฌด์์ผ๊น, XMPP๋ ์ฐจ์ด๋?
์ ๋ธ๋ก๊ทธ ํฌ์คํธ์์ XMPP ๊ด๋ จ ํฌ์คํธ๋ฅผ ๋ณด์ ๋ถ์ด์๋ผ๋ฉด, ์ด ๊ธ๋ ๋ฐ๋์ ์ฐธ๊ณ ํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค. ๊ณผ๊ฑฐ ์ ๊ฐ ์ฑํ ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด XMPP ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์ ์ด ์์์ต๋๋ค. XMPP๋ ์์ Google Talk ๊ณผ Facebook Messenger ์์ ์ฌ์ฉํ ์ฑํ ํ๋กํ ์ฝ๋ก ํ์ฌ๋ Hangouts ์๋น์ค๋ XMPP์ ํธํ๋๋ ์์ฒด ํ๋กํ ์ฝ์, Facebook Messenger๋ MQTT ํ๋กํ ์ฝ๋ก ๋ฐ๋์์ต๋๋ค.
MQTT ํ๋กํ ์ฝ์ Message Queue TELEMETRY TRANSPORT ์ ์ฝ์๋ก, ํต์ ์ฅ๋น, ๋ชจ๋ฐ์ผ, ์ค๋งํธํฐ ๊ธฐ๊ธฐ์ ์ต์ ํ๋ ๊ฐ๋ฒผ์ด ๋ฉ์์ง ํ๋กํ ์ฝ๋ก IoT ์ฅ๋น์ ํ์ฌ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ ํ๋กํ ์ฝ์ ๋๋ค.
๋ฌผ๋ก ๋ฉ์์ง ํ๋กํ ์ฝ์๋ HTTP๋ HTTPS๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง, IoT์ ๊ฐ์ ๋ผ์ดํธ ์ฅ๋น (์คํ์ด ๋์ง ์์ ์ฅ๋น)์ ๋ํด์ ๋จ์ ๋ฉ์์ง ๊ตํ์ ์ํด ๋ฌด๊ฑฐ์ด ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ทธ๋งํผ ์ฑ๋ฅ ์ ํ๊ฐ ์๊ธฐ๊ฒ ๋ฉ๋๋ค.
XMPP ํ๋กํ ์ฝ์ ๊ฒฝ์ฐ, ๋ฉ์์ง ๊ตํ์ผ๋ก ์ ์ ํ์ง๋ง, ๋ฉ์์ง์ ํฌ๊ธฐ์ ํํ๊ฐ ์ผ๋ฐ์ ์ธ ๋ฌธ์์ด์ด ์๋ xml ํ์ผ ํ์์ผ๋ก ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค๊ฐ ํฌ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๊ทธ๋์ ์ฌ์ฉํ ๊ฒ์ด ๋ฐ๋ก MQTT ์ ๋๋ค.
MQTT (MQ Telemetry Transport)
MQTT๋ Broker Pattern์ ์ฑํํ์ฌ ๊ฐ๋ฐ๋ ๊ฒฝ๋ํ ๋ฉ์์ง ํ๋กํ ์ฝ๋ก, 1999๋ IBM, Eurotech์์ ๊ฐ๋ฐํ์๋ค๊ฐ ํ์ฌ IBM์์ ๋ฒ์ 3.1.1 ๊น์ง ๋ด๋์์ต๋๋ค.
Broker Pattern์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ HTTP, XMPP์ ๊ฐ์ด Client-Server Model์ ์์ฉํ์ง๋ง, ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค. ๋ณดํต ๋ฉ์์ง ๊ตํ ํ๋กํ ์ฝ์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ฌํ ๋ฉ์์ง๋ฅผ ์๋ฒ์๊ฒ ์ฃผ๊ณ , ์๋ฒ๋ ๋๊ฐ, ๋๊ตฌ์๊ฒ ์ด๋ค ๋ฉ์์ง๋ฅผ ์ค ๊ฒ์ธ์ง ๋ฅผ ์ ๋ฌ ๋ฐ์, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋ ๋ฐฉ์์ ๋๋ค.
ํ์ง๋ง Broker Pattern์ Broker ๋ผ๋ ์ค๊ณ์๊ฐ ์ค๊ณ ์๋ฒ ๋ฑ์ผ๋ก ์กด์ฌํ๊ณ , ํด๋น ์๋ฒ์์ Topic (์ฃผ์ )๋ฅผ ์ ์ ํ๊ณ , ํด๋น Topic ์ ๊ตฌ๋ ์๋ค์๊ฒ ๋ฉ์์ง๋ฅผ ์ ๋ฌํด์ฃผ๋ ๋ฐฉ์์ ๋๋ค.
Broker Pattern์ ๊ฐ๋จํ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด์ด ๋ดค์ต๋๋ค. ์ค๋งํธํฐ์์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์๊ฒ ์ฃผ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ค๋งํธํฐ์์๋ ๋ธ๋ก์ปค์๊ฒ Topic๋ฅผ ๋์ ธ์ฃผ๊ณ , ๋ฉ์์ง๋ฅผ ๋จ๊น๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์ค๋งํธํฐ์ด ๋ง๋ค์ด ๋์ Topic ์ ๊ตฌ๋ ํ์ฌ ๋ฉ์์ง๊ฐ ์ฌ ๋๋ง๋ค ์์ ํ๋ ๊ฒ์ ๋๋ค.
๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก, ์ผ์ชฝ์ ์๋ Sensor Device ๋ค๋ ์์ ๋ค์ Topic์ ๋ง๋ค๊ณ , ํด๋น Topic์ ๋ฉ์์ง๋ฅผ ๋ณด๋ ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ตฌ๋ ํ๊ณ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ํด๋น ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด์ง์.
์ด๋ ๊ฒ ํ๋ฉด, 1 : 1 ๋ฟ๋ง ์๋๋ผ, 1 : N, N : N ํต์ ๋ ์ฝ๊ฒ ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ํ๋ ์ฌ์ฉ์๊ฐ ํด๋น Topic์ ๊ตฌ๋ (Subscribe)ํ์ฌ ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ , ๊ทธ์ ๋์ํ๋ ๋ฉ์์ง๋ฅผ ๋ฐํ(Publish) ํ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์ผ๋ฐ์ ์ธ ์ฑํ ์๋ฒ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋นํ๋ฉด ๊ต์ฅํ ๋ฆฌ์์ค๋ฅผ ๋ ํ์๋ก ํ๋ค๋ ๊ฒ์ด ํน์ง์ ๋๋ค.
MQTT ํน์ง ์ ๋ฆฌ
์์์ ๊ฐ๋จํ ํน์ง์ ์ค๋ช ํด ๋๋ ธ๋ฏ์ด MQTT๋ ์ผ์ ํ ์ฃผ์ ๋ฅผ ๋๊ณ , ํด๋น ์ฃผ์ ๋ฅผ ์๋ฒ์ ์ ๋ ฅํด ์ฑํ ํ๋ ํต์ ๋ฐฉ์์ ๋๋ค. ๊ทธ ์ธ์๋ ์ฌ๋ฌ ํน์ง๋ค์ด ์์ต๋๋ค.
- ๋จ์ํ๊ณ ๊ฐ๋ฒผ์ด ๋ฉ์์ง ํ๋กํ ์ฝ
- ์ค๋ฒํค๋๋ฅผ ์ต์ํ ํ๊ธฐ ์ํด ํค๋ ํฌ๊ธฐ๋ฅผ ๋ํญ ์ค์ด๊ณ , Payload ๋ฐ์ดํฐ์ ์ค๋ฆฝ
- QoS ์ง์
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์ฐ๊ฒฐ์ด ๋์ด์ก์ ๋์ ๋ณด์ ๊ธฐ๋ฅ ์ ๊ณต
- TLS/SSL ์ง์ (X.509๋ฅผ ์ด์ฉํ ์๋ฐฉํฅ ์ธ์ฆ ์ง์)
- ์ฌ์ฉ์ ์ธ์ฆ ๋ฐฉ์ ์ ๊ณต
- ์คํ ์์ค
MQTT๋ฅผ ๋์ ํ์ ๋ ๊ฐ์ฅ ํฌ๊ฒ ๊ณ ๋ คํ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด, ์๋ง ๋ณด์ ๋ฌธ์ ์ผ ๊ฒ์ ๋๋ค. http, xmpp๋ TLS/SSL ๋ฑ์ ์ฌ์ฉํด ๋ฉ์์ง๋ฅผ ์ํธํํ ์ ์๋๋ฐ์. MQTT์์๋ ์ด๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ณด์ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํ๊ณ ๊ณ์ ๋ค๋ฉด, ์์ฌํ์ ๋ ๋ฉ๋๋ค.
ํ๋กํ ์ฝ ์์ฒด๊ฐ ๊ฐ๋ฒผ์์ IoT์ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํฉ๋๋ค. Raspberry PI ์ ์ฌ์ฉ๋๋ ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ ์ด์์ฒด์ ์ ๊ฐ๋จํ๊ฒ ํฌํ ํ ์ ์๊ณ , Windows ์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
MQTT Broker
MQTT๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์ฌ๋๊ณผ ๋ฐ๋ ์ฌ๋์ด ์๊ณ , ๊ทธ ๋ค์ ๋ฉ์์ง๋ฅผ ์ค๊ณํด ์ค Broker๊ฐ ํ์ํฉ๋๋ค. MQTT Broker์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์กด์ฌํฉ๋๋ค.
Netty ๊ธฐ๋ฐ์์ ๋์ํ๋ Mosquette, Eclipse์์ ๊ฐ๋ฐํ Paho ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์กด์ฌํฉ๋๋ค. ์ ๋ ์ด ์ค์์ Mosquitto๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ๊ฐ์ฅ ๋ง์ ์ธ์ด๋ฅผ ์ง์ํ๊ณ , ์ฌ๋ฌ๊ฐ์ง ์ ์ฝ์ ์์ง ์กด์ฌํ์ง๋ง, MQTT๋ฅผ ํต์ ํ๋ ๋ฐ ์์ด ๊ฐ์ฅ ๋ฌด๋ํฉ๋๋ค. ์ค์ Facebook ์์๋ Broker๋ก Mosquitto๋ฅผ ์ฑํํด ์ฌ์ฉ ์ค์ ๋๋ค.
๋ง์น๋ฉฐ...
์ฌ๊ธฐ๊น์ง MQTT์ ๋ํด ์์๋ดค์ต๋๋ค. ํ๋กํ ์ฝ ์์ฒด๋ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ํ๋กํ ์ฝ์ด ์๋๋๋ค. ๋ค๋ง ์ต๊ทผ์๋ ๋ฉ์์ง ๊ตํ ํ๋กํ ์ฝ์ด ๋๋ฆฌ ์ฐ์ด๊ณ ์์ต๋๋ค. ์์์ ์๊ธฐํ ์ฑํ ๋ฟ๋ง ์๋๋ผ ์ผ์๋ค ๊ฐ์ ๋ฉ์์ง ๊ตํ, Push ์๋ฆผ ๋ฑ์ด ์กด์ฌํฉ๋๋ค. Push ์๋ฆผ๋ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์ฝ๊ฒ ๊ตฌํํ ์ ์์ง๋ง, ์ผ์๋ค ๊ฐ์ ๋ฉ์์ง ๊ตํ์๋ ์ ๋ ฅ ํ๊ณ์ ์ฑ๋ฅ ํ๊ณ์น๊ฐ ์กด์ฌํฉ๋๋ค. ์ ๋ ฅ์ ๋ง์ด ์๋ชจํ๊ฒ ๋ ๊ฒฝ์ฐ, IoT ์ฅ๋น์์ ๋ถ๋ฆฌํด์ง๊ธฐ ๋๋ฌธ์ด์ง์.
๋ง์ฝ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํ๊ณ ๊ณ์ ๋ค๋ฉด, MQTT ํ๋กํ ์ฝ ์ฌ์ฉ์ ํ ๋ฒ ๊ถํด๋ด ๋๋ค.
์ค์นํ๋ ๋ฐฉ๋ฒ์ ๊ธ์ ๋ณด์๋ ค๋ฉด ์ ๋ฒํผ์ ํด๋ฆญํ์๊ธฐ ๋ฐ๋๋๋ค.
'Infrastructure > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] Rate Limit๊ณผ Throttling ์ดํด (0) | 2023.07.17 |
---|---|
[Network] Load Balancing (๋ก๋ ๋ฐธ๋ฐ์ฑ)์ ๊ฐ๋ ๊ณผ ์ดํด (0) | 2020.06.02 |
๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด - Socket (0) | 2017.04.09 |
IP MASQUERADE (0) | 2016.07.02 |
NAT (Network Address Translation) (0) | 2016.06.24 |