Skip to content

Latest commit

ย 

History

History
50 lines (29 loc) ยท 4.5 KB

File metadata and controls

50 lines (29 loc) ยท 4.5 KB

Business Logic Organization Patterns

๋งˆํ‹ดํŒŒ์šธ๋Ÿฌ์˜ Patterns of Enterprise Application Architecture์— ๋‚˜์˜ค๋Š” Business Logic์„ ๊ตฌ์„ฑํ•˜๋Š” ์ฃผ์š”ํ•œ ํŒจํ„ด 2๊ฐ€์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํ†ตํ•ด ์–ด๋–ค ๋ฐฉ์‹์„ ์ทจํ• ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

1.ย Transaction Script Pattern

๊ฐ์ฒด์ง€ํ–ฅ์„ ์ข‹์•„ํ•˜๋”๋ผ๋„ ๊ฐœ๋ฐœํ•  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋„ˆ๋ฌด ๋‹จ์ˆœํ•œ ๊ฒฝ์šฐ ๊ฐ์ฒด์ง€ํ–ฅ ์ ‘๊ทผ์€ ๊ณผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ **์ ˆ์ฐจ์ ์ธ ์ฝ”๋“œ(procedural code)**๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

๋งˆํ‹ดํŒŒ์šธ๋Ÿฌ๋Š” ์ด๋ฅผ Transaction Script Pattern์ด๋ผ๊ณ  ๋ถˆ๋ €๋‹ค.

์ด ๋ฐฉ๋ฒ•์—์„œ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, presentation tier์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด transaction script(OrderService์˜ createOrder, reviseOrder, cancelOrder ๋“ฑ)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

์ด ์ ‘๊ทผ๋ฒ•์˜ ์ค‘์š”ํ•œ ํŠน์„ฑ์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ–‰์œ„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค(OrderService)๊ฐ€ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ํด๋ž˜์Šค(Order)์™€ ๋ถ„๋ฆฌ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

img.png

์Šคํฌ๋ฆฝํŠธ๋Š” ๋ณดํ†ต Service ํด๋ž˜์Šค(OrderService)์— ์œ„์น˜ํ•œ๋‹ค. Service๋Š” ํ•˜๋‚˜์˜ ์š”์ฒญ๊ณผ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ํ–‰์œ„์— ๋Œ€ํ•ด์„œ ํ•˜๋‚˜์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ๊ฐ์ฒด(Order)๋Š” ํ–‰์œ„๊ฐ€ ์—†๊ฑฐ๋‚˜ ๊ฑฐ์˜ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค.

์ด ์ ‘๊ทผ๋ฒ•์€ ๊ฐ„๋‹จํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋Š” ์ž˜ ๋™์ž‘ํ•œ๋‹ค. ๋‹จ์ ์€ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ธฐ์—๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

2. Domain Model Pattern

Transaction Script Pattern์ด ๋‹จ์ˆœํ•˜์—ฌ ๋งค์šฐ ๋งค๋ ฅ์ ์ด์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ณต์žกํ•ด์ง€๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์•…๋ชฝ์ด ๋œ๋‹ค.

์˜ค๋žœ ๊ธฐ๊ฐ„ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•ด ๋ณธ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ณ€๊ฒฝ ์š”๊ตฌ๋Š” ๋Œ€๋ถ€๋ถ„ ๊ธฐ๋Šฅ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์— ๊ธฐ์ธํ•œ๋‹ค๋Š” ์ ์— ๊ณต๊ฐํ•  ๊ฒƒ์ด๋‹ค. Transaction Script Pattern์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๊ฐ€ ํ–‰์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์•„์„œ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ์ƒ๊ธฐ๋ฉด ํ–‰์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์‹ฌ์ง€์–ด ํ–‰์œ„๋ฅผ ๊ฐ€์ง„ ์ฝ”๋“œ๊ฐ€ ์„œ๋น„์Šค ํด๋ž˜์Šค ์™ธ์— ์—ฌ๋Ÿฌ๊ณณ์— ์กด์žฌํ•œ๋‹ค๋ฉด ๋ฌธ์ œ๋Š” ๋” ์‹ฌ๊ฐํ•ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์šด์˜๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์บก์Аํ™”ํ•˜๊ณ  ๊ธฐ๋Šฅ๋งŒ ์™ธ๋ถ€์— ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์ด์—ฌ์•ผ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ์ƒ๊ฒจ๋„ ์™ธ๋ถ€์˜ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

Monolithic Application์ด ์ง€์†์ ์œผ๋กœ ์ปค์ง€๋Š” ์Šต์„ฑ์ด ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด Transaction Script๋„ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ๊ทน๋„๋กœ ๋‹จ์ˆœํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ ˆ์ฐจ์  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” Transaction Script์˜ ์œ ํ˜น์„ ์ด๊ฒจ๋‚ด๊ณ  Domain Model Pattern์„ ์ ์šฉํ•˜์—ฌ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ๊ฐœ๋ฐœํ•ด์•ผ ํ•œ๋‹ค.

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

img_1.png

Transaction Script์™€ ๋™์ผํ•˜๊ฒŒ OrderService๋Š” ๊ฐ ์š”์ฒญ๊ณผ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ํ–‰์œ„์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค. Domain Model Pattern์—์„œ Service ๋ฉ”์†Œ๋“œ๋Š” ๋Œ€๊ฐœ ๋‹จ์ˆœํ•œ๋‹ค. Service ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•ญ์ƒ ๋„๋ฉ”์ธ ๊ฐ์ฒด์—๊ฒŒ ์œ„์ž„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋„๋ฉ”์ธ ๊ฐ์ฒด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๋Œ€๋ถ€๋ถ„์„ ๊ฐ–๋Š”๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด Service ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋“ค์„ ๋กœ๋”ฉํ•˜๊ณ  ๋„๋ฉ”์ธ ๊ฐ์ฒด๋“ค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

์ด ์˜ˆ์˜ ๊ฒฝ์šฐ Order ํด๋ž˜์Šค๋Š” ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค. ์‹ฌ์ง€์–ด ์ƒํƒœ๋Š” private์ด์—ฌ์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ์„ค๊ณ„ ๋ฐฉ์‹์˜ ์žฅ์ 

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