๐Ÿ“Book

ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ์š”์•ฝ

yujch 2024. 9. 23. 14:55
๋ฐ˜์‘ํ˜•

๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ - ํ†ฐ ํ™ˆ๋ฒ„๊ทธ

ํด๋ฆฐ์ฝ”๋“œ์ฑ… ๋‹ค์Œ์œผ๋กœ ํด๋ฆฐ ์•„ํ‚ค์ฒต์ฒ˜๋ฅผ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.
 
 

01. ๊ณ„์ธตํ˜• ์•„ํ‚ค์ฒต์ฒ˜์˜ ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ผ๊นŒ?

- ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜

์†Œ์Šค์ฝ”๋“œ๋ฅผ ์—ญํ• ๊ณผ ๊ด€์‹ฌ์‚ฌ์— ๋”ฐ๋ผ ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌํ•œ ์•„ํ‚คํ…์ฒ˜

์ž˜ ๋งŒ๋“ค์–ด์ง„ ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๋Š” ์„ ํƒ์˜ ํญ์„ ๋„“ํžˆ๊ณ , ๋ณ€ํ™”ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์™ธ๋ถ€์š”์ธ์— ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
 
 

- ๋ฌธ์ œ

1. ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ๋„ ์„ค๊ณ„๋ฅผ ์œ ๋„ํ•œ๋‹ค.
์›น ๊ณ„์ธต์€ ๋„๋ฉ”์ธ ๊ณ„์ธต์— ์˜์กดํ•˜๊ณ , ๋„๋ฉ”์ธ ๊ณ„์ธต์€ ์˜์†์„ฑ ๊ณ„์ธต์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜์กดํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ, ๊ณ„์ธต ์‚ฌ์ด์— ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์ด ์ƒ๊ธด๋‹ค.
์—๋ฅผ๋“ค์–ด, ORM์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๋„๋ฉ”์ธ ๊ณ„์ธต์—์„œ ์—”ํ‹ฐํ‹ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ ‡๊ฒŒ๋˜๋ฉด ์„œ๋น„์Šค๋Š” ์˜์†์„ฑ ๋ชจ๋ธ์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด ์„œ๋น„์Šค์—์„œ ์˜์†์„ฑ ๊ด€๋ จ๋œ ์ž‘์—…๋“ค์„ ํ•˜๊ฒŒ๋˜๋Š”๋ฐ, ์ด๋Ÿฌ๋ฉด ์˜์†์„ฑ ์ฝ”๋“œ๊ฐ€ ๋„๋ฉ”์ธ ์ฝ”๋“œ์— ๋…น์•„๋“ค์–ด์„œ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์–ด๋ ค์›Œ์ง„๋‹ค.
 
2. ์ง€๋ฆ„๊ธธ์„ ํƒํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.
๊ณ„์ธต์˜ ์•„ํ‚คํ…์ฒ˜์˜ ์œ ์ผํ•œ ๊ทœ์น™์€ 'ํŠน์ •ํ•œ ๊ณ„์ธต์—์„œ๋Š” ๊ฐ™์€ ๊ณ„์ธต์— ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋‚˜ ์•„๋ž˜์— ์žˆ๋Š” ๊ณ„์ธต์—๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค' ์ธ๋ฐ, ์ƒ์œ„ ๊ณ„์ธต์— ์œ„์น˜ํ•œ ์ปดํฌ๋„ŒํŠธ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‰ฌ์šด๋ฐฉ๋ฒ•์ธ ํ˜ธ์ถœํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ณด๋‹ค ์•„๋ž˜ ๊ณ„์ธต์œผ๋กœ ๋‚ด๋ ค๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๊ณ„์† ํ•˜๋‹ค๋ณด๋ฉด ํ•˜์œ„์˜ ์˜์†์„ฑ ๊ณ„์ธต์ด ์ ์  ์ปค์ง€๊ฒŒ ๋œ๋‹ค.
 
3. ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค.
๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ์›น ๊ณ„์ธต์—์„œ ์˜์†์„ฑ ๊ณ„์ธต์œผ๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•˜๋Š” ๋“ฑ ๊ณ„์ธต์„ ๊ฑด๋„ˆ๋›ฐ์–ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ,

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ์ฑ…์ž„์ด ์„ž์ด๊ณ  ๋„๋ฉ”์ธ ๋กœ์ง์„ ์ฝ”๋“œ ์—ฌ๊ธฐ์ €๊ธฐ์— ํฉ์–ด์ง€๊ฒŒ ๋งŒ๋“ค๋ฉฐ, ์›น ๊ณ„์ธต ํ…Œ์ŠคํŠธ์—์„œ ๋„๋ฉ”์ธ ๊ณ„์ธต๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜์†์„ฑ ๊ณ„์ธต๋„ ๋ชจํ‚นํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์˜ ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ„๋‹ค.
 
4. ์œ ์Šค์ผ€์ด์Šค๋ฅผ ์ˆจ๊ธด๋‹ค.
์•„ํ‚คํ…์ฒ˜๋Š” ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.
๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๋Š” ๋„๋ฉ”์ธ ์„œ๋น„์Šค์˜  '๋„ˆ๋น„'์— ๊ด€ํ•œ ๊ทœ์น™์„ ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ ์•„ํ‚คํ…์ฒ˜
  • ๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ ๊ณ„์ธต์— ์• ํ”Œ๋ฆฌ์ผ€์•„์…˜๊ณผ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์žˆ๊ณ , ๋‹ค์Œ์œผ๋กœ

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ์•„์ฃผ ๋„“์€ ์„œ๋น„์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ๋„“์€ ์„œ๋น„์Šค๋Š” ์˜์†์„ฑ ๊ณ„์ธต์— ๋งŽ์€ ์˜์กด์„ฑ์„ ๊ฐ–๊ฒŒ ๋˜๊ฒŒ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ์ƒ์—์„œ ํŠน์ • ์œ ์Šค์ผ€์ด์Šค๋ฅผ ์ฐพ๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค.
=> ์„œ๋น„์Šค๊ฐ€ ์œ ์Šค์ผ€์ด์Šค๋ฅผ ์ ๊ฒŒ ๋‹ด๋‹นํ• ์ˆ˜๋ก ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.
 
5. ๋™์‹œ ์ž‘์—…์ด ์–ด๋ ค์›Œ์ง„๋‹ค.
๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์˜์†์„ฑ ๊ณ„์ธต์— ๋งŒ๋“ค์–ด์ง€๊ณ  ๊ทธ๋‹ค์Œ์— ๋„๋ฉ”์ธ ๊ณ„์ธต, ์›น ๊ณ„์ธต ์ˆœ์„œ๋กœ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๊ธฐ๋Šฅ์€ ๋™์‹œ์— ํ•œ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๋งŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค (๋™์‹œ์— ์—ฌ๋Ÿฌ๋ช…์ด ์ž‘์—…ํ•˜๊ฒŒ ๋˜๋ฉด ์ถฉ๋Œ๋‚จ)
 


 

02. ์˜์กด์„ฑ ์—ญ์ „ํ•˜๊ธฐ

๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ๋ฌธ์ œ์ ์— ๋Œ€ํ•œ ๋Œ€์•ˆ
SOLID ์›์น™ ์ค€์ˆ˜ํ•˜๊ธฐ
- SRP (Single Responsibility Principle) : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™
ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ๋ณ€๊ฒฝ์˜ ์ด์œ ๋„ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค.
 
- OCP (Open/Closed Principle) : ๊ฐœ๋ฐฉ - ํ์‡„ ์›์น™
ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.
์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค
 
- LSP (Liskov Substitution Principle) : ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™
ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ž์‹ ํด๋ž˜์Šค๋กœ ๊ต์ฒดํ•ด๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์€ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค.
 
- ISP (Interface Segregation Principle) : ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™
ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
 
- DIP (Dependency Inversion Principle) : ์˜์กด์„ฑ ์—ญ์ „ ์›์น™
๊ณ ์ˆ˜์ค€ ๋ชจ๋“ˆ์€ ์ €์ˆ˜์ค€ ๋ชจ๋“ˆ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋˜๊ณ , ์ถ”์ƒํ™”๋œ ๊ฒƒ์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค.
์ฝ”๋“œ์ƒ์˜ ์–ด๋–ค ์˜์กด์„ฑ์ด๋“  ๊ทธ ๋ฐฉํ–ฅ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.
 
ํด๋ฆฐ ์•„ํ‚ค ํ…์ฒ˜
๊ฒŒ์ธต๊ฐ„์˜ ์˜์กด์„ฑ ๋ฐฉํ–ฅ์€ ๋ชจ๋‘ ์•„๋ž˜๋กœ ํ–ฅํ•ด์•ผํ•œ๋‹ค.
 
์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜ (ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜)

 

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€์ˆ˜0