[Beyond SW] ๐ŸšงCQRS

์ด๊ฒฝ๋ฏผยท2025๋…„ 12์›” 4์ผ

ํ•œํ™”์‹œ์Šคํ…œ Beyond SW

๋ชฉ๋ก ๋ณด๊ธฐ
37/52

CQRS

: ์ฝ๊ธฐ(์ฟผ๋ฆฌ)์™€ ์“ฐ๊ธฐ(๋ช…๋ น)์˜ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด
์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์ž‘์—…์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜์žˆ์Œ
์‹œ์Šคํ…œ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ ๋†’์ž„
์ฝ๊ธฐ,์“ฐ๊ธฐ ์ž‘์—…์„ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅ ๋ฐ ์ตœ์ ํ™” ๊ฐ€๋Šฅ

Command Side

์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…(์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ)์— ์ค‘์ 
๋„๋ฉ”์ธ ์—”ํ‹ฐํ‹ฐ์™€ ์ผ๊ด€์„ฑ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

  • Application Layer
    Controller : ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ช…๋ น ์š”์ฒญ
    Service : ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ. ๋ช…๋ น ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๋กœ์ง ์‹คํ–‰, ๋ฐ์ดํ„ฐ ์กฐ์ž‘
    DTO : ๋ช…๋ น ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ๊ฐ์ฒด. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์„œ๋น„์Šค๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ• ๋•Œ ์‚ฌ์šฉ๋จ.

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

Query Side

๋ฐ์ดํ„ฐ ์กฐํšŒ ์ž‘์—…์— ์ค‘์ 
์ฝ๊ธฐ์ž‘์—… ์ตœ์ ํ™”

0๊ฐœ์˜ ๋Œ“๊ธ€