๐Ÿ› Data Flow Architecture

Architectural Styles

8 minute read

Data Flow Architecture

  • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์—ฐ์†์ ์ธ ํ๋ฆ„์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ๋ณ€ํ˜•์ด ํŠน์ง•์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ๋ช…์‹œ์ ์ด๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๊ฐ„ ๋‹ค๋ฅธ ์ƒํ˜ธ์ž‘์šฉ์€ ์—†๋‹ค.

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

Batch Sequential Style

  • ๋ณดํ†ต ์›น์„œ๋น„์Šค ๊ด€์ ์—์„œ๋Š” ์š”์ฒญ-์‘๋‹ต ํ˜•์‹์ด ์•„๋‹ˆ๋ผ ์‘๋‹ต์ด ์—†๋Š” ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค.

## ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

ํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ง‘๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

โ–ก ### ์š”์†Œ

โˆŽ ๊ตฌ์„ฑ ์š”์†Œ: ๋…๋ฆฝ ํ”„๋กœ๊ทธ๋žจ
โˆŽ ์ปค๋„ฅํ„ฐ: ํŒŒ์ผ
โ–ก ๋ฐ์ดํ„ฐ๋Š”
๋Œ€๋ถ€๋ถ„ ํŒŒ์ผ ํ˜•ํƒœ์˜ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.
โ–ก ### ๊ด€๊ณ„

โˆŽ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ƒ์„ฑ๋œ ํŒŒ์ผ์€
๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์— ์ž…๋ ฅ
โ–ก ### ์ œ์•ฝ

โˆŽ ๊ฐ ํ”„๋กœ๊ทธ๋žจ์€
๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘

ํ˜œํƒ

โˆŽ ๊ฐ„๋‹จํ•œ ๊ตฌ์„ฑ
โˆŽ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„์˜ ์žฌ์‚ฌ์šฉ
โˆŽ I/O ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋ฅผ ์‰ฝ๊ฒŒ ๊ต์ฒด
โ–ก ### ์•ฝ์ 

โˆŽ ๋†’์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„
โˆŽ ๋‚ฎ์€ ์ฒ˜๋ฆฌ๋Ÿ‰
โˆŽ ๋™์‹œ์„ฑ ์—†์Œ
โˆŽ ๋น„๋Œ€ํ™”ํ˜•

Pipe and Filter Style

์ด ์•„ํ‚คํ…์ฒ˜์˜ ์ฃผ์š” ํŠน์ง•์€ ๋™์‹œ์„ฑ๊ณผ
์ฆ๊ฐ€๋œ ์‹คํ–‰ .
โˆŽ ๋ฃจํ”„๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ŠคํŠธ๋ฆผํ˜•ํƒœ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ
  • ๋ฐฉ๋ฒ”์นด๋ฉ”๋ผ๋ผ๋˜์ง€ => ์˜์ƒ ์ŠคํŠธ๋ฆผ์ด ํ˜๋Ÿฌ๋“ค์–ด์˜ฌ๋•Œ ํ•„ํ„ฐ๋กœ CNN์ด๋ผ๋˜์ง€ ์ด๋Ÿฐ ๋А๋‚Œ
  • ์‚ฌ์šฉ์ž๋ž‘ ์ธํ„ฐ๋ ‰์…˜ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ญ”ใ„ฑ ใ…์–ด๋ ต๋‹ค


ํ•„ํ„ฐ 2,3 ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

  • ๋‹จ์  : ํ•„ํ„ฐ๊ฐ„ ์ •๋ณด ๊ณต์œ ๊ฐ€ ์–ด๋ ต๋‹ค. ๊ทธ๋ƒฅ ํ˜๋Ÿฌ๋“ค์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ๋งŒ ์•Œ์ˆ˜์žˆ๋‹ค.

์š”์†Œ

โˆŽ ๊ตฌ์„ฑ ์š”์†Œ: ํ•„ํ„ฐ
โ–ก ์†Œ์Šค ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€ ๋ฅผ ์‹ฑํฌ ๋ฐ์ดํ„ฐ๋กœ ์ ์ง„์ ์œผ๋กœ ๋ณ€ํ™˜
โ–ก ๋‘ ์ข…๋ฅ˜์˜ ํ•„ํ„ฐ โ€“ ๋Šฅ๋™ ํ•„ํ„ฐ ์™€ ์ˆ˜๋™ ํ•„ํ„ฐ
โˆŽ ์ปค๋„ฅํ„ฐ: ํŒŒ์ดํ”„
โ–ก ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„, ์ˆœ์„œ ๋ณด์กด, ๋ฐ์ดํ„ฐ ๋ณด์กด
โ–ก ### ๊ด€๊ณ„

โˆŽ ํŒŒ์ดํ”„์˜ ์†Œ์Šค ๋์ด ํ•„ํ„ฐ์˜
์ถœ๋ ฅ ํฌํŠธ
โˆŽ ํŒŒ์ดํ”„์˜ ์‹ฑํฌ ๋์ด ํ•„ํ„ฐ์˜ ์ž…๋ ฅ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
ํฌํŠธ.
โ–ก ### ์ œ์•ฝ

โˆŽ ํ•„ํ„ฐ๋Š” ๋…๋ฆฝ ์—”ํ„ฐํ‹ฐ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

=> ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ ์ธํ„ฐ์…‰ํ„ฐ๋„ ์ด ๊ตฌ์กฐ์ธ๊ฐ€?

ํ˜œํƒ

โˆŽ ๊ฐ„๋‹จํ•œ ๊ตฌ์„ฑ
โˆŽ ํ•„ํ„ฐ ์žฌ์‚ฌ์šฉ
โˆŽ ์‹œ์Šคํ…œ ์œ ์ง€ ๋ฐ ๊ฐœ์„  ์šฉ์ด
โˆŽ ํ•„ํ„ฐ์˜ ๋ถ„์‚ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ
โ–ก ### ์•ฝ์ 

โˆŽ Interactive I/O๋ฅผ ์ž˜ ๋‹ค๋ฃจ์ง€ ๋ชปํ•จ
โˆŽ ๋งŽ์€ ์ˆ˜์˜ ๋…๋ฆฝ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ๋‹นํ•œ ์–‘์˜ ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณ„์‚ฐ ์˜ค๋ฒ„ํ—ค๋“œ
โˆŽ ํŒŒ์ดํ”„ ๋ฐ ํ•„ํ„ฐ ์‹œ์Šคํ…œ์€ ์žฅ๊ธฐ ์‹คํ–‰ ๊ณ„์‚ฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โˆŽ ๋‚ฎ์€ ๋‚ด๊ฒฐํ•จ์„ฑ

Process Control Style

  • positive feedback, negative feedback์„ ์ฃผ๊ณ ๋ฐ›๋Š”๊ฑฐ ๊ฐ™์€ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ

๋ฐ์ดํ„ฐ ํ๋ฆ„์€ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์„ ์ œ์–ดํ•˜๋Š” ๋ณ€์ˆ˜ ์ง‘ํ•ฉ ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค .

์„ค์ •๊ฐ’

โˆŽ ์ œ์–ด ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์›ํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.
โ–ก ### ์กฐ์ž‘๋œ ๋ณ€์ˆ˜

โˆŽ ์กฐ์ž‘๋œ ๋ณ€์ˆ˜ ๊ฐ’์€ ์ปจํŠธ๋กค๋Ÿฌ์— ์˜ํ•ด ์กฐ์ • ๋˜๋Š” ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.
โ–ก ### ์ž…๋ ฅ๋ณ€์ˆ˜

โˆŽ ์ฒ˜๋ฆฌ ์žฅ์น˜์— ๋Œ€ํ•œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ
โ–ก ### ํ†ต์ œ๋ณ€์ˆ˜

โˆŽ ์ œ์–ด ๋ณ€์ˆ˜๋Š” ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์„ผ์„œ์— ์˜ํ•ด ์ธก์ •๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ ํฌ๋ฃจ์ฆˆ ์ปจํŠธ๋กค

๋น„๊ต

##๋ฌธ์ œ๊ฐ€ ์ˆœ์ฐจ์ ์ธ ์ƒํƒœ๋กœ ๋ถ„ํ•ด๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ,
โˆŽ ์ผ๊ด„ ์ˆœ์ฐจ ๋˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ ์•„ํ‚คํ…์ฒ˜ ๊ณ ๋ ค

โˆŽ ์ถ”๊ฐ€๋กœ ๊ฐ ๋‹จ๊ณ„๊ฐ€ ์ฆ๋ถ„์‹์ด๋ฏ€๋กœ ์ดํ›„ ๋‹จ๊ณ„๊ฐ€ ์ด์ „ ๋‹จ๊ณ„๋ณด๋‹ค ๋จผ์ € ์‹œ์ž‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. => ๋ฐฐ์น˜๋Š” ์ธํฌ๋ฆฌ๋ฉ˜ํƒˆํ•˜๋Š” ๊ฐœ๋…
โ–ก ํŒŒ์ดํ”„๋ผ์ธ ์•„ํ‚คํ…์ฒ˜ ๊ณ ๋ ค

โ–ก ### ๋ฌธ์ œ๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์—ฐ์† ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ๋ณ€ํ™˜๊ณผ ๊ด€๋ จ๋œ ๊ฒฝ์šฐ
โˆŽ ํŒŒ์ดํ”„ ๋ฐ ํ•„ํ„ฐ ์•„ํ‚คํ…์ฒ˜ ๊ณ ๋ ค

โ–ก ### ์‹œ์Šคํ…œ์ด ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์ œ์–ด ์ž‘์—…์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ
###If your system involves controlling action which is subject to unpredictable external perturbation

โˆŽ ํ์‡„ ๋ฃจํ”„ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ์•„ํ‚คํ…์ฒ˜ ๊ณ ๋ ค

Data Flow Software Architecture์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ณ , ํ•ด๋‹น ์•„ํ‚คํ…์ฒ˜์— ์†ํ•˜๋Š” ์ดํ‚คํ…์ฒ˜๋“ค์„ ์ •๋ฆฌํ•ด ๋ณด๋ คํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์ œ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์— ๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค. Data Flow Software Architecture๋Š” ์ „์ฒด ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ๋ณ€ํ™˜์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ์ง€์‹œํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์š”์†Œ๋กœ ๋ถ„๋ฆฌ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์ž…๋ ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ , ์ถœ๋ ฅ์œผ๋กœ ์—ฐ์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ถœ๋ ฅ๋œ ์—ฐ์‚ฐ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ ์ปดํฌ๋„ŒํŠธ์˜ ์ž…๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์ด Data Flow Software Architecture ๋“ค์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ ์„œ๋ธŒ์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ๋“ค ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์€ I/O ์ŠคํŠธ๋ฆผ, I/O ํŒŒ์ผ, ๋ฒ„ํผ๋‚˜ ํŒŒ์ดํ”„๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•„ํ‚คํ…์ฒ˜์—์„œ ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ๋Š” ์‚ฌ์ดํด์ด ์—†๋Š” ์„ ํ˜•์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ๋ž˜ํ”„ ํ† ํด๋กœ์ง€์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํ๋ฆ„์—์„œ๋Š” ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Data Flow Software Architecture์— ์†ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์กฐ 3๊ฐ€์ง€๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Batch Sequential Architecture

Pipe and Filter Architecture

Process Control Architecture

Data Flow Software Architecture์˜ ์žฅ์ ์€ ๋ณ€๊ฒฝ์šฉ์ด์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์ž…๋‹ˆ๋‹ค. ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ์„œ๋กœ๊ฐ„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ์„œ๋กœ๊ฐ„์˜ ์–ด๋– ํ•œ ์˜ํ–ฅ์—†์ด ์ƒˆ๋กœ์šด ์„œ๋ธŒ์‹œ์Šคํ…œ์œผ๋กœ ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ค‘๊ฐ„์— ์ƒˆ๋กœ์šด ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ์ถ”๊ฐ€๋„ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์•„ํ‚คํ…์ฒ˜์˜ ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ณ  ๊ฐ ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์—์„œ ์žฌ์‚ฌ์šฉ์ด ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์œ ์˜์ ์€ ์„œ๋ธŒ์‹œ์Šคํ…œ ์ถ”๊ฐ€ ์‹œ ์ถœ๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๊ฐ€ ๋‹ค์Œ ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ์ž…๋ ฅ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. A์—์„œ B ๋ชจ๋“ˆ๋กœ ํŒŒ์ผ์„ ์ด์šฉํ•ด ์ž…์ถœ๋ ฅ์„ ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜์—์„œ ์ค‘๊ฐ„์— S ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. ์ด๋•Œ S ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ์ถœ๋ ฅ์€ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ Buffer ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ถ”๊ฐ€๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ ์€ ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ํŠน์ง•์„ ์ƒ๊ฐํ–ˆ์„ ๋•Œ ์ „ํ†ต์ ์ธ ์ ˆ์ฐจ์ง€ํ–ฅ์  ๊ตฌ์กฐ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. Data Flow Software Architecture๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ Batch ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ Batch Sequential, Pipe and Filter, Process Control์„ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜: https://sonseungha.tistory.com/507?category=534435 [Developerโ€™s Delight]

Batch Sequential Architecture์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Batch Sequential Architecture๋Š” ์ด์ „ ๊ธ€์—์„œ ์ •๋ฆฌํ•œ Data Flow Software Architecture ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ๊ฐ€ ํ•„์š”ํ•˜์‹  ๋ถ„์€ ํ•ด๋‹น ๊ธ€์„ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

2019/03/10 - [Developerโ€™s Delight/Software Architecture] - [S/W Architecture] Data Flow Software Architectures

Batch Sequential Architecture๋Š” 1950~70๋…„๋Œ€์— ๋งŽ์ด ์‚ฌ์šฉ๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ํ•˜๋‚˜์˜ ์„œ๋ธŒ์‹œ์Šคํ…œ์—์„œ ๋‹ค์Œ ์„œ๋ธŒ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฐ์ดํ„ฐ ์ „์†ก ์„œ๋ธŒ์‹œ์Šคํ…œ ๋˜๋Š” ๋ชจ๋“ˆ์€ ์ด์ „ ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๊ธฐ ์ „์—๋Š” ์Šค์Šค๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ •๋ฆฌํ•˜์ž๋งŒ A-B ๋กœ ์—ฐ๊ฒฐ๋œ Batch Sequential Architecture์—์„œ B๋Š” A๊ฐ€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•œ ํ›„ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋˜๊ธฐ ์ „๊นŒ์ง€ ์Šค์Šค๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ด ์ค‘๊ฐ„์ค‘๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ์•„๋‹Œ ํ•˜๋‚˜์˜ ์„œ๋ธŒ์‹œ์Šคํ…œ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ ์ „์ฒด ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ๋งŒ ๋‹ค์Œ ์„œ๋ธŒ์‹œ์Šคํ…œ์ด ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Batch Sequential Architecture๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” Program๊ณผ Data store์ž…๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ๊ทธ๋žจ์˜ ์—ฐ๊ฒฐ์€ ๋‹จ๋ฐฉํ–ฅ ํŒŒ์ดํ”„๋กœ์จ ๋ฐ์ดํ„ฐ ์…‹์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ Batch Sequential Architecture๊ฐ€ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ => FILTER -> FILTER -> FILTER -> FILTER -> FILTER => ์ถœ๋ ฅ

Batch Sequential Architecture๋Š” ์„œ๋ธŒ์‹œ์Šคํ…œ๋“ค์ด ๋‹จ์ˆœํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ณ  ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์™€ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ์— ๋งž์ถ˜ ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ๊ต์ฒด๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ธŒ์‹œ์Šคํ…œ๊ฐ„ ์—ฐ๊ฒฐ์€ ์˜ค์ง ๋ฐ์ดํ„ฐ ์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋งŒ ๋งž์ถ”๋ฉด ๋œ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™ธ๋ถ€์—์„œ ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌํ˜„์—์„œ๋Š” ๋ถ€์ ํ•ฉํ•˜๋ฉฐ ์ธํ„ฐ๋ ‰์…˜์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. ์˜ค์ง ๋ฐ์ดํ„ฐ๋งŒ์ด ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋™์‹œ์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‚ฎ์€ ์„ฑ๋Šฅ๊ณผ ๋†’์€ Latency๋ฅผ ๊ฐ€์ง€๋Š”๊ฒŒ ์ด ์•„ํ‚คํ…์ฒ˜์˜ ํ•œ๊ณ„์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜: https://sonseungha.tistory.com/508?category=534435 [Developerโ€™s Delight]

Data flow Architecture์—๋Š” Batch Sequential, Pipe and Filter, Process Control Architecture ๋กœ 3๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ Pipe and Filter Architecture์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

Pipe and Filter Architecture๋Š” ๋ฐ์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ ํ”„๋กœ์„ธ์‹ฑ ๋‹จ๊ณ„๋Š” Filter ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” Filter ์‚ฌ์ด๋ฅผ Pipe๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋กœ ์ธํ•ด Pipe and Filter Architecture๋Š” Batch Sequential Architecture์™€ ๋งŽ์ด ๋น„๊ต๋ฉ๋‹ˆ๋‹ค. Batch Sequential Architecture์— ๋Œ€ํ•ด์—์„œ๋Š” ์•„๋ž˜ ๊ธ€์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.

2019/03/10 - [Developerโ€™s Delight/Software Architecture] - [S/W Architecture] Batch Sequential Architecture

Pipe and Filter ๊ตฌ์กฐ์˜ ๊ตฌ์„ฑ์š”์†Œ๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ, ํ•„ํ„ฐ, ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ดํ”„์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์€ XML์ด๋‚˜ Json ํŒŒ์ดํŠธ ์ŠคํŠธ๋ฆผ ๋“ฑ first-in / first-out ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์‹œ์Šคํ…œ์—์„œ๋Š” ๋งˆ์ƒฌ๋ง, ์–ธ๋งˆ์ƒฌ๋ง๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ตฌ์„ฑ์š”์†Œ์ธ ํ•„ํ„ฐ๋Š” Pipe and Filter Architecture์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์„ฑ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์ฝ์–ด๋“ค์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ๋‹ค์Œ ํ•„ํ„ฐ๋กœ ์ „๋‹ฌํ•˜๋„๋ก ํŒŒ์ดํ”„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Pipe and Filter๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ๋œ ํŒŒ์ดํ”„๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฉด ๊ทธ ์ฆ‰์‹œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ๋‹ค์Œ ํ•„ํ„ฐ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ํ•„ํ„ฐ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฏ€๋กœ ์‹œ์Šคํ…œ์—์„œ ์ž์œ ๋กญ๊ฒŒ ๊ต์ฒด ๋ฐ ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•„ํ„ฐ๋Š” 2๊ฐ€์ง€ ํƒ€์ž…์œผ๋กœ ๋‹ค์‹œ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Active(๋Šฅ๋™ํ˜•) ํ•„ํ„ฐ์™€ Passive(์ˆ˜๋™ํ˜•) ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ๋จผ์ € ๋Šฅ๋™ํ˜• ํ•„ํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ํ•„ํ„ฐ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ˆ˜๋™ํ˜• ํ•„ํ„ฐ๋Š” ํŒŒ์ดํ”„๊ฐ€ ํ•„ํ„ฐ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๋‹ค์Œ ํ•„ํ„ฐ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ๋Šฅ๋™ํ˜• ํ•„ํ„ฐ๋Š” ์ˆ˜๋™ํ˜• ํŒŒ์ดํ”„์™€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๊ณ  ์ˆ˜๋™ํ˜• ํ•„ํ„ฐ๋Š” ๋Šฅ๋™ํ˜• ํŒŒ์ดํ”„์™€ ํ•จ๊ป˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๊ตฌ์„ฑ์š”์†Œ์ธ ํŒŒ์ดํ”„๋Š” ํ•„ํ„ฐ ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ด๋™ํ•˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

Pipe and Filter ๊ตฌ์กฐ๋Š” ๋ฆฌ๋ˆ…์Šค ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ดํ”„๋ฅผ ์ƒ๊ฐํ•˜์‹œ๋ฉด ํŽธํ•ฉ๋‹ˆ๋‹ค.

$cat example.txt grep โ€˜testโ€™

์œ„์™€ ๊ฐ™์€ ์˜ˆ์ œ๋Š” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cat์„ ์ด์šฉํ•ด example.txt ๋‚ด๋ถ€ ๋ฌธ์ž์—ด๋“ค์„ ํŒŒ์ดํ”„๋ฅผ ํ†ตํ•ด grep์—๊ฒŒ ์ „๋‹ฌ๋˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ Pipe and Filter Architecture์˜ ์žฅ์ ์€ Concurrency(๋™์‹œ์„ฑ), Reusability(์žฌ์‚ฌ์šฉ), Modifiability(๋ณ€๊ฒฝ์šฉ์ด์„ฑ), Simplicity(๋‹จ์ˆœ์„ฑ), Flexibility(์œ ์—ฐํ•จ)์ž…๋‹ˆ๋‹ค. Concurrency๋Š” ๊ณผ๋„ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ๊ฐ ํ•„ํ„ฐ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Reusability๋Š” ๊ฐ ํ•„ํ„ฐ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘๋˜๋ฉฐ ๋‹ค๋ฅธ ํ•„ํ„ฐ์™€์˜ ์ข…์†์„ฑ์ด ์—†์œผ๋ฏ€๋กœ ๊ฐ ํ•„ํ„ฐ๋ฅผ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Modifiability๋Š” ํ•„ํ„ฐ ๊ฐ„ ์ข…์†์„ฑ์ด ๋‚ฎ๊ธฐ์— ์ƒˆ๋กœ์šด ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •, ์ œ๊ฑฐํ–ˆ์„๋•Œ์—๋„ ์‹œ์Šคํ…œ์— ๋‹ค๋ฅธ ์ˆ˜์ •์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ํ•„ํ„ฐ ์‚ฌ์ด์˜ ํŒŒ์ดํ”„๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋งค์šฐ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐ ํ•ด๋‹น ์‹œ์Šคํ…œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ Sequentialํ•˜๊ฒŒ Parallelํ•˜๊ฒŒ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•จ์œผ๋กœ ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, Pipe and Filter ๊ตฌ์กฐ์—๋„ ์—ฌ๋Ÿฌ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ํ˜•ํƒœ๊ฐ€ ๊ณ ์ •๋œ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ์ด๊ธฐ์— ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ตฌ์กฐ์—๋Š” ์•Œ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ A ํ•„ํ„ฐ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋Š”๋ฐ ์ถœ๋ ฅ์œผ๋กœ๋Š” XML ํฌ๋งท์œผ๋กœ ์ถœ๋ ฅํ•˜๊ณ  B ํ•„ํ„ฐ๋Š” XML์„ ์ž…๋ ฅ๋ฐ›์•„ Character Stream์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค๋ฉด, ์ด ๊ตฌ์กฐ์˜ ์žฅ์ ์ธ ๋ณ€๊ฒฝ์šฉ์ด์„ฑ, ์œ ์—ฐํ•จ์„ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์žฅ์ ๊ณผ ๋‹จ์ ์„ ์ดํ•ดํ•˜๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ํ•„์š”ํ•œ ๊ณณ์— ๊ตฌ์กฐ๋ฅผ ์ ์šฉํ•˜๋Š” ์—ฐ์Šต์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋งŽ์ด ๋น„๊ต๋˜๋Š” Batch Sequential Architecture์™€์˜ ์ฐจ์ด์ ์„ ์ •๋ฆฌํ•˜๊ณ  ๊ธ€์„ ๋๋งบ๊ฒ ์Šต๋‹ˆ๋‹ค.

Batch Sequential ๊ณผ์˜ ์ฐจ์ด์ 

์œ„์—์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ๋ณด๋ฉด Batch Sequential Architecture์™€ ๋งค์šฐ ์œ ์‚ฌํ•ด ๋ณด์ด์ง€๋งŒ ํฐ ์ฐจ์ด์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Batch Sequential์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ณ  ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•ด์„  ์ด์ „ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋ชจ๋‘ ์™„๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ A์—์„œ B ์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ์œ„ํ•ด์„  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ A์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋œ ์ดํ›„ B๋กœ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Pipe And Filter Architecture๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ตฌ์กฐ๋กœ์„œ A ๋‹จ๊ณ„์—์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ณ  B์˜ ์ž…๋ ฅ์ด ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ A ๋‹จ๊ณ„์—์„œ ๋จผ์ € ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ”๋กœ B์˜ ์ž…๋ ฅ์œผ๋กœ Pipe๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. 100๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ Batch Sequential์€ 100๊ฐœ๊ฐ€ ๋ชจ๋‘ ์ฒ˜๋ฆฌ๋œ ์ดํ›„ ๋‹ค์Œ ์Šคํ…์œผ๋กœ ์ž…๋ ฅ๋˜์ง€๋งŒ, Pipe And Filter๋Š” 100๊ฐœ ์ค‘ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋Š” B๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ์ ์ด ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜: https://sonseungha.tistory.com/510?category=534435 [Developerโ€™s Delight]

Process Control Architecture๋Š” Data Flow Architecture ๋ถ„๋ฅ˜์— ์†ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ถ„๋ฅ˜์— ์†ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋Š” ์ด์ „์— ๋‹ค๋ค˜๋˜ Batch Sequential, Pipe and Filter Architecture๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

2019/03/10 - [Developerโ€™s Delight/Software Architecture] - [S/W Architecture] Data Flow Software Architectures

2019/03/10 - [Developerโ€™s Delight/Software Architecture] - [S/W Architecture] Batch Sequential Architecture

2019/03/14 - [Developerโ€™s Delight/Software Architecture] - [S/W Architecture] Pipe and Filter Architecture

Process Control Architecture์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Process Control์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์ด ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์„ ์ œ์–ดํ•˜๋Š” ๋ณ€์ˆ˜ ์ง‘ํ•ฉ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ๋ง์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข€ ๋” ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Process Control Architecture๋Š” ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜์— ์˜ํ•ด ์กฐ์ž‘๋˜๋Š” ์‹œ์Šคํ…œ์— ์•Œ๋งž๋Š” ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์€ ์—ฐ์†์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ •๋œ ์ƒํƒœ์— ๋Œ€ํ•œ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋Š”๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๋ฃจ์ฆˆ๋‚˜ ํ™”์žฅ์‹ค ๋ณ€๊ธฐ๋ฅผ ๋งŽ์ด ์˜ˆ์‹œ๋กœ ๋“ญ๋‹ˆ๋‹ค. ํ™”์žฅ์‹ค ๋ณ€๊ธฐ ๋ฌผ์„ ๋‚ด๋ฆฌ๋ฉด ๋‹ค์‹œ ๋ฌผ์ด ์ฐจ์˜ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ ๋•Œ ์ฐจ์˜ค๋ฅด๋Š” ๋ฌผ์˜ ๋†’์ด๋Š” ํ•ญ์ƒ ์ผ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์€ ๋ฌผ์˜ ๋†’์ด ์ฆ‰ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •ํ™” ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•˜๊ฒŒ ๋˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ช‡ ๊ฐœ์˜ ์„œ๋ธŒ์‹œ์Šคํ…œ์ด ์žˆ๋Š”๋ฐ ๊ฐ ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Controlled Variable : ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋ฉฐ ์„ผ์„œ์— ์˜ํ•ด ์ธก์ •๋˜์–ด์ง€๋Š” ๊ฐ’

Input Variable : ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ž…๋ ฅ ๊ฐ’

Manipulated Variable : ์ปจํŠธ๋กค๋Ÿฌ์— ์˜ํ•ด ์กฐ์ •๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’

Process : ๋ณ€์ˆ˜๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜

Sensor : ์‹œ์Šคํ…œ ์ œ์–ด์™€ ๊ฐ™๋ จ๋œ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ตฌํ•˜๋ฉฐ ์กฐ์ž‘๋œ ๋ณ€์ˆ˜๋ฅผ ์žฌ๊ณ„์‚ฐ ํ•˜๊ธฐ ์œ„ํ•œ ํ”ผ๋“œ๋ฐฑ์œผ๋กœ ์‚ฌ์šฉ

Set Point : ์ด ๊ฐ’์€ ์ œ์–ด๋œ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์›ํ•˜๋Š” ๊ฐ’

Control Algorithm : ํ”„๋กœ์„ธ์Šค ๋ณ€์ˆ˜ ์กฐ์ž‘ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•จ

์ถœ์ฒ˜ : https://www.cs.cmu.edu/afs/cs/project/tinker-arch/www/html/Tutorial_Slides/Soft_Arch/base.097.html

์œ„ ๊ทธ๋ฆผ์€ Cruise Control ์‹œ์Šคํ…œ์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์ž๋™์ฐจ์˜ ํฌ๋ฃจ์ฆˆ ๋ชจ๋“œ๋Š” ์ผ์ •ํ•œ ์†๋„๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์†๋„๊ฐ€ ์ž…๋ ฅ ๊ฐ’์ด ๋˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ์— ์˜ํ•ด Throttle์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น Throttle์€ ์—”์ง„์„ ๋™์ž‘ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์—”์ง„์€ ๋ฐ”ํ€ด๋ฅผ ํšŒ์ „์‹œํ‚ต๋‹ˆ๋‹ค. ๋ฐ”ํ€ด์˜ ํšŒ์ „์€ ์„ผ์„œ์— ์˜ํ•ด ์ธก์ •๋˜๊ณ  Controller์—๊ฒŒ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. Controller๋Š” Desired Speed์— ๋„๋‹ฌํ•  ๋•Œ ๊นŒ์ง€ ์ง€์†์ ์œผ๋กœ Throttle์„ ์„ค์ •ํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

์œ„ ์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์ด Process Control Architecture๋ฅผ ์ ์šฉํ•œ ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”ํ€ด์˜ ํšŒ์ „์„ ์„ผ์„œ๋กœ ๋‹ค์‹œ ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š”๋ฐ์š”, ์ด์ฒ˜๋Ÿผ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์‹œ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋˜์–ด Close-loop ํ˜•ํƒœ๋ฅผ ๋›ฐ๋Š” ๊ตฌ์กฐ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์‹œ ํ”ผ๋“œ๋ฐฑ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด Open-loop ํ˜•ํƒœ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Close-loop Feedback์€ Open-loop๋ณด๋‹ค ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•˜๋Š”๋ฐ ํ›จ์”ฌ ์ข‹์€ ๊ตฌ์กฐ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์„๊ฒ๋‹ˆ๋‹ค.

์ด์ƒ์œผ๋กœ Process Control Architecture์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜: https://sonseungha.tistory.com/512?category=534435 [Developerโ€™s Delight]