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

๐Ÿ”ฌweb application41

์˜คํ”„์…‹ ํŽ˜์ด์ง•์ด ๋А๋ฆฐ ์ง„์งœ ์ด์œ  ์ด ๊ธ€์€ offset based pagination ์„ ๋นŒ๋ฏธ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด๋ถ€ ๋™์ž‘๊ณผ ์—ฌ๋Ÿฌ ๊ฐœ๋…๋“ค์„ ์•Œ์•„๋ณด๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. 2๊ฐœ์˜ ๊ธ€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ๊ฐ๊ฐ์˜ ๊ธ€์—์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” insight ๊ฐ€ ๋‹ค๋ฅด๋‹ˆ ํ•จ๊ป˜ ์ฝ์œผ๋ฉด ๋”์šฑ ์œ ์ตํ•ฉ๋‹ˆ๋‹ค. ์˜คํ”„์…‹ ํŽ˜์ด์ง•์ด ๋А๋ฆฐ ์ง„์งœ ์ด์œ  ๋А๋ฆผ์˜ ๊ทผ๋ณธ์ ์ธ ์›์ธ 0๋ฒˆ offset ๋ถ€ํ„ฐ ์‹œ์ž‘ offset ๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฒ„๋ ค์ง€๊ณ  10๊ฑด๋งŒ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜๋จ offset based pagination ์ด ๋А๋ฆฐ ์ด์œ  ๋ฌธ์ œ๋Š” ์ •๋ ฌ ๋ฐฉ์‹์— ์žˆ์Œ ์ •๋ ฌ์„ ์œ„ํ•ด ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ streaming ์ด ์•„๋‹Œ buffering ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ streaming vs buffering streaming: ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ฆ‰์‹œ client ์—๊ฒŒ ๋ฐ˜ํ™˜ LIMIT ๊ตฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์ด์  ์กด์žฌ bufferi.. 2023. 11. 19.
[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.