๐Ÿ› ๊ณ„์ธต์  ์•„ํ‚คํ…์ฒ˜

Architectural Styles

1 minute read

์ด๊ฑฐ๋Š” ํด๋ž˜์Šค๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ์˜ˆ => ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์œ— ๋ ˆ์ด์–ด์—

๋งˆ์ดํฌ๋กœ ์ปค๋„์€ ๊ณตํ†ต๋ถ€๋ถ„์„ ๊ธธ๊ฒŒ ๋†“๊ณ  ์•„๋ž˜ ์ธํ„ฐ๋„ ์„œ๋ฒ„๋ž‘ ์œ„์— ์ต์Šคํ„ฐ๋„ ์„œ๋ฒ„๊ฐ€ ์—ฌ๊ธฐ๋ฅผ ๊ฑฐ์ณ์„œ ํ†ต์‹ ํ•œ๋‹ค. ์ต์Šคํ„ฐ๋„์€ a1,a2, โ€” a6์ด๋ ‡๊ฒŒ ์žˆ์„๋•Œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งž์ถœ์ˆ˜ ์ž‡๋‹ค.

  • ๋ง๊ทธ๋Œ€๋กœ ์ปค๋„์ด ์žˆ๋Š”๋ฐ ์ปค๋„์ด ํฌ์ง€์•Š๋‹ค๋Š”๊ฑฐ
  • OCP ํ™œ์šฉ, ํ”Œ๋Ÿฌ๊ทธ์•ค ํ”Œ๋ ˆ์ด
  • ํ•œ ์‹œ์Šคํ…œ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ๋œ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ์ด ์กฐ๊ธˆ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ
  • Family of Applications / ๋ฒ„์ „์— ์‚ฌ์šฉ => ๋ฒ„์ „์˜ ๊ฒฝ์šฐ์—๋Š” 1.0 2.0 3.0 ๋ชจ๋‘ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ปค๋„์ด ์žˆ๋Š”๊ฒฝ์šฐ ์–ด๋Œ‘ํ„ฐ๋กœ ํ•ด๊ฒฐ => ์–ด๋ผโ€ฆ์Šคํ”„๋ง ๋””์ŠคํŒจ์ฒ˜
  • ์–ด๋Œ‘ํ„ฐ๊ฐ€ ํ•ต์‹ฌ์ธ๋“ฏ? Adaptive System style์ด๋ผ๊ณ  ํ•จ

ierarchical Software Architecture, ํ•œ๊ตญ์–ด๋กœ ๊ณ„์ธต์  ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋ผ ๋ถˆ๋ฆฌ๋Š” ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

์œ„ ์•ˆ๋“œ๋กœ์ด๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณด์‹œ๋ฉด Applications, Application Framework, Libraries, Linux Kernel ๊นŒ์ง€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ธŒ์‹œ์Šคํ…œ์ด ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์„ ์ด๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ์ƒ์œ„ ์‹œ์Šคํ…œ์ด ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ตฌ์กฐ, ์ฆ‰ Call-and-Return ์—ฐ๊ฒฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๊ณ„์ธต ๋ ˆ๋ฒจ๋“ค์€ Method Invocation์— ์˜ํ•ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ํ•˜์œ„ ๋ ˆ๋ฒจ์˜ ์„œ๋ธŒ์‹œ์Šคํ…œ์ด ์ƒ์œ„ ๋ ˆ๋ฒจ ์„œ๋ธŒ์‹œ์Šคํ…œ์—๊ฒŒ ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ Hierarchical Software Architecture ์Šคํƒ€์ผ์„ ๊ฐ€์ง€๋Š” ์—ฌ๋Ÿฌ ์•„ํ‚คํ…์ฒ˜๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค๋ฅธ ๊ธ€๋กœ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ˆ ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค.

  • Master - Slave Architecture

  • Layered Architecture

  • Virtual Machine Architecture

  • Plug-in Architecture

  • Micro-kernel Architecture

Hierarchical Software Architecture๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ถ€๋ถ„๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ €, ๊ณ„์ธต์„ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์ด ๋ช…ํ™•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ณ„์ธต์€ ํ•˜์œ„ ๊ณ„์ธต๋งŒ์„ ์˜์กดํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ ๊ณ„์ธต์„ ๋ช…ํ™•ํ•˜๊ณ  ํŠน์ •์ ์ธ ํƒœ์Šคํฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ๊ณ„์ธต์„ ๋ช‡ ๊ฐœ๋กœ ๋‚˜๋ˆŒ์ง€๋„ ๊ณ ๋ฏผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์กฐ๊ฑด ๋งŽ๊ฑฐ๋‚˜ ๋ฌด์กฐ๊ฑด ์ ๋‹ค๊ณ  ์ข‹์€ ๊ฒƒ์ด ์•„๋‹Œ ๋ณธ์ธ์ด ์„ค๊ณ„ํ•˜๋Š” ์‹œ์Šคํ…œ์— ๊ฐ€์žฅ ์ ‘ํ•ฉํ•œ ๊ณ„์ธต์˜ ์ˆ˜๋ฅผ ์ •์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ๋กœ ๊ฐ ๊ณ„์ธต์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž˜ ์ •์˜ํ•ด์•ผ ๊ณ„์ธต์˜ ์ˆ˜์ •์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜์—ฌ๋„ ๋‹ค๋ฅธ ๊ณ„์ธต์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ์ •์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ ๊ณ„์ธต์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ง€ ๊ณ ๋ฏผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ๊ทธ ๊ณ„์ธต์—์„œ ์ฒ˜๋ฆฌํ•  ์ง€ ์•„๋‹ˆ๋ฉด, ์ƒ์œ„ ๊ณ„์ธต์—๊ฒŒ ์ „๋‹ฌํ• ์ง€์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋„ ์ž˜ ์ •์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Hierarchical Software Architecture์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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