๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜ (Layered Architecture)

Amenable 2023. 6. 27. 20:45

๐Ÿ“™ 1. ๊ฐœ๋…

  ๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜(Layered Architecture)๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of concerns)์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ์„ ์œ ์‚ฌํ•œ ์ฑ…์ž„(๊ด€์‹ฌ)์„ ์ง€๋‹Œ Layer๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ๊ฐ๊ฐ์˜ Layer๊ฐ€ ํ•˜์œ„ Layer์—๋งŒ ์˜์กดํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ด๋‹ค.

 

 

๐Ÿ“™ 2. ์‚ฌ์šฉ ๋ชฉ์ 

  Layered Architecture๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ๋ ˆ์ด์–ด๋“ค์ด ํŠน์ • ๊ด€์‹ฌ์‚ฌ์™€ ๊ด€๋ จ๋œ ๊ฐœ์ฒด๋งŒ์„ ํฌํ•จํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•œ Layered Architecture์„ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชฉ์ ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

  1. ์ „์ฒด์ ์ธ ์‹œ์Šคํ…œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค.
    ํ•˜์œ„ ๊ณ„์ธต์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•จ์œผ๋กœ์จ ํ•ด๋‹น ๊ณ„์ธต์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ๋‹ค.
    ๊ฐ ๋ ˆ์ด์–ด์— ์„œ๋กœ ๋‹ค๋ฅธ ์ถ”์ƒํ™” ์ˆ˜์ค€์„ ๊ฐ€์ง„ ์ƒํƒœ์™€ ํ–‰๋™์„ ์œ„์น˜์‹œํ‚ด์œผ๋กœ์จ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
  3. ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.
    ํ•˜์œ„ ๊ณ„์ธต์˜ ์˜์กด์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๊ณ„์ธต์˜ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์˜ํ–ฅ์ด ์ „ํŒŒ๋˜์ง€ ์•Š๋„๋ก ์ตœ์†Œํ™”ํ•œ๋‹ค.
  4. ๊ฐœ๋ฐœ์ž์˜ ์ธ์ง€ ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค

 

 

๐Ÿ“™ 3. 4-Layered Architecture

  ๊ณ„์ธต์˜ ๊ฒฝ์šฐ, ๋น„๊ต์  ๋‹จ์ˆœํ•œ ์ƒํ™ฉ์—์„œ๋Š” 3 ๊ณ„์ธต(Presentation Layer, Application Layer Data Layer))์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” 4 ๊ณ„์ธต(Presentation Layer, Business Layer, Persistence Layer, DataBase Layer)์„ ๊ฐ€์ง„๋‹ค.

  4-Layered Architecture์˜ ๊ฐ๊ฐ์˜ ๋ ˆ์ด์–ด๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

๐Ÿš— 1. Presentation Layer

  • Presentation Layer๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ตํ•˜๋Š” ๊ณ„์ธต์ด๋‹ค.
  • ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์„ฑ์š”์†Œ๋Š” View์™€ Controller๊ฐ€ ์žˆ๋‹ค.

๐Ÿš— 2. Business Layer

  • Business Layer๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ๊ณ„์ธต์ด๋‹ค.
  • Presentation Layer๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์•„์˜ค๋ฉด Business Layer๋Š” ์‹ค์ œ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.
    ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์„ฑ์š”์†Œ๋กœ๋Š” Service๊ฐ€ ์žˆ๋‹ค.

๐Ÿš— 3. Persistence Layer

  • Persistence Layer๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” ๊ณ„์ธต์ด๋‹ค.
  • Business์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์กฐํšŒ, ์‚ญ์ œ ๋“ฑ์˜ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์„ฑ์š”์†Œ๋Š” Repository์™€ DAO ๋“ฑ์ด ์žˆ๋‹ค.

๐Ÿš— 4. Database Layer

  • Database Layer๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์œ„์น˜ํ•œ ๊ณ„์ธต์„ ์˜๋ฏธํ•œ๋‹ค.
  • ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์„ฑ์š”์†Œ๋กœ๋Š” MySQL, MariaDB, PostgreSQL, MongoDB ๋“ฑ์ด ์žˆ๋‹ค.

 

 

๐Ÿ“™ 4. Open And Closed Layer

  ๊ฐ ๋ ˆ์ด์–ด๋Š” ํ์‡„(Closed) ๋˜๋Š” ๊ฐœ๋ฐฉ(Open) ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.

  ๊ฐœ๋ฐฉ ์ƒํƒœ๋ฅผ ์ด์šฉํ•˜์—ฌ '์—„๊ฒฉํ•œ ๋ ˆ์ด์–ด ์•„ํ‚คํ…์ฒ˜'์™€ '์™„ํ™”๋œ ๋ ˆ์ด์–ด ์•„ํ‚คํ…์ฒ˜'๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  ์—„๊ฒฉํ•œ ๋ ˆ์ด์–ด ์•„ํ‚คํ…์ฒ˜๋ž€ ๋ฐ˜๋“œ์‹œ ์•„๋ž˜ ๊ณ„์ธต๋งŒ์„ ์˜์กดํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์™„ํ™”๋œ ๋ ˆ์ด์–ด ์•„ํ‚คํ…์ฒ˜๋Š” ์ž์‹ ์˜ ํ•˜์œ„ ๋ ˆ์ด์–ด๋ผ๋ฉด ๋ชจ๋‘ ์˜์กดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

 

์ถœ์ฒ˜ : ๊ฒฝ๋ถ์ผ๋ณด

  ์—„๊ฒฉํ•œ ๋ ˆ์ด์–ด ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ๋ณ„๋‹ค๋ฅธ ๋กœ์ง์ด ์—†๋”๋ผ๋„ ๋ฐ˜๋“œ์‹œ ์•„๋ž˜ ๊ณ„์ธต์„ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.

  ์š”์ฒญ์„ ์ „๋‹ฌ๋ฐ›์€ ํ•˜์œ„ ๊ณ„์ธต์€ ์•„๋ฌด๋Ÿฐ ๋กœ์ง ์—†์ด ์š”์ฒญ์„ ๋‹ค์Œ ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌ๋งŒ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ฒƒ์„ '์‹ฑํฌํ™€ ์•ˆํ‹ฐ ํŒจํ„ด'์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Š” ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚ญ๋น„ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

 

  ์‹ฑํฌํ™€ ์•ˆํ‹ฐํŒจํ„ด์ด ์—†๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š๋‹ค. ๊ทธ๋ž˜์„œ ์‹ฑํฌํ™€ ์•ˆํ‹ฐ ํŒจํ„ด์˜ ๋ฌธ์ œ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ '80-20 RULE'์ด ์žˆ๋‹ค.

  ์ด๋Š” ์ „์ฒด ์š”์ฒญ์˜ 20%๊ฐ€ ์‹ฑํฌํ™€์ธ ์ •๋„๋ฉด ๊ทธ๋Ÿฐ๋Œ€๋กœ ๊ดœ์ฐฎ์€ ์ˆ˜์ค€์ด๋ผ๋Š” ๊ฒƒ์„ ๋งํ•ด์ค€๋‹ค.

 

 

๐Ÿ“™ 5. Layered Architecture์˜ ๋‹จ์ 

  • ํ™•์žฅ์„ฑ ๋ฌธ์ œ
      ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ํ™•์žฅ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.
  • ๋„๋ฉ”์ธ ๋ณ€๊ฒฝ์˜ ์–ด๋ ค์›€
      ๋„๋ฉ”์ธ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด Presentation Layer, Business Layer, Persistence Layer, Database Layer๋ฅผ ๋ชจ๋‘ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. (ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ์ด ๋ชจ๋“  ๋ ˆ์ด์–ด์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋‹ค.)
      ๋ ˆ์ด์–ด๋กœ ๋ถ„๋ฆฌ๋œ ๊ด€์‹ฌ์‚ฌ ์™ธ์— ๋‹ค๋ฅธ ๊ด€์‹ฌ์‚ฌ๊ฐ€ ๋ฐœ๊ฒฌ๋œ ๊ฒฝ์šฐ, ํŒจํ‚ค์ง€ ๋ถ„๋ฆฌ ๋ฐ ์ฝ”๋“œ ๋ฐฐ์น˜๊ฐ€ ๋‚œ๊ฐํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ๋‚ฎ์€ ์‘์ง‘๋„
      ํ•˜๋‚˜์˜ ์ƒํ™ฉ ๋˜๋Š” ๊ฐœ๋…์ด ๋ ˆ์ด์–ด์˜ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

ํ•ด๋‹น ๊ธ€์€
oreilly ์˜ 'Chapter 1. Layered Architecture',
dzone ์˜ 'Layered Architecture Is Good',
์ฝ”๋”ฉ๋ฌด๋‹ˆ ๋‹˜์˜ 'Layered Architecture (๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜) ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?',
junhyunny ๋‹˜์˜ 'Layered Architecture',
gmtmoney2357 ๋‹˜์˜ '์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ - ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜(Layered architecture)',
hudi ๋‹˜์˜ '๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜ (Layered Architecture)'
๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.