๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ”ฌ์•„ํ‚คํ…์ฒ˜39

[DDD] Value Object ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์ด์•ผ๊ธฐ ๋ชฉ์ฐจ entity ์— ๋Œ€ํ•œ ์งง์€ ์†Œ๊ฐœ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ entity ์ผ๊นŒ? value object entity ์™€ value object value object ์˜ 3๊ฐ€์ง€ ํŠน์„ฑ ์ธก๋Ÿ‰, ์ธก์ •, ์ˆ˜๋Ÿ‰ํ™”, ํ‘œํ˜„ ๋ถˆ๋ณ€์„ฑ ๋“ฑ๊ฐ€์„ฑ value object ๋Š” ์ด๋ ‡๊ฒŒ ์“ด๋‹ค java ์—์„  lombok ์˜ @Value ๊ฐ€ ์žˆ๋‹ค value object ์™€ context ๊ฐœ๋…์  ํ•˜๋‚˜ ์—”ํ‹ฐํ‹ฐ์˜ ์ฑ…์ž„ ๋ถ„์‚ฐ ์„œ๋ก  ์ง€๋‚œ์‹œ๊ฐ„์— ์—ฌ๋Ÿฌ๋ฒˆ์— ๊ฑธ์ณ์„œ entity ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด์•˜๋‹ค. ๊ธฐ๋ณธ์ ์ธ entity ์˜ ๊ฐœ๋…๊ณผ ํŠน์„ฑ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ entity ์™€ ์‹๋ณ„์ž์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๊นŒ์ง€.. ์ด๋ฒˆ์‹œ๊ฐ„์—๋Š” ์—”ํ‹ฐํ‹ฐ์™€ ๋”๋ถˆ์–ด ๋„๋ฉ”์ธ ๋ชจ๋ธ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ์ธ Value Object, ๊ฐ’ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค entity ์— ๋Œ€ํ•œ ์งง์€ recap va.. 2023. 7. 23.
[DDD] Entity ์™€ ์‹๋ณ„์ž(identifier) ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์ด์•ผ๊ธฐ ๋ชฉ์ฐจ ์„œ๋ก  ์‹๋ณ„์ž๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ์‹๋ณ„์ž์˜ ์ข…๋ฅ˜ ์ „์—ญ ์‹๋ณ„์ž์™€ ์ง€์—ญ ์‹๋ณ„์ž ์‹๋ณ„์ž๋Š” ์–ธ์ œ ์ƒ์„ฑ๋˜๋Š”๊ฐ€? ๋น ๋ฅธ ์‹๋ณ„์ž ์ƒ์„ฑ๊ณผ ๋Šฆ์€ ์‹๋ณ„์ž ์ƒ์„ฑ ๋น ๋ฅธ ์‹๋ณ„์ž: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋Šฆ์€ ์‹๋ณ„์ž: ๊ฐ์ฒด๊ฐ€ ์˜์†ํ™” ๋  ๋•Œ 3๊ฐ€์ง€ ์‹๋ณ„์ž ์ƒ์„ฑ ๋ฐฉ๋ฒ• db ์—์„œ ์ƒ์„ฑ application ์—์„œ ์ƒ์„ฑ ๋‹ค๋ฅธ aggregate ์—์„œ ์ƒ์„ฑ ์„œ๋ก  ์ง€๋‚œ์‹œ๊ฐ„ entity ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด๋‹ค. [DDD] Entity ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์ด์•ผ๊ธฐ ๋ชฉ์ฐจ ์„œ๋ก  entity ๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ๋„๋ฉ”์ธ ์„ธ์ƒ ์ด์•ผ๊ธฐ vo ์™€ entity ๊ฐ€ ์žˆ๋‹ค ๋ฌด์—‡์ด entity ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๊ฐ€? entity ์˜ ์†์„ฑ invariant immutable entity ์˜ ํ–‰์œ„ object autonomy self encapsulation ์„œ๋ก  DDD .. 2023. 7. 15.
[DDD] Entity ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์ด์•ผ๊ธฐ ๋ชฉ์ฐจ ์„œ๋ก  entity ๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ๋„๋ฉ”์ธ ์„ธ์ƒ ์ด์•ผ๊ธฐ vo ์™€ entity ๊ฐ€ ์žˆ๋‹ค ๋ฌด์—‡์ด entity ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๊ฐ€? entity ์˜ ์†์„ฑ invariant immutable entity ์˜ ํ–‰์œ„ object autonomy self encapsulation ์„œ๋ก  DDD ์—์„œ๋Š” ์œ ๋น„์ฟผํ„ฐ์Šค ๋žญ๊ท€์ง€๋ฅผ ํ†ตํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ดํ•ด๊ด€๊ณ„์ž๋“ค๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ์˜์—ญ์— ๋Œ€ํ•ด ํ•ฉ์˜ (Cosensus) ๋ฅผ ๋งž์ถ”๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ๋ชจ๋ธ๋ง ์ฆ‰, domain model ์ด ์‚ฐ์ถœ๋œ๋‹ค. ์ด domain model ์€ ์—ฌ๋Ÿฌ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ง€ํƒฑํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, domain model ์˜ ๊ฐ€์žฅ ๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š” ๋‘๊ฐ€์ง€ ํƒ€์ž…์˜ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•œ๋‹ค. Entity Value Object ์˜ค๋Š˜์€ ์ด Entity ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž Ent.. 2023. 7. 15.
Repository Pattern - ์‹ค์ „ํŽธ (Spring ์—์„œ DIP ๋ฅผ ํ†ตํ•ด Repository ์˜ ์„ ์–ธ๊ณผ ๊ตฌํ˜„ ๋ถ„๋ฆฌ์‹œํ‚ค๊ธฐ) ์ด ๊ธ€์€ ์ด๋ก ๊ณผ ์‹ค์Šต, ๋‘ ํŒŒํŠธ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Repository Pattern ์— ๋Œ€ํ•ด์„œ, ์ด๋ก ํŽธ Repository Pattern - ์‹ค์ „ํŽธ (Spring ์—์„œ DIP ๋ฅผ ํ†ตํ•ด Repository ์˜ ์„ ์–ธ๊ณผ ๊ตฌํ˜„ ๋ถ„๋ฆฌ์‹œํ‚ค๊ธฐ) 2022. 8. 28.
[DDD] Repository Pattern ์ด๋ž€, ์ด๋ก ํŽธ ์ด ๊ธ€์€ ์ด๋ก ๊ณผ ์‹ค์Šต, ๋‘ ํŒŒํŠธ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Repository Pattern ์— ๋Œ€ํ•ด์„œ, ์ด๋ก ํŽธ 2022. 8. 23.
Event-Driven-Architecture ์— ๋Œ€ํ•œ Overview ์™€ ์—ฌ๋Ÿฌ ๊ณ ๋ ค์‚ฌํ•ญ๋“ค ๋ชฉ์ฐจ Event ๋ž€ Event Driven Architecture ๋ž€ Event Driven Architecture ์˜ ๊ตฌํ˜„ ๋ชจ๋ธ Event-Driven-Architecture ์—์„œ ๊ณ ๋ คํ•ด์•ผํ•  ๋ฌธ์ œ๋“ค Event ๋ž€ Event ๋Š” ๋ฌด์—‡์ผ๊นŒ? Event ์˜ ๊ฐœ๋…์€ ๊ฐ„๋‹จํ•˜๋‹ค. ์ด๋ฒคํŠธ๋Š” ๊ณผ๊ฑฐ์— ์ผ์–ด๋‚œ ์–ด๋– ํ•œ ์‚ฌ๊ฑด์ด๋‹ค. Event-Streaming-Platform ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด์„œ ๋ถ„์‚ฐ๋œ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ณ  ์–ด๋– ํ•œ side effect ๋ฅผ ์ผ์œผํ‚ค๊ฑฐ๋‚˜ ํŠน์ • process ๋ฅผ trigger ํ•˜๋ฉฐ ์–ด๋–จ ๋Œ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”๋ฅผ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ์ด์œ ๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ๋ฐ”๋กœ ์‹œ์Šคํ…œ๊ฐ„ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€.. 2022. 8. 22.