IoT ํ”Œ๋žซํผ ์ถœ์‹œ EdgeX 2.0

IoT ์žฅ์น˜, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์„œ๋น„์Šค ๊ฐ„ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฐœ๋ฐฉํ˜• ๋ชจ๋“ˆ์‹ ํ”Œ๋žซํผ์ธ EdgeX 2.0 ์ถœ์‹œ๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋žซํผ์€ ํŠน์ • ๊ณต๊ธ‰์—…์ฒด์˜ ํ•˜๋“œ์›จ์–ด ๋ฐ ์šด์˜ ์ฒด์ œ์— ๋ฌถ์—ฌ ์žˆ์ง€ ์•Š์œผ๋ฉฐ Linux Foundation์˜ ํ›„์›์„ ๋ฐ›๋Š” ๋…๋ฆฝ์ ์ธ ์ž‘์—… ๊ทธ๋ฃน์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ๊ตฌ์„ฑ ์š”์†Œ๋Š” Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

EdgeX๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด IoT ์žฅ์น˜๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์„ผ์„œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์žฅ์น˜์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ •๋ณด์˜ ๊ธฐ๋ณธ ์ฒ˜๋ฆฌ, ์ง‘๊ณ„ ๋ฐ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์—ฌ IoT ์žฅ์น˜ ๋„คํŠธ์›Œํฌ์™€ ๋กœ์ปฌ ์ œ์–ด ์„ผํ„ฐ ๋˜๋Š” ํด๋ผ์šฐ๋“œ ๊ด€๋ฆฌ ์ธํ”„๋ผ ๊ฐ„์˜ ์ค‘๊ฐ„ ๋งํฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ํŒจํ‚ค์ง€๋œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. IoT ์žฅ์น˜์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์€ TCP/IP ๋„คํŠธ์›Œํฌ ๋ฐ ํŠน์ •(๋น„IP) ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์„  ๋˜๋Š” ๋ฌด์„  ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IoT ํ”Œ๋žซํผ ์ถœ์‹œ EdgeX 2.0

๋‹ค์–‘ํ•œ ๋ชฉ์ ์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์ฒด์ธ์œผ๋กœ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒซ ๋ฒˆ์งธ ๋งํฌ์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์žฅ์น˜ ๊ด€๋ฆฌ(์‹œ์Šคํ…œ ๊ด€๋ฆฌ) ๋ฐ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋‘ ๋ฒˆ์งธ ๋งํฌ(ํฌ๊ทธ ์„œ๋ฒ„)์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ๋ชจ๋“ˆ์‹์ด๋ฏ€๋กœ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ์ด ๊ฐœ๋ณ„ ๋…ธ๋“œ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ ๋Œ€๊ทœ๋ชจ IoT ๋„คํŠธ์›Œํฌ์˜ ๊ฒฝ์šฐ ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IoT ํ”Œ๋žซํผ ์ถœ์‹œ EdgeX 2.0

EdgeX๋Š” IoT ์žฅ์น˜์šฉ Dell Edge Gateway์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋ฐฉํ˜• Fuse IoT ์Šคํƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋žซํผ์€ Linux, Windows ๋˜๋Š” macOS๋ฅผ ์‹คํ–‰ํ•˜๋Š” x86 ๋ฐ ARM CPU ๊ธฐ๋ฐ˜ ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ํ•˜๋“œ์›จ์–ด์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์—๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„, ๋ณด์•ˆ, ๊ด€๋ฆฌ ๋ฐ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Java, Javascript, Python, Go ๋ฐ C/C++ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ๋งŒ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IoT ์žฅ์น˜ ๋ฐ ์„ผ์„œ์šฉ ๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ SDK๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ :

  • Angular JS ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์ƒˆ๋กœ์šด ์›น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด GUI์˜ ์žฅ์  ์ค‘์—๋Š” ์†์‰ฌ์šด ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ๊ธฐ๋Šฅ ํ™•์žฅ, ์ƒˆ ์žฅ์น˜ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ๋งˆ๋ฒ•์‚ฌ, ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋„๊ตฌ, ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค, ์„œ๋น„์Šค ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ(๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„, CPU ๋กœ๋“œ ๋“ฑ).
    IoT ํ”Œ๋žซํผ ์ถœ์‹œ EdgeX 2.0
  • ์ด์ œ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ๊ณผ ๋…๋ฆฝ์ ์ด๊ณ  ๋” ์•ˆ์ „ํ•˜๊ณ  ์ฒด๊ณ„์ ์ด๋ฉฐ(JSON ์‚ฌ์šฉ) ์„œ๋น„์Šค์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ž˜ ์ถ”์ ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก API๋ฅผ ์™„์ „ํžˆ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํšจ์œจ์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ๊ฒฝ๋Ÿ‰ ๊ตฌ์„ฑ์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ๋‹ด๋‹นํ•˜๋Š” Core Data ๊ตฌ์„ฑ์š”์†Œ๋Š” ์ด์ œ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด, ์ €์žฅํ•  ํ•„์š” ์—†์ด ์„ผ์„œ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)
  • ์‹ ๋ขฐ์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ ์„œ๋น„์Šค ํ’ˆ์งˆ(QoS)์„ ๋ณด์žฅํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฐ”์ด์Šค ์„œ๋น„์Šค(์„ผ์„œ ๋ฐ ๋””๋ฐ”์ด์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋””๋ฐ”์ด์Šค ์„œ๋น„์Šค)์—์„œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ์ถ•์  ์„œ๋น„์Šค(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ, ์ด์ œ ๋ฌถ์ด์ง€ ์•Š๊ณ  ๋ฉ”์‹œ์ง€ ๋ฒ„์Šค(Redis Pub/Sub, 0MQ ๋˜๋Š” MQTT)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP๋กœ - REST ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ˆ˜์ค€์—์„œ QoS ์šฐ์„ ์ˆœ์œ„๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๋ฐ์ดํ„ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์„ ํƒ์ ์ธ ๋ณต์ œ๋ฅผ ํ†ตํ•ด ์žฅ์น˜ ์„œ๋น„์Šค์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์„œ๋น„์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ „์†กํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. REST ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก ์ง€์›์€ ์œ ์ง€๋˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
    IoT ํ”Œ๋žซํผ ์ถœ์‹œ EdgeX 2.0
  • Vault์™€ ๊ฐ™์€ ๋ณด์•ˆ ์ €์žฅ์†Œ์—์„œ ๋น„๋ฐ€ ๋ฐ์ดํ„ฐ(๋น„๋ฐ€๋ฒˆํ˜ธ, ํ‚ค ๋“ฑ)๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ”์šฉ ๋ชจ๋“ˆ(๋น„๋ฐ€ ๊ณต๊ธ‰์ž)์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Consul ๋„๊ตฌ๋Š” ์„œ๋น„์Šค ๋ฐ ์„ค์ •์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์•ก์„ธ์Šค ๋ฐ ์ธ์ฆ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. API Gateway๋Š” Consul API ํ˜ธ์ถœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค ๋ฐ ์„œ๋น„์Šค ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ชจ๋“œ์—์„œ Redis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • API ๊ฒŒ์ดํŠธ์›จ์ด(Kong) ๊ตฌ์„ฑ์ด ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์„ผ์„œ ๋ฐ ์žฅ์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ •์˜ํ•˜๋Š” ๋‹จ์ˆœํ™”๋œ ์žฅ์น˜ ํ”„๋กœํ•„์ž…๋‹ˆ๋‹ค. ํ”„๋กœํ•„์€ YAML ๋ฐ JSON ํ˜•์‹์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    IoT ํ”Œ๋žซํผ ์ถœ์‹œ EdgeX 2.0
  • ์ƒˆ๋กœ์šด ์žฅ์น˜ ์„œ๋น„์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค:
    • ์ œํ•œ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•œ CoAP(C๋กœ ์ž‘์„ฑ).
    • GPIO(์ผ๋ฐ˜ ํ•€ ์ž…๋ ฅ/์ถœ๋ ฅ) ํฌํŠธ๋ฅผ ํ†ตํ•ด Raspberry Pi ๋ณด๋“œ๋ฅผ ํฌํ•จํ•œ ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ ๊ธฐํƒ€ ์žฅ์น˜์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ GPIO(Go๋กœ ์ž‘์„ฑ).
    • RFID ํƒœ๊ทธ ๋ฆฌ๋”์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ LLRP(Low Level Reader Protocol) ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•œ LLRP(Go๋กœ ์ž‘์„ฑ).
    • UART(Universal Asynchronous Receiver/Transmitter)๋ฅผ ์ง€์›ํ•˜๋Š” UART(Go๋กœ ์ž‘์„ฑ).
  • ํด๋ผ์šฐ๋“œ ์‹œ์Šคํ…œ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ›„์† ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ๋‚ด๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค์˜ ๊ธฐ๋Šฅ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์žฅ์น˜ ํ”„๋กœํ•„ ์ด๋ฆ„ ๋ฐ ๋ฆฌ์†Œ์Šค ์œ ํ˜•๋ณ„๋กœ ์„ผ์„œ์˜ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋กœ ์—ฌ๋Ÿฌ ์ˆ˜์‹ ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ฒ„์Šค๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž์‹ ๋งŒ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์šฉ์œผ๋กœ ์„ ํƒ๋œ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” IANA(Internet Assigned Numbers Authority)์—์„œ ๊ฐœ์ธ ์šฉ๋„๋กœ ๊ถŒ์žฅํ•˜๋Š” ๋ฒ”์œ„์™€ ์ •๋ ฌ๋˜์–ด ๊ธฐ์กด ์‹œ์Šคํ…œ๊ณผ์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€