๐Ÿ’ปโ”‚IT_Study/๐ŸŽ“โ”‚SW_Engineering

์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™ ์‹ค๋ฌด ์ด๋ก 

Jastes 2023. 4. 13. 17:13


์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด/์Šคํƒ€์ผ ์ ์šฉ

๊ณผ์ œ๋กœ ๋‘ ์ฑ•ํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
์†Œ๊ณต์ด ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์–ด์„œ ํ•ด๊น”๋ฆฐ๊ฑด๋ฐ ์ €๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์š” ใ… 

 

NCS ๊ตญ๊ฐ€์ง๋ฌด๋Šฅ๋ ฅํ‘œ์ค€, NCS ๋ธ”๋ผ์ธ๋“œ์ฑ„์šฉ

NCS ๋ฉ”์ธ์—์„œ ๊ตญ๊ฐ€์ง๋ฌด๋Šฅ๋ ฅํ‘œ์ค€(National Competency Standards) ๋ฐ ๋ธ”๋ผ์ธ๋“œ ์ฑ„์šฉ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด์™€ ์œ ์šฉํ•œ ์ปจํ…์ธ ๋ฅผ ๋งŒ๋‚˜ ๋ณด์„ธ์š”

www.ncs.go.kr

ํ•ด๋‹น ์ž๋ฃŒ๋Š” ์œ„์— ๋งํฌ์—์„œ ์ฐพ์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.(LM2001020103_14v2)


์ฃผ์š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด๋ณ„ ์ ์šฉ๋ฐฉ๋ฒ•

Layer pattern

๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์œผ๋กœ
subtask๋“ค์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์‚ฌ์šฉ ํ—ˆ๊ฐ€ ๊ด€๊ณ„๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํŒจํ„ด

๋ชจ๋“ˆ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด๋‚˜ ์ด์‹์„ฑ์ด ์ข‹์€ ํŒจํ„ด

Layered archiecture pattern

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

 

์žฅ๋‹จ์ 
๋”๋ณด๊ธฐ
  • ๋†’์€ ์‘์ง‘๋„(High Cohesion)

 ๊ฐ ๊ณ„์ธต์€ ํŠน์ •ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ, ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์ด ํ•˜๋‚˜์˜ ๊ณ„์ธต์— ์ง‘์ค‘๋˜์–ด ๋†’์€ ์‘์ง‘๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

  • ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„(Low Coupling)

 ๊ฐ ๊ณ„์ธต์€ ์„œ๋กœ์—๊ฒŒ ์˜์กด์„ฑ์ด ์žˆ๋Š” ๊ด€๊ณ„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ, ๊ณ„์ธต ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ๊ณ„์ธต์˜ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ๊ณ„์ธต์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์ตœ์†Œํ™”๋˜์–ด, ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

  • ์žฌ์‚ฌ์šฉ์„ฑ(Reusability)

 ๊ฐ ๊ณ„์ธต์€ ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์–ด, ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค. ํŠน์ • ๊ณ„์ธต์˜ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ„์ธต์„ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


  • ๋ถˆํ•„์š”ํ•œ ๊ณ„์ธต ์ถ”๊ฐ€ ๊ฐ€๋Šฅ์„ฑ

 ๊ณ„์ธต์„ ๋” ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ, ๋ถˆํ•„์š”ํ•œ ๊ณ„์ธต์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ ↑

  • ์˜ค๋ฒ„ํ—ค๋“œ

 ๊ณ„์ธต์ด ์ถ”๊ฐ€๋ ์ˆ˜๋ก ๊ฐ ๊ณ„์ธต ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋“ฑ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณต์žก์„ฑ

 ๊ณ„์ธต ๊ฐ„์˜ ์˜์กด์„ฑ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค ๊ด€๋ฆฌ ๋“ฑ, ๊ณ„์ธต ํŒจํ„ด ์ž์ฒด๊ฐ€ ๋ณต์žก์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ€๋žต์ ์ธ ๊ฐ„๋‹จ ๋ช…๋ฃŒ ์ •๋ฆฌ๋ฅผ ์—ฌ๊ธฐ๊นŒ์ง€์ด๋ฉฐ, ๋”์šฑ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

Software Architecture Patterns

Chapter 1. Layered Architecture The most common architecture pattern is the layered architecture pattern, otherwise known as the n-tier architecture pattern. This pattern is the de facto standard for most … - Selection from Software Architecture Pattern

www.oreilly.com

 

 

The Layered Architecture Pattern in Software Architecture

This article aims to discuss some main concepts and characteristics of layered architecture pattern in software engineering.

medium.com


Broker pattern

์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ ํ˜ธ์ถœํ•  ๋•Œ → ํด๋ผ ์š”์ฒญ → ์„œ๋ฒ„ ์ปดํฌ์— ์ „๋‹ฌ
ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• (์ผ์ข…์˜ ๋ธŒ๋กœ์ปค ํŒจํ„ด)

๋ณด์•ˆ์ด๋‚˜, ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด

broker architecture pattern

๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์กฐ์ •ํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘ํ˜•์˜ ์ค‘๊ฐœ์ž ์—ญํ• ๋กœ์จ,
๋ธŒ๋กœ์ปค๋Š” ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„, ํ˜น์€ ์„œ๋น„์Šค ์ œ๊ณต์ž์™€
์‚ฌ์šฉ์ž์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ํ†ต์‹ ์„ ์ค‘์žฌํ•˜์—ฌ ์„œ๋กœ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์œ ์—ฐ์„ฑ ↑


broker arch pattern์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋‘˜ ๊ฒƒ 

๋ธŒ๋กœ์ปค(Broker):
- ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ค‘์žฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘ํ˜•์˜ ์ปดํฌ๋„ŒํŠธ
- ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์ด๋‚˜ ์„œ๋น„์Šค ์ œ๊ณต์ž์™€ ์‚ฌ์šฉ์ž ๊ฐ„์˜ ํ†ต์‹ ์„ ์กฐ์ •


ํด๋ผ์ด์–ธํŠธ(Client):
- ๋ธŒ๋กœ์ปค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ์„œ๋น„์Šค๋‚˜ ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ


์„œ๋ฒ„(Server):
- ๋ธŒ๋กœ์ปค์™€ ์ƒํ˜ธ์ž‘์šฉํ•ด ํด๋ผ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์„œ๋น„์Šค/๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ


์„œ๋น„์Šค ์ œ๊ณต์ž(Service Provider):
- ๋ธŒ๋กœ์ปค์— ๋“ฑ๋ก๋˜์–ด ์„œ๋น„์Šค๋‚˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ


์‚ฌ์šฉ์ž(User):
- ๋ธŒ๋กœ์ปค๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค๋‚˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ
 

์ปดํฌ๋„ŒํŠธ - ํ•ด์‹œ๋„ท

์ปดํฌ๋„ŒํŠธ(component)๋ž€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„ ํ•˜๋‚˜์˜ ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ ์ž‘์€ ๊ธฐ๋Šฅ์  ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ๋งˆ์น˜ ๋ ˆ๊ณ (Lego) ๋ธ”

wiki.hash.kr

 

 

์žฅ๋‹จ์ 
๋”๋ณด๊ธฐ
  • ์ค‘์žฌ(Mediation)

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

  • ์ธํ„ฐํŽ˜์ด์Šค ์ถ”์ƒํ™”

 ๋ธŒ๋กœ์ปค๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ณ , ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ์˜ ํ˜ธํ™˜์„ฑ๊ณผ ์ƒํ˜ธ์šด์šฉ์„ฑ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค.

  • ์ค‘๋ณต ์ œ๊ฑฐ

 ๋ธŒ๋กœ์ปค๋Š” ๊ณตํ†ต์ ์ธ ๊ธฐ๋Šฅ์„ ์ค‘๋ณต์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.


  • ๋‹จ์ผ ์žฅ์•  ์ง€์ (Single Point of Failure)

 ๋ธŒ๋กœ์ปค๊ฐ€ ์‹œ์Šคํ…œ์˜ ์ค‘์‹ฌ์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ, ๋ธŒ๋กœ์ปค์˜ ์žฅ์• ๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ธŒ๋กœ์ปค์˜ ์•ˆ์ •์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ฑ๋Šฅ ์ €ํ•˜

 ๋ธŒ๋กœ์ปค๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ค‘์žฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ, ์ถ”๊ฐ€์ ์ธ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณต์žก์„ฑ

 ๋ธŒ๋กœ์ปค ํŒจํ„ด์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ค‘์žฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ๋ธŒ๋กœ์ปค ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋„์ž…ํ•˜๋ฏ€๋กœ, ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ ์„ค๊ณ„์™€ ๊ตฌํ˜„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

 

 ์ฆ‰, ์ค‘์žฌ์™€ ์ธํ„ฐํŽ˜์ด์Šค ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค์ง€๋งŒ, ๋‹จ์ผ ์žฅ์•  ์ง€์ ๊ณผ ์„ฑ๋Šฅ ์ €ํ•˜, ๋ณต์žก์„ฑ ๋“ฑ์˜ ๋‹จ์ ์ด ์žˆ์Œ

 

๋Œ€๋žต์ ์ธ ๊ฐ„๋‹จ ๋ช…๋ฃŒ ์ •๋ฆฌ๋ฅผ ์—ฌ๊ธฐ๊นŒ์ง€์ด๋ฉฐ, ๋”์šฑ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

Architectural Patterns: Broker

In most cases, client-side proxies translate the object model specified as part of the Broker architectural pattern to the object model of the programming language used to implement the client After getting the ack from the broker, the server enters its ma

www.openloop.com


MVC pattern

๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค ์„ธ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋กœ App์„ ๊ตฌ๋ถ„ํ•œ ํŒจํ„ด์œผ๋กœ,

  • Model : ๊ธฐ๋Šฅ ๋ฐ์ดํ„ฐ
  • View : UI/UX
  • Control : ๊ด€๊ณ„ → ์ด๋ฒคํŠธ
๊ฐ ๊ด€๊ณ„์˜ ์ผ๊ด€์„ฑ์„ ๊ฐ–๊ฒŒ ํ•˜์—ฌ ๋ณ€๊ฒฝ์šฉ์ด์„ฑ, ๊ธฐ๋Šฅ ํ™•์žฅ์„ฑ ์ง€์›ํ•จ

MVC ํŒจํ„ด์€ ๊ฐ๊ฐ์˜ ์—ญํ• ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ™•์žฅ์„ฑ์ด ๋†’์œผ๋ฉฐ
๋˜ํ•œ, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ถ„๋ฆฌ๋˜์–ด ๊ฐœ๋ฐœ์„ ๋” ๊ตฌ์กฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ๋‹จ์ 
๋”๋ณด๊ธฐ
  • ์ฝ”๋“œ์˜ ๋ถ„๋ฆฌ

 MVC ํŒจํ„ด์€ ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฐ๊ฐ์˜ ์—ญํ• ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ๋ถ„๋ฆฌ๊ฐ€ ์ž˜ ์ด๋ฃจ์–ด์ ธ์„œ ์œ ์ง€๋ณด์ˆ˜์„ฑ ↑

  • ํ™•์žฅ์„ฑ

 ๊ฐ๊ฐ์˜ ์—ญํ• ์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ํ•ด๋‹น ์—ญํ• ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ํ™•์žฅ์„ฑ good

  • ์œ ์—ฐํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค 

๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์œ ์—ฐ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


  • ๋ณต์žก์„ฑ 

MVC ํŒจํ„ด์€ ์„ธ ๊ฐ€์ง€ ์—ญํ• ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•™์Šต ๊ณก์„ 

 ๊ฐœ๋…์ ์œผ๋กœ ๋ณต์žกํ•˜๊ณ , ๊ฐ๊ฐ์˜ ์—ญํ• ์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ๋Š” ํ•™์Šต ๊ณก์„ ์ด ๋†’์Œ

  • ์ฝ”๋“œ ์ค‘๋ณต

 ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋Œ€๋žต์ ์ธ ๊ฐ„๋‹จ ๋ช…๋ฃŒ ์ •๋ฆฌ๋ฅผ ์—ฌ๊ธฐ๊นŒ์ง€์ด๋ฉฐ, ๋”์šฑ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

10 Common Software Architectural Patterns in a nutshell

Ever wondered how large enterprise scale systems are designed? Before major software development starts, we have to choose a suitable…

towardsdatascience.com


State-Logic-Display pattern

ํ†ต์ƒ 3-tier๋ฝ ๋ถˆ๋ฆฌ๋ฉฐ, ๋น„์ง€๋‹ˆ์Šค App์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
UI/๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง/๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„์— ๋ณ€๊ฒฝ ์šฉ์ด์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค

๊ฒŒ์ž„, App ๋“ฑ ๋งŽ์€ ๋ถ„์•ผ์— ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋ธ

๊ฐ ๊ณ„์ธต์ด ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋””์ž์ธ ํŒจํ„ด, ์ฝ”๋“œ์˜ ๋ถ„๋ฆฌ์™€ ํ™•์žฅ์„ฑ ↑

 

์žฅ๋‹จ์ 
๋”๋ณด๊ธฐ

 3-Tier ๋ชจ๋ธ์€ ์ฝ”๋“œ์˜ ๋ถ„๋ฆฌ์™€ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์˜ ํšจ์œจ์„ฑ์„ ๊ฐ•์กฐํ•˜๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ๋ณต์žก์„ฑ๊ณผ ์˜ค๋ฒ„ํ—ค๋“œ, ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•œ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์žฅ๋‹จ์ ์„ ๊ณ ๋ คํ•˜์—ฌ ์ ์ ˆํ•˜๊ฒŒ ์„ ํƒ ๋ฐ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ€๋žต์ ์ธ ๊ฐ„๋‹จ ๋ช…๋ฃŒ ์ •๋ฆฌ๋ฅผ ์—ฌ๊ธฐ๊นŒ์ง€์ด๋ฉฐ, ๋”์šฑ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

 


Sense-Compute-Control pattern

์„ผ์„œ์˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์—ฌ ํ•ด์•ผํ•  ํ–‰์œ„๋ฅผ ์ •์˜ํ•œ ๊ธฐ๋Šฅ์ด๋‚˜
ํ–‰์œ„๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ชจ๋“ˆ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ

์ž„๋ฒ ๋””๋“œ App์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ž„

์„ผ์„œ์™€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์‹œ์Šคํ…œ ์ œ์–ด๋ฅผ ๋ถ„๋ฆฌํ•ด ๊ฐ ๊ณ„์ธต์ด ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘, ๋†’์€ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ ↑,
์ œ๊ณต ์„ผ์„œ์™€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์‹œ์Šคํ…œ ์ œ์–ด์˜ ๊ฐ๊ฐ์˜ ๊ณ„์ธต์ด ํ™•์žฅ, ์ˆ˜์ •, ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ,
์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„ผ์„œ์™€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์‹œ์Šคํ…œ ์ œ์–ด์˜ ๋ถ„๋ฆฌ๋กœ ์ธํ•ด ์‹œ์Šคํ…œ ์ „์ฒด์˜ ๋ณต์žก์„ฑ์ด ๊ฐ์†Œํ•˜๊ณ , ์žฌ์‚ฌ์šฉ์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

๋งก์€ ์ฃผ์ œ - ์•„ํ‚คํ…์ฒ˜ ์ค€๊ฑฐ์„ฑ ํ™•๋ณด ๋ฐ ํ•ฉ์˜

  • ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฌ๊ณ ์„ฑ(Resilience)
    ์‹œ์Šคํ…œ์ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์—์„œ๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ณ , ์ค‘๋‹จ์„ ์ตœ์†Œํ™”ํ•˜๋ฉฐ, ์žฅ์• ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ
  • ์•„ํ‚คํ…์ฒ˜์˜ ํ•ฉ์˜(Consensus)
    ์‹œ์Šคํ…œ์˜ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ๋‚˜ ๊ฒฐ์ •์„ ๊ณต์œ ํ•˜๊ณ , ๋™๊ธฐํ™”ํ•˜์—ฌ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฌ๊ณ ์„ฑ ํ™•๋ณด์™€ ํ•ฉ์˜๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์ค‘์š”ํ•œ ์š”์†Œ๋กœ, 
์•ˆ์ •์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ๋†’์ด๊ณ , ์‹œ์Šคํ…œ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

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

๋” ์ž์„ธํžˆ ํ•˜๊ณ  ์‹ถ์€๋ฐ ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ๋„ ๋งŽ์•„์„œ ๋„˜์–ด๊ฐ€์„œ ๋ฐ”๋กœ ์งˆ๋ฌธ


๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ

Q: ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฌ๊ณ ์„ฑ ํ™•๋ณด์™€ ํ•ฉ์˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

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

Q: ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฌ๊ณ ์„ฑ ํ™•๋ณด์™€ ํ•ฉ์˜๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ

A: ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฌ๊ณ ์„ฑ ํ™•๋ณด์™€ ํ•ฉ์˜๋Š” ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์žฅ์• ๋‚˜ ์ด์ƒ ์ƒํ™ฉ์—์„œ๋„ ์‹œ์Šคํ…œ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ์„œ๋น„์Šค์˜ ๊ฐ€์šฉ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ , ์žฅ์• ๋ฅผ ๋ณต๊ตฌํ•˜์—ฌ ์„œ๋น„์Šค์˜ ์ค‘๋‹จ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ , ๊ฒฐ์ •์„ ๊ณต์œ ํ•จ์œผ๋กœ์จ ์‹œ์Šคํ…œ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

 

O'Reilly Media - Technology and Business Training

Learning by doing is the best way to grasp new technologies With interactive learning, teams get hands-on experience with cloud platforms and tech like Kubernetes, Python, Docker, Java, and more—in safe live dev environments. So they’re more comfortabl

www.oreilly.com

์ฐธ๊ณ  ์ด๋ฏธ์ง€