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

๐Ÿ”ฌweb application40

[distributed system] CAP ์ด๋ก ๊ณผ PACELC ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ ๋ชฉ์ฐจ TL;DR ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ 3 ๊ฐ€์ง€ Gaurantee CAP ์ด๋ก  CP ์‹œ์Šคํ…œ AP ์‹œ์Šคํ…œ CAP ์‹œ์Šคํ…œ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด์œ  CAP ์ด๋ก ์˜ ํ•œ๊ณ„ PACELC ์ด๋ก  TL;DR ์ด๋ฒˆ ๊ธ€์˜ ํ•ต์‹ฌ์„ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. CAP ์ด๋ก  ํŒŒํ‹ฐ์…˜์ด ํ•ญ์ƒ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ C, A ์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ์ด๋ก  Consistency Availability Partition Tolerance CAP ์ด๋ก ์˜ ํ•œ๊ณ„ ์™„๋ฒฝํ•œ CP, AP ์‹œ์Šคํ…œ์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค ๋Œ€๋ถ€๋ถ„์˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์€ CP ์™€ AP ์‚ฌ์ด ์–ด๋””์ฏค์ด๋‹ค PACELC ์ด๋ก  partition ์ƒํ™ฉ๊ณผ ์•„๋‹Œ(else) ์ƒํ™ฉ์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ๊ฐ trade off ์˜ ์•ž ๊ธ€์ž๋ฅผ ๋”ด ์ด๋ก  ํŒŒํ‹ฐ์…˜ partition ์ƒํ™ฉ์ผ ๊ฒฝ์šฐ Avaliabilt.. 2023. 11. 12.
[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.