๐ Data Flow Architecture
Architectural Styles
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]