Skip to Content
IoT ์•ฑ ๊ฐœ๋ฐœ์•ฑ ๊ตฌ์กฐ

์•ฑ ๊ตฌ์กฐ

๋ชจ๋“  IronFlock ์•ฑ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์™€ ์„ ํƒ์ ์ธ .ironflock ๊ตฌ์„ฑ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ Git์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ๋˜๋Š” ํด๋”์ž…๋‹ˆ๋‹ค.

๋””๋ ‰ํ„ฐ๋ฆฌ ๋ ˆ์ด์•„์›ƒ

my-app/ โ”œโ”€โ”€ Dockerfile # ํ•„์ˆ˜: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ •์˜ โ”œโ”€โ”€ docker-compose.yml # ์„ ํƒ ์‚ฌํ•ญ: ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ์„ค์ • โ”œโ”€โ”€ main.py # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ (๋ชจ๋“  ์–ธ์–ด) โ”œโ”€โ”€ requirements.txt # ์˜์กด์„ฑ โ””โ”€โ”€ .ironflock/ โ”œโ”€โ”€ board-template.yml # ๋Œ€์‹œ๋ณด๋“œ ๋ ˆ์ด์•„์›ƒ โ”œโ”€โ”€ data-template.yml # ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ โ”œโ”€โ”€ env-template.yml # ์‚ฌ์šฉ์ž ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ โ”œโ”€โ”€ port-template.yml # ์›๊ฒฉ ์ ‘๊ทผ ํฌํŠธ ์ •์˜ โ””โ”€โ”€ ai-template.yml # AI ์—์ด์ „ํŠธ ์ •์˜

์•ฑ์˜ ์—ฌ์„ฏ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ

1. ์—ฃ์ง€ ์ฝ”๋“œ

ํ•ต์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ž…๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” ๋””๋ฐ”์ด์Šค์˜ Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์„ผ์„œ, PLC, ์นด๋ฉ”๋ผ, ๋˜๋Š” ์—ฐ๊ฒฐ๋œ ํ•˜๋“œ์›จ์–ด์™€์˜ ํ†ต์‹ ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์—ฃ์ง€ ์ฝ”๋“œ๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด โ€” Python, JavaScript, Go, Rust, C++, ๋˜๋Š” Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ์–ธ์–ด โ€” ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋ณด๋“œ (์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค)

๋…ธ์ฝ”๋“œ Board Editor๋กœ ๊ตฌ์ถ•๋œ ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ์ž…๋‹ˆ๋‹ค. ๋ณด๋“œ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ๋””๋ฐ”์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

๋ณด๋“œ ๊ตฌ์„ฑ์€ board-template.yml์— ์ €์žฅ๋˜๋ฉฐ ์—๋””ํ„ฐ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

3. ๋ฐ์ดํ„ฐ ์ €์žฅ

๊ฐ ํ”„๋กœ์ ํŠธ๋Š” ์ž์ฒด ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(TimescaleDB๋กœ ๊ตฌ๋™)๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์•ฑ์ด data-template.yml์—์„œ ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์„ค์น˜ํ•  ๋•Œ ํ•ด๋‹น ํ…Œ์ด๋ธ”์ด ์ž๋™์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋น„๊ณต๊ฐœ โ€” ๊ฐœ๋ฐœ์ž๋Š” ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

4. ๋ฉ”์‹œ์ง• ์˜์—ญ

์„ค์น˜๋˜๋ฉด ์•ฑ์€ ๋‹ค์Œ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐœ์ธ ๋ฉ”์‹œ์ง€ ์˜์—ญ์„ ์–ป์Šต๋‹ˆ๋‹ค:

  • ์—ฃ์ง€ ๋””๋ฐ”์ด์Šค์˜ ๋ชจ๋“  ์•ฑ ์ธ์Šคํ„ด์Šค
  • ํ”„๋กœ์ ํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ๋ณด๋“œ UI

ํ†ต์‹ ์€ IronFlock SDK(ironflock-py for Python, ironflock-js for JavaScript, ironflock-go (github.com/ironflock/sdk-go) for Go)๋ฅผ ํ†ตํ•ด WAMP(Web Application Messaging Protocol)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

5. ์›๊ฒฉ ์ ‘๊ทผ

port-template.yml์—์„œ ํฌํŠธ์™€ ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•˜์—ฌ ๋””๋ฐ”์ด์Šค ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ณด์•ˆ ํ„ฐ๋„๋ง์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ๋””๋ฐ”์ด์Šค์— ์•ฑ์„ ์„ค์น˜ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ํ„ฐ๋„์ด ์ผœ์ง€๋ฉฐ, network ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” ๋””๋ฐ”์ด์Šค๋ณ„๋กœ ํ„ฐ๋„์„ ๊ป๋‹ค๊ฐ€ ๋‹ค์‹œ ์ผค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์ ‘๊ทผ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

6. AI ์—์ด์ „ํŠธ

ai-template.yml์„ ํ†ตํ•ด ๋„๋ฉ”์ธ๋ณ„ AI ์—์ด์ „ํŠธ๋ฅผ ๋…ธ์ถœํ•˜์—ฌ IronFlock AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. AI ๊ธฐ๋Šฅ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋””๋ฐ”์ด์Šค์˜ ์˜๊ตฌ ์ €์žฅ์†Œ

๊ธฐ๋ณธ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋Š” ์žฌ์‹œ์ž‘ ์‹œ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์žฌ์‹œ์ž‘ ํ›„์—๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค:

๊ฒฝ๋กœ๋ฒ”์œ„
/data์ด ์•ฑ์—๋งŒ ๋น„๊ณต๊ฐœ โ€” ๋‹ค๋ฅธ ์•ฑ์€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ
/shared๋””๋ฐ”์ด์Šค์˜ ๋ชจ๋“  ์•ฑ ๊ฐ„์— ๊ณต์œ 

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์–ด๋–ค ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๋“  ์•ฑ์€ /data์— ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker Compose๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ docker-compose.yml์—์„œ ์˜๊ตฌ ๋ณผ๋ฅจ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด ์ ‘๊ทผ

์•ฑ์ด ๋กœ์ปฌ ํ•˜๋“œ์›จ์–ด(์„ผ์„œ, ์นด๋ฉ”๋ผ, ์‹œ๋ฆฌ์–ผ ๋””๋ฐ”์ด์Šค)์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํŠน๊ถŒ ์ ‘๊ทผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. data-template.yml์— ์„ ์–ธํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์„ค์น˜ํ•  ๋•Œ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹จ์ผ ์ด๋ฏธ์ง€ ์•ฑ์—์„œ๋Š” ๋””๋ฐ”์ด์Šค์˜ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด /dev์— ๋งˆ์šดํŠธ๋ฉ๋‹ˆ๋‹ค.

Last updated on