4 ๋ถ„ ์†Œ์š”

[aws] MQTT๋ž€?

MQTT๋Š” ๋จธ์‹  ๋Œ€ ๋จธ์‹  ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง• ํ”„๋กœํ† ์ฝœ ๋˜๋Š” ๊ทœ์น™ ์„ธํŠธ์ด๋‹ค.

์Šค๋งˆํŠธ ์„ผ์„œ, ์›จ์–ด๋Ÿฌ๋ธ” ๋ฐ ๊ธฐํƒ€ ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท(IoT) ๋””๋ฐ”์ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค ์ œ์•ฝ์ด ์žˆ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ œํ•œ๋œ ๋Œ€์—ญํญ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ์ˆ˜์‹ ํ•ด์•ผ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ IoT ๋””๋ฐ”์ด์Šค๋Š” MQTT๋ฅผ ๋ฐ์ดํ„ฐ ์ „์†ก์— ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ตฌํ˜„์ด ์‰ฝ๊ณ  IoT ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

MQTT๋Š” ๋””๋ฐ”์ด์Šค์—์„œ ํด๋ผ์šฐ๋“œ๋กœ, ํด๋ผ์šฐ๋“œ์—์„œ ๋””๋ฐ”์ด์Šค๋กœ์˜ ๋ฉ”์‹œ์ง•์„ ์ง€์›ํ•œ๋‹ค.

์ฆ‰, MQTT๋Š” ๋ฐœํ–‰/๊ตฌ๋…(Publish/Subscribe) ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€ ์†ก์ˆ˜์‹  ํ”„๋กœํ† ์ฝœ.

MQTT ํ”„๋กœํ† ์ฝœ์ด ์ค‘์š”ํ•œ ์ด์œ ?

๊ฐ€๋ณ๊ณ  ํšจ์œจ์ 

MQTT๋ฅผ IoT ๋””๋ฐ”์ด์Šค์— ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ์ตœ์†Œํ•œ์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ์ž‘์€ ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ๋กœ, MQTT ์ œ์–ด ๋ฉ”์‹œ์ง€๋Š” 2๋ฐ”์ดํŠธ๋งŒํผ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— MQTT ๋ฉ”์‹œ์ง€ ํ—ค๋”๋„ ์ž‘์•„, ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ™•์žฅ์„ฑ

MQTT๊ตฌํ˜„์—๋Š” ์ตœ์†Œ๋Ÿ‰์˜ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์ž‘์—… ์‹œ ์•„์ฃผ ์ž‘์€ ์ „๋ ฅ๋งŒ ์†Œ๋น„ํ•œ๋‹ค.

๋˜ํ•œ ๋งŽ์€ ์ˆ˜์˜ IoT ๋””๋ฐ”์ด์Šค์™€์˜ ํ†ต์‹ ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค.

์‹ ๋ขฐ์„ฑ

๋งŽ์€ IoT ๋””๋ฐ”์ด์Šค๋Š” ๋Œ€์—ญํญ์€ ๋‚ฎ๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์€ ๊ธด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์…€๋ฃฐ๋Ÿฌ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•œ๋‹ค.

MQTT์—๋Š” IoT ๋””๋ฐ”์ด์Šค์—์„œ ํด๋ผ์šฐ๋“œ์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํƒ‘์žฌ๋˜์–ด ์žˆ๋‹ค..!

๋˜ํ•œ ์ตœ๋Œ€ 1ํšŒ(0), ์ตœ์†Œ 1ํšŒ(1) ๋ฐ ์ •ํ™•ํžˆ 1ํšŒ(2)๋ผ๋Š” 3๊ฐ€์ง€ ์„œ๋น„์Šค ํ’ˆ์งˆ ์ˆ˜์ค€์„ ์ •์˜ํ•˜์—ฌ IoT ์‚ฌ์šฉ ์‚ฌ๋ก€์— ํ•„์š”ํ•œ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

  • 0: ์ตœ๋Œ€ 1ํšŒ ์ „์†ก
    • Topic์„ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ๋ฟ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š์Œ (๋ณด๋‚ธ ๋‹ค์Œ ์žŠ์–ด๋ฒ„๋ฆผ)
  • 1: ์ตœ์†Œ 1ํšŒ ์ „์†ก
    • ๊ตฌ๋…ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜๋Š”์ง€ ๋ถˆํ™•์‹คํ•˜๋ฉด ์ •ํ•ด์ง„ ํšŸ์ˆ˜๋งŒํผ ์žฌ์ „์†กํ•จ
    • ๋ฉ”์‹œ์ง€์˜ ํ•ธ๋“œ์…ฐ์ดํ‚น ๊ณผ์ •์„ ์—„๋ฐ€ํ•˜๊ฒŒ ์ถ”์ ํ•˜์ง€๋Š” ์•Š์•„, ์ค‘๋ณต์˜ ์œ„ํ—˜์ด ์žˆ์Œ (ํ™•์ธ ์‘๋‹ต์„ ๊ฑฐ์น˜๋Š” ์ „๋‹ฌ์ž„)
  • 2: ์ •ํ™•ํžˆ 1ํšŒ ์ „์†ก
    • ๊ตฌ๋…ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”๊ตฌ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•จ (๋ณด์žฅ๋œ ์ „๋‹ฌ)
    • TCP/IP ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์ฒ˜๋ฆฌ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ , MQTT ์†ก์ˆ˜์‹ ์ž ๊ฐ„์—๋งŒ ์‚ฌ์šฉ๋จ
    • ๋ฉ”์‹œ์ง€๋Š” ๊ธ€์ž ์ˆ˜ ์ œํ•œ์ด ์—†์–ด ๊ธด ๋ฉ”์‹œ์ง€ ํ˜น์€ JSON , ํŒŒ์ผ๋„ ์ „์†ก์ด ๊ฐ€๋Šฅํ•จ
    • 0์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€ํ•˜๊ฐ€ ์ค„์–ด๋“ค๊ณ , ์†์‹ค์˜ ์œ„ํ—˜์ด ๋†’์•„์ง
    • 2์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ๋ฉ”์‹œ์ง€ ์†์‹ค ์œ„ํ—˜์€ ์ค„์–ด๋“ค์ง€๋งŒ, ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๋ถ€ํ•˜๊ฐ€ ๊ธ‰๊ฒฉํžˆ ๋†’์•„์ง
    • 0 ~ 1 ์ •๋„์˜ QoS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋ฉ”์‹œ์ง€ ์†์‹ค์˜ ์œ„ํ—˜์€ ์ƒ์œ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฐจ์›์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋„๋ฆฌ ์“ฐ์ด๋Š” ์ค‘์ž„

โ“ย Topic
๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰-๊ตฌ๋…ํ•˜๋Š” ํ–‰์œ„๋Š” ์ฑ„๋„ ๋‹จ์œ„๋กœ ์ผ์–ด๋‚˜๋Š”๋ฐ, ์ด๋ฅผ ํ† ํ”ฝ์ด๋ผ๊ณ  ํ•œ๋‹ค.
ํ† ํ”ฝ์€ / ๋กœ ๊ตฌ๋ถ„๋˜๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.
๋‹จ, ์ตœ์ƒ์œ„ ํ† ํ”ฝ์€ /๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ํ† ํ”ฝ์˜ ์ด๋ฆ„์—๋Š” ๊ณต๋ฐฑ์ด ์—†๋Š” ์•„์Šคํ‚ค์ฝ”๋“œ์—ฌ์•ผ ํ•œ๋‹ค.

๋ณด์•ˆ

๊ฐœ๋ฐœ์ž๋Š” MQTT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์†์‰ฝ๊ฒŒ ์•”ํ˜ธํ™”ํ•˜๊ณ  OAuth, TLS1.3, ๊ณ ๊ฐ ๊ด€๋ฆฌํ˜• ์ธ์ฆ์„œ ๋ฐ ๊ธฐํƒ€ ์ตœ์‹  ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ฐ”์ด์Šค์™€ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.

์šฐ์ˆ˜ํ•œ ์ง€์›

Python๊ณผ ๊ฐ™์€ ๋‹ค์ˆ˜์˜ ์–ธ์–ด๊ฐ€ MQTT ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์„ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ง€์›ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋Š” ๋ชจ๋“  ์œ ํ˜•์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ ์ž‘์—…์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ด ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

MQTT์˜ ์›๋ฆฌ?

MQTT ํ”„๋กœํ† ์ฝœ์€ ๊ฒŒ์‹œ/๊ตฌ๋… ๋ชจ๋ธ์˜ ์›์น™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

์ „ํ†ต์ ์ธ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ์‘๋‹ต์„ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.

ํ•˜์ง€๋งŒ MQTT๋Š” ๊ฒŒ์‹œ/๊ตฌ๋… ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ๋ฐœ์‹ ์ž(๊ฒŒ์‹œ์ž)์™€ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์ž(๊ตฌ๋…์ž) ๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.

๋Œ€์‹  ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๊ฐ€ ๊ฒŒ์‹œ์ž์™€ ๊ตฌ๋…์ž ๊ฐ„์˜ ํ†ต์‹ ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” ๊ฒŒ์‹œ์ž๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋˜๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ณ , ๊ตฌ๋…์ž์—๊ฒŒ ์ง์ ‘ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ธŒ๋กœ์ปค๋Š” ๊ฒŒ์‹œ์ž์™€ ๊ตฌ๋…์ž๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌํ• ๊นŒ?

๊ณต๊ฐ„ ๋ถ„๋ฆฌ

๊ฒŒ์‹œ์ž์™€ ๊ตฌ๋…์ž๋Š” ์„œ๋กœ์˜ ๋„คํŠธ์›Œํฌ ์œ„์น˜๋ฅผ ๋ชจ๋ฅด๋ฉฐ, IP ์ฃผ์†Œ ๋˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์‹œ๊ฐ„ ๋ถ„๋ฆฌ

๊ฒŒ์‹œ์ž์™€ ๊ตฌ๋…์ž๋Š” ๋™์‹œ์— ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋™๊ธฐํ™” ๋ถ„๋ฆฌ

๊ฒŒ์‹œ์ž์™€ ๊ตฌ๋…์ž๋Š” ์„œ๋กœ๋ฅผ ์ค‘๋‹จ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. (๊ตฌ๋…์ž๋Š” ๊ฒŒ์‹œ์ž์˜ ๋ฐœ์‹ ์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์Œ)

MQTT์˜ ๊ตฌ์„ฑ ์š”์†Œ

MQTT๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ์™€ ๋ธŒ๋กœ์ปค๋ฅผ ์ •์˜ํ•˜์—ฌ ๊ฒŒ์‹œ/๊ตฌ๋… ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

MQTT ํด๋ผ์ด์–ธํŠธ

MQTT ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ MQTT ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ์— ์ด๋ฅด๋Š” ๋ชจ๋“  ๋””๋ฐ”์ด์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ ๊ฒŒ์‹œ์ž ์—ญํ• ์„, ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜์‹ ์ž ์—ญํ• ์„ ํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด MQTT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•˜๋Š” ๋ชจ๋“  ๋””๋ฐ”์ด์Šค๋ฅผ MQTT ํด๋ผ์ด์–ธํŠธ ๋””๋ฐ”์ด์Šค๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

MQTT ๋ธŒ๋กœ์ปค

MQTT ๋ธŒ๋กœ์ปค๋Š” ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์ด๋‹ค.

๋ธŒ๋กœ์ปค๋Š” ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ๋ฐ ํ•„ํ„ฐ๋ง, ๊ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์‹๋ณ„, ๋ฉ”์‹œ์ง€ ์ „์†ก ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ๋‹ด๋‹นํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํƒœ์Šคํฌ ๋˜ํ•œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • MQTT ํด๋ผ์ด์–ธํŠธ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐ ์ธ์ฆ
  • ์ถ”๊ฐ€ ๋ถ„์„์„ ์œ„ํ•ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ
  • ๋ˆ„๋ฝ๋œ ๋ฉ”์‹œ์ง€ ๋ฐ ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜ ์ฒ˜๋ฆฌ

MQTT ์—ฐ๊ฒฐ

ํด๋ผ์ด์–ธํŠธ์™€ ๋ธŒ๋กœ์ปค๋Š” MQTT ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” CONNECT ๋ฉ”์‹œ์ง€๋ฅผ **MQTT ๋ธŒ๋กœ์ปค๋กœ ๋ณด๋‚ด ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•œ๋‹ค.

๋ธŒ๋กœ์ปค๋Š” CONNACK ๋ฉ”์‹œ์ง€๋กœ ์‘๋‹ตํ•˜์—ฌ ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜์—ˆ์Œ์„ ํ™•์ธํ•œ๋‹ค.

MQTT ํด๋ผ์ด์–ธํŠธ์™€ ๋ธŒ๋กœ์ปค๋Š” ๋ชจ๋‘ TCP/IP ์Šคํƒ์ด ์žˆ์–ด์•ผ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ, ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ธŒ๋กœ์ปค์—๋งŒ ์—ฐ๊ฒฐํ•œ๋‹ค.

MQTT๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ• ๊นŒ?

๋‹ค์Œ์€ MQTT์˜ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ฐœ์š”์ด๋‹ค.

  • MQTT ํด๋ผ์ด์–ธํŠธ๊ฐ€ MQTT ๋ธŒ๋กœ์ปค์™€์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•จ
  • ์—ฐ๊ฒฐ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๊ฑฐ๋‚˜ ํŠน์ • ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ๋…ํ•˜๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • MQTT ๋ธŒ๋กœ์ปค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ ํ›„ ๋ฉ”์‹œ์ง€์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ตฌ๋…์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•จ

MQTT ์ฃผ์ œ

์ฃผ์ œ ๋Š” MQTT ๋ธŒ๋กœ์ปค๊ฐ€ MQTT ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ํ•„ํ„ฐ๋งํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.

์ฃผ์ œ๋Š” ํŒŒ์ผ ๋˜๋Š” ํด๋” ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ์œ ์‚ฌํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์ •๋ ฌ๋œ๋‹ค.

MQTT ๊ฒŒ์‹œ

MQTT ํด๋ผ์ด์–ธํŠธ๋Š” ์ฃผ์ œ ๋ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”์ดํŠธ ํ˜•์‹์œผ๋กœ ํฌํ•จ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒŒ์‹œํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ, XML ๋˜๋Š” JSON ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๊ฒฐ์ •ํ•œ๋‹ค.

MQTT ๊ตฌ๋…

MQTT ํด๋ผ์ด์–ธํŠธ๋Š” MQTT ๋ธŒ๋กœ์ปค์— SUBSCRIBE ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ๊ด€์‹ฌ ์ฃผ์ œ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ๋‹ค.

์ด ๋ฉ”์‹œ์ง€์—๋Š” ๊ตฌ๋…์˜ ๊ณ ์œ  ์‹๋ณ„์ž์™€ ๋ชฉ๋ก์ด ํฌํ•จ๋œ๋‹ค.

MQTT over WSS ๋ž€?

MQTT over WebSockers(WSS)๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์ง์ ‘ ์ˆ˜์‹ ํ•˜๋Š” MQTT ๊ตฌํ˜„์ด๋‹ค.

์ด MQTT ํ”„๋กœํ† ์ฝœ์€ JavaScript ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ •์˜ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•œ WSS ์ง€์›์„ ์ œ๊ณตํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ ํ”„๋กœํ† ์ฝœ์€ ํ‰์ƒ์‹œ์™€ ๊ฐ™์ด ์ž‘๋™ํ•˜์ง€๋งŒ, MQTT ๋ฉ”์‹œ์ง€์— ์ถ”๊ฐ€ ํ—ค๋”๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ WSS ํ”„๋กœํ† ์ฝœ๋„ ์ง€์›ํ•œ๋‹ค.

MQTT ํŽ˜์ด๋กœ๋“œ๊ฐ€ WSS ๋ด‰ํˆฌ๋กœ ํฌ์žฅ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

MQTT ๋Š” ์•ˆ์ „ํ•œ๊ฐ€?

MQTT ํ†ต์‹ ์€ SSL ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ IoT ๋””๋ฐ”์ด์Šค์—์„œ ์ „์†ก๋˜๋Š” ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•œ๋‹ค.

SSL ์ธ์ฆ์„œ์™€ ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ๋ธŒ๋กœ์ปค ๊ฐ„์— ID, ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์–ด๋–ป๊ฒŒ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ธ์ฆํ• ๊นŒ?

  • ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ
    • MQTT ๋ธŒ๋กœ์ปค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์•”ํ˜ธ์™€ ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ํ• ๋‹น๋˜๋Š” ๊ณ ์œ  ํด๋ผ์ด์–ธํŠธ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ธ์ฆํ•œ๋‹ค.
  • ์„œ๋ฒ„ ์ธ์ฆ
    • ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌํ˜„์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ ๋˜๋Š” DNS ์กฐํšŒ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ์ธ์ฆํ•œ๋‹ค.

MQTT๋Š” RESTful์ธ๊ฐ€?

MQTT๋Š” RESTful์ด ์•„๋‹ˆ๋‹ค!

  • REST
    • ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์— ๋Œ€ํ•œ ์•„ํ‚คํ…์ฒ˜ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ, ๋ฉ”์‹œ์ง€ ๋ฐœ์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„์˜ ์š”์ฒญ-์‘๋‹ต ํŒจํ„ด ํ†ต์‹ ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • MQTT
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ ๊ฒŒ์‹œ/๊ตฌ๋… ๋ชจ๋ธ ํ†ต์‹ ์„ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋ฉ”์‹œ์ง€๋ฅผ ํ‘ธ์‹œ ๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์ •๋œ TCP ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•˜๋‹ค.
    • MQTT ver.5๋Š” REST์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์š”์ฒญ/์‘๋‹ต ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค,
      • ์—ฌ๊ธฐ์„œ ๊ฒŒ์‹œ์ž๋Š” ํŠน์ˆ˜ํ•œ ์‘๋‹ต ์ฃผ์ œ๋ฅผ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์‹ ์ž๋Š” ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ ์ ˆํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•œ๋‹ค.

๊ฒฐ๋ก 

MQTT ๋Š” ๊ตญ์ œ ํ‘œ์ค€ํ™” ๋œ ๊ฒŒ์‹œ-๊ตฌ๋…(Publish-Subscribe) ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€ ์†ก์ˆ˜์‹  ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

์ž‘์€ ์ฝ”๋“œ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ์ด ์ œํ•œ๋˜๋Š” ์›๊ฒฉ ํ†ต์‹  ๋˜๋Š” IoT์™€ ๊ฐ™์ด ์ œํ•œ์ ์ด๊ฑฐ๋‚˜ ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์ „์†ก์˜ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ธ ๊ฒƒ์ด๋‹ค.

TCP/IP ํ”„๋กœํ† ์ฝœ ์œ„์—์„œ ๋™์ž‘ํ•˜์ง€๋งŒ, ๋™์‹œ์— ๊ต‰์žฅํžˆ ๊ฐ€๋ฒผ์šฐ๋ฉฐ, ๋งŽ์€ ํ†ต์‹  ์ œ์•ฝ๋“ค์„ ํ•ด๊ฒฐํ•ด์ค€๋‹ค.

ํ•˜์ง€๋งŒ, ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฐ€๋ฒผ์šด ๋งŒํผ ๋ฉ”์‹œ์ง€ ์œ ํ˜•์ด๋‚˜ QoS(์„œ๋น„์Šค ํ’ˆ์งˆ)์—๋Š” ์ œ์•ฝ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

MQTT๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? - MQTT ํ”„๋กœํ† ์ฝœ ์„ค๋ช… - AWS

[ํ†ต์‹  ์ด๋ก ] MQTT, MQTT Protocol (MQTT ํ”„๋กœํ† ์ฝœ) ์ด๋ž€? - 1 (์ด๋ก ํŽธ)

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ