IoT Sensor Data Pipeline for Smart Factories

๐Ÿ—บ๏ธ Overview

์„ค๋น„์˜ ์˜จ๋„ ์„ผ์„œ์—์„œ ์˜ค๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์‹œ๊ฐํ™”ํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ณ  ๋‚œ ํ›„ ์ฒซ ํšŒ์‚ฌ, ์ฒซ ์ธํ„ด์ด์—ˆ๋‹ค.

๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ๋งŽ์€ ๊ฒƒ๋„ ์•„๋‹ˆ์—ˆ๊ธฐ์— ํšŒ์‚ฌ์— ํ”ผํ•ด๊ฐ€ ๊ฐˆ๊นŒ๋ด ๊ฑฑ์ •์„ ์—„์ฒญ ํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํšŒ์‚ฌ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ์Šคํƒ์ด๋‚˜ ๋„๋ฉ”์ธ ์ง€์‹๊ฐ™์€ ๊ฒƒ๋“ค์„ ๊ณต๋ถ€ํ–ˆ๋‹ค.

์ง€๊ธˆ ์ƒ๊ฐํ•˜๋ฉด ๋…ธ๋ จํ•จ๋ณด๋‹ค ์—ด์ •์ด ์•ž์„ฐ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

๋‹น์‹œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋ฐฐ์šด ๊ฒƒ์ด ์ •๋ง ๋งŽ์•˜๋‹ค.

1๏ธโƒฃ ์ฒซ ๋ฒˆ์งธ๋กœ ์‹ค๋ฌด ์—ญ๋Ÿ‰์ด ์„ฑ์žฅํ•˜์˜€๋‹ค.

ํŒ€ ๋‚ด ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์—†์—ˆ๋‹ค.

๊ฐœ๋ฐœ์„ ์ž˜ํ•˜๋Š” ๋™๋ฃŒ๋“ค์€ ์žˆ์—ˆ์ง€๋งŒ ์ด๋Œ์–ด์„œ ๋ฐฉํ–ฅ์„ ํ™•์‹คํ•˜๊ฒŒ ์ง€์‹œํ•ด์ค„ ์‹œ๋‹ˆ์–ด๊ฐ€ ์—†๋‹ค๋ณด๋‹ˆ ํ”„๋กœ์ ํŠธ ๋งค๋‹ˆ์ง•์— ์–ด๋ ค์›€์„ ๋งŽ์ด ๊ฒช์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๊ณ ๊ฐ๊ณผ์˜ ์†Œํ†ต, ์„œ๋น„์Šค ๊ธฐ๋Šฅ๋ช…์„ธ, ๋ฌธ์„œํ™”, ์—ญํ•  ๋ฐฐ๋ถ„, ์ผ์ • ๊ด€๋ฆฌ, ์†Œํ†ต, ๋ฐฐํฌ, ํ”ผ๋“œ๋ฐฑ, ์šด์˜ ๋“ฑ๋“ฑ ์ ์–ด๋ณด๋‹ˆ ๊ฑฐ์˜ ์ „๋ฐ˜์ ์ธ ๋ถ€๋ถ„์—์„œ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค ํ•˜ํ•˜..

ํŒ€ ๋‚ด์—์„œ๋„ ๋‚˜๋ฆ„๋Œ€๋กœ ๋ฌธ์ œ๋ฅผ ์ธ์ง€ํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ๋…ธ๋ ฅ๋„ ๋งŽ์ด ํ–ˆ๋‹ค. ๋ฏธํŒ…์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๋งค์ฃผ ๊ฐœ์„ ์ ๋“ค์„ ์ฐพ์•„๊ฐ”๊ณ , ์Šฌ๋ž™์œผ๋กœ ์ง„ํ–‰์ƒํ™ฉ๋„ ์ž์ฃผ ๊ณต์œ ํ•˜๊ณ , Jira/Confluence๋„ ๋„์ž…ํ•˜๊ณ , Gitlab Merge Request๋„ ๋„์ž…ํ•˜๊ณ ... ํŒ€์› ์ค‘ ๊ฒฝํ—˜์ด ๊ทธ๋‚˜๋งˆ ๋งŽ์œผ์‹  ๋ถ„์ด ์ ๊ทน์ ์œผ๋กœ ๋ฆฌ๋”ฉํ•˜์‹œ๋ ค๊ณ  ๋…ธ๋ ฅ๋„ ๋งŽ์ด ํ–ˆ๋‹ค.

End-to-End ๊ณผ์ •์„ ์ง์ ‘ ๊ฒช์œผ๋ฉด์„œ ์Šคํƒ€ํŠธ์—…์—์„œ ์ „๋ฐ˜์ ์ธ ์‹ค๋ฌด ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ๋ชธ์— ์ตํ˜”๋‹ค.

๋˜ํ•œ ์Šคํƒ€ํŠธ์—…์ธ ๋งŒํผ ํŠน์ • ๋ถ„์•ผ์— ํ•œ์ •๋˜์ง€ ์•Š๊ณ  BackEnd, FrontEnd, DevOps๋ฅผ ์ง์ ‘ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋˜ ๊ฒƒ๋„ ์ดํ›„์— ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค.

์ดํ›„ ๋‘ ๋ฒˆ์งธ ํšŒ์‚ฌ์—์„œ ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ํ† ๋Œ€๋กœ ํšจ์œจ์ ์œผ๋กœ ์—…๋ฌด๋ฅผ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

2๏ธโƒฃ ๋‘ ๋ฒˆ์งธ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์ด๋‹ค. (๋‹น์‹œ ๊ฐ–์ท„์œผ๋ฉด ๋” ์ข‹์•˜์œผ๋ ค๋งŒ ใ… .ใ… )

์นจ์ฐฉํ•˜๊ณ  ์ฐจ๋ถ„ํ•˜๊ฒŒ ์‹ค์งˆ์ ์œผ๋กœ ๋ฌธ์ œ์™€ ์›์ธ์„ ๋ถ„์„ํ•˜๊ณ , ํ•˜๋‚˜ ํ•˜๋‚˜ ํ•ด๊ฒฐํ•˜๋Š” ๊ฑธ ๋งํ•˜๋Š”๊ฑฐ๋‹ค.

  • ์ฃผ์˜ : ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ƒ‰์ฒ ํ•˜๊ฒŒ ํŒ๋‹จํ•˜๊ธฐ

  • ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ๊ตฌ๊ธ€๋ง ๋Šฅ๋ ฅ์ด ๋  ์ˆ˜๋„, ๊ฒฝํ—˜์ด ๋  ์ˆ˜๋„, ์งˆ๋ฌธํ•˜๋Š” ๊ฒƒ์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ธฐํƒ€ ๋“ฑ๋“ฑ

  • ๊ทธ๋ฆฌ๊ณ  ์ด ๊ณผ์ •์ด ๋ƒ‰์ฒ ํ•˜๊ณ , ์ •ํ™•ํ•˜๊ณ , ๋น ๋ฅผ์ˆ˜๋ก ์ข‹๋‹ค. ์‹ค์ฒœ๋ ฅ๊ณผ ์‹คํ–‰๋ ฅ์€ ํ•„์ˆ˜๋‹ค.

์ธํ„ด ๋‹น์‹œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋Šฅ๋ ฅ๋„ ๋ถ€์กฑํ•˜๊ณ  ๋ฉ˜ํƒˆ ๊ด€๋ฆฌ ๋Šฅ๋ ฅ๋„ ์—†์—ˆ๋‹ค.

  • ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์ด๋‚˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ž˜ํผ๋Ÿฐ์Šค๋ฅผ ๋ฐค์ƒˆ ์ฐพ์•˜๋Š”๋ฐ๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ๋ชปํ•ด ๋ช‡ ์ฃผ๋™์•ˆ ๋ถ™๋“ค๊ณ  ๊ณ ์ƒํ–ˆ๋˜ ์ ๋„ ์žˆ์—ˆ๋‹ค.

  • ๋˜ ๋‹ค๋ฅธ ์ฐ๋กœ๋Š” GCP ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋‹จ์œ„๋ฅผ ์ž˜๋ชป๋ณด๊ณ  1000์› ๋‚˜์˜จ๊ฑธ 100๋งŒ์›์œผ๋กœ ์ž˜๋ชป๋ณด๊ณ  ์ˆœ๊ฐ„ ์‹ฌ์žฅ ๋‚ด๋ ค์•‰์•˜๋‹ค.

ํŒ€์›๋“คํ•œํ…Œ ๋„ˆ๋ฌด ๋ฏธ์•ˆํ–ˆ๊ณ  ๋‚˜ ์ž์‹ ๋„ ์‹ซ์–ด์กŒ๋‹ค. ์‚ฝ์งˆ๋„ ์ •๋ง ๋งŽ์ด ํ–ˆ๋Š”๋ฐ, ์‹œ๊ฐ„ ์ง€๋‚˜๊ณ  ๋ฉ˜ํ† ๋ง๋„ ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๊ฒฝํ—˜์„ ํ•˜๋‹ค๋ณด๋‹ˆ ์ € ๋•Œ ๊ฒฝํ—˜ํ•œ ๊ฒƒ๋“ค์ด ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ฐ‘๊ฑฐ๋ฆ„์ด ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

๋˜ํ•œ ๊ฐœ๋ฐœ์„ ์ž˜ํ•˜๋Š” ํŒ€์›๋“ค์„ ๋ณด๋ฉด์„œ๋„ ๋งŽ์ด ๋ฐฐ์› ๋‹ค. ์ž˜ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ๋ณด๊ณ  ๋ฐฐ์šฐ๋Š”๊ฒŒ ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ๋А๊ผˆ๋‹ค.

๋Šฆ์—ˆ์ง€๋งŒ ๋‹ค๋“ค ๊ณ ๋ง™๋‹ค ํ•˜ํ•˜ ..

๋‹ค์‹œ ํ”„๋กœ์ ํŠธ ์–˜๊ธฐ๋กœ ๋Œ์•„์˜ค์ž.

์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ '์„ผ์„œ์—์„œ ์˜ค๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์‹œ๊ฐํ™”ํ•˜๋Š” ์„œ๋น„์Šค'๋‹ค.

๋‚ด๊ฐ€ ๋งก์€ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

  • ์‹ค์‹œ๊ฐ„ ๊ธฐ๊ธฐ์˜ ์˜จ๋„ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

    • GCP์˜ BigQuery์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Google Data Studio๋ฅผ ๋‚ด๋ณด๋‚ธ ํ›„ ์ฐจํŠธ๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜จ๋„ ์‹œ๊ฐํ™”

  • Backend ์„œ๋น„์Šค ๋ฐฐํฌ

    • Gitlab, Gitlab CI๋ฅผ ํ†ตํ•ด CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•(build, push, deploy)

    • GCP GKE(Google Kubernetes Engine)์— Spring Boot framework๋ฅผ ์‚ฌ์šฉํ•œ ์„œ๋น„์Šค ๋ฐฐํฌ

์•„๋ž˜๋Š” ํŒ€์›์ด ์ง„ํ–‰ํ•œ ๋ถ€๋ถ„์ด๋‹ค. ๊ทธ ํŒ€์›์˜ ์ฝ”๋“œ ์Šคํƒ€์ผ์ด๋‚˜ ๋ž˜ํผ๋Ÿฐ์Šค ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹, ์ฝ”๋”ฉํ•˜๋Š” ๊ด€์  ๋“ฑ ๋งŽ์ด ๋ฐฐ์› ๋‹ค.

  • IoT Sensor ๋ฐ์ดํ„ฐ ๋กœ๋“œ API ๊ฐœ๋ฐœ

    • Gateway์—์„œ ์˜ค๋Š” ์˜จ๋„ ๋ฐ์ดํ„ฐ๋ฅผ BIgQuery๋กœ ๋กœ๋“œํ•˜๋Š” RESTful API ๊ฐœ๋ฐœ

    • Express.js๋กœ PoC๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ , ์ดํ›„ ํ™•์žฅ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด Spring Boot๋กœ ๋ฆฌํŒฉํ„ฐ๋ง

๋” ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์„ ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Spring Boot API gateway ๊ฐœ๋ฐœ

  • GCP BigQuery์— ๋ฐ์ดํ„ฐ ์ €์žฅ, ํ™œ์šฉํ•˜๋ฉฐ Datawarehouse ์ดํ•ดํ•˜๊ธฐ

  • GCP์˜ BI ํˆด Data Studio๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”ํ•˜๊ธฐ

  • GCP, Gitlab ๊ธฐ๋ฐ˜ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑํ•˜๊ธฐ

Last updated