Layered Architecture

Layered Architecture๋Š” ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด Layered Architecture Style์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„ํ‚คํ…์ณ์™€ ์•„ํ‚คํ…์ณ ์Šคํƒ€์ผ์˜ ์ฐจ์ด๋Š” ์—ฌ๊ธฐ์— ์ •๋ฆฌํ•ด ๋’€๋‹ค.

  • ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of concerns)

    • ์šฐ์„  '๊ด€์‹ฌ์‚ฌ'๋ž€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ •๋ณด์˜ ์ง‘ํ•ฉ ํ˜น์€ ๋ฒ”์œ„๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

    • ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋Š” ์‹œ์Šคํ…œ์˜ ๋ถ€๋ถ„์„ ๊ด€์‹ฌ์‚ฌ์— ๋”ฐ๋ผ ๋ถ„๋ฆฌํ•จ์œผ๋กœ(๋ชจ๋“ˆํ™”) ์ธํ•ด์„œ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ํ•œ ๋ถ€๋ถ„์—์„œ ์ˆ˜์ •์ด ๋ฐœ์ƒํ•  ์‹œ์— ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์ด ์ ๋„๋ก ์œ ์ง€๋ณด์ˆ˜์„ฑ๋„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

    • ์ด๊ฒƒ์€ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(Single Responsibility Principle)์™€๋„ ๋งฅ๋ฝ์ด ๊ฐ™๋‹ค.

    • ์บก์Аํ™”, ๋ชจ๋“ˆํ™”

    • ์ปค๋‹ค๋ž€ ํ”„๋กœ๊ทธ๋žจ์€ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ์–ด๋ ต๋‹ค. ์ธ๊ฐ„์˜ ํ•œ๊ณ„ + ๊ณต๊ฐ„์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋„๋ก ์ ์ ˆํ•˜๊ฒŒ ๋‚˜๋ˆ„๊ณ  ๊ทธ๋ฃนํ™”ํ•œ๋‹ค. Java์˜ ํŒจํ‚ค์ง€์™€ ์‹œ์Šคํ…œ์˜ ํด๋” ๋“ฑ์ด ์ด๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

  • ์‘์ง‘๋„(cohesion)

    • ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ์š”์†Œ๋“ค์ด ์„œ๋กœ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š” ์ •๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ๋…์ด๋‹ค.

    • ์‘์ง‘๋„๊ฐ€ ๋†’์œผ๋ฉด ์ข‹์€ ์ฝ”๋“œ๋ผ๊ณ  ํ•˜๋Š” ์ด์œ ๋Š” ๋ฐ˜๋Œ€์˜ ์˜ˆ๋ฅผ ํ†ตํ•ด์„œ ์ž˜ ๋“œ๋Ÿฌ๋‚˜๋Š”๋ฐ, ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์€ ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ์—๋Š” ์„œ๋กœ ๋А์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ชฉ์ ์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•ด์ง€๊ฒŒ ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด์„œ ์œ ์ง€๋ณด์ˆ˜ ๋‚œ์ด๋„๊ฐ€ ๋†’์•„์ง€๋ฉฐ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.

    • ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šด ์ด์œ ๋Š” ํ•œ ๋ชจ๋“ˆ๊ณผ ์—ฐ๊ด€๋˜๋Š” ๋ชจ๋“ˆ๋“ค์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •์— ๋”ฐ๋ฅธ ์˜ํ–ฅ๋„๋ฅผ ์˜ˆ์ƒํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    • ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ์ด์œ ๋Š” ์—ฐ๊ด€๋œ ๋ชจ๋“  ๋ชจ๋“ˆ์˜ ์กฐ๊ฑด๊ณผ ํ™˜๊ฒฝ์„ ์ถฉ์กฑํ•ด์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด์‹์„ฑ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ๊ฒฐํ•ฉ๋„(coupling)

    • ๊ฒฐํ•ฉ๋„๋Š” ๋‘ ๋ชจ๋“ˆ ๊ฐ„์˜ ์ƒํ˜ธ์˜์กด์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ๋…์ด๋‹ค.

    • ์œ„์—์„œ ๋งํ•œ ์‘์ง‘๋„์™€๋„ ์ž์—ฐ์Šค๋ ˆ ์—ฐ๊ด€์ด ๋˜๋Š”๋ฐ, ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์•„์„œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ ์—ฐ๊ด€์„ฑ์ด ๋†’์•„์ง€๋Š” ๊ฒฝ์šฐ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง€๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

    • ๋†’์€ ๊ฒฐํ•ฉ๋„๋ผ๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ ๋งŽ์€ ์—ฐ๊ด€์„ฑ์„ ๊ฐ–๊ฒŒ ๋˜์–ด์„œ ์ƒํ˜ธ ์˜์กด๋„๊ฐ€ ๋†’์•„์ง€๊ณ  ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

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

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

  • Layered Architecture

    • Layered Architecture๋Š” ์‹œ์Šคํ…œ์„ ๊ณ„์ธต๋ณ„๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

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

    • ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์œ„๊ณ„์ธต์€ ํ•˜์œ„๊ณ„์ธต์ด ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ•˜์œ„๊ณ„์ธต์€ ์ƒ์œ„๊ณ„์ธต๊ณผ๋Š” ๊ด€๊ณ„์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    • ์ผ๋ฐ˜์ ์œผ๋กœ 3๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.

      • Presentation Layer(ํ‘œํ˜„ ๊ณ„์ธต) : ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ด€๋ จ ๊ณ„์ธต

      • Business Layer(๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต) : ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง

      • Data Layer(๋ฐ์ดํ„ฐ ๊ณ„์ธต) : ๋ฐ์ดํ„ฐ ๊ด€๋ จ ๊ณ„์ธต

  • UUID(Universally Unique Identifier)

  • 128๋น„ํŠธ๋กœ ์ด๋ค„์ง„ ์‹๋ณ„์ž์ด๋‹ค.

  • ์ธํ„ฐ๋„ท ๊ณตํ•™์—์„œ ํ‘œ์ค€์œผ๋กœ ์ง€์ •๋ผ ์žˆ๋‹ค.

  • ์œ ์ผ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ , ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ๋‹ค.

Last updated