AggregateId

DDD์—์„œ AggregateId ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  1. ์‹๋ณ„์ž ๋ถ„๋ฆฌ: AggregateId๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์—”ํ‹ฐํ‹ฐ์˜ ์‹๋ณ„์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Order ์—”ํ‹ฐํ‹ฐ์˜ orderId ํ•„๋“œ๋Š” AggregateId๋กœ ์„ ์–ธ๋˜์–ด ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„๋˜๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์‹๋ณ„์ž๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ๋„๋ฉ”์ธ ๊ฐœ๋…์˜ ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ , ๋„๋ฉ”์ธ ๋ชจ๋ธ์˜ ์˜๋ฏธ๋ฅผ ๋” ์ž˜ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๋„๋ฉ”์ธ ์˜๋ฏธ ๋ถ€์—ฌ: AggregateId๋Š” ๋„๋ฉ”์ธ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, AggregateId๊ฐ€ UUID ํ˜•ํƒœ๋กœ ์ƒ์„ฑ๋˜๋ฉด, ๋„๋ฉ”์ธ์—์„œ ๊ณ ์œ ์„ฑ์„ ๋ณด์žฅํ•˜๋ฉด์„œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ์ดํ•ดํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฉฐ, ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€์™€์˜ ์˜์‚ฌ์†Œํ†ต์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  4. ์ด๋ฒคํŠธ ์†Œ์‹ฑ(Event Sourcing): AggregateId๋Š” ์ด๋ฒคํŠธ ์†Œ์‹ฑ ํŒจํ„ด์—์„œ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์žฌ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ Aggregate์˜ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์€ ํ•ด๋‹น Aggregate์˜ AggregateId๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์˜ ์›์ฒœ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ด์œ ๋กœ DDD์—์„œ AggregateId๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ๊ตฌ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๋„๋ฉ”์ธ์˜ ์˜๋ฏธ๋ฅผ ๋” ์ž˜ ์ „๋‹ฌํ•˜๊ณ , ๋„๋ฉ”์ธ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋ฉฐ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Last updated

Was this helpful?