--- id: P-REINFORCE-AUTO-5D91AB category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 도메인 기반 섀계(DDD)의 μ‹λ³„μž 뢄리" --- # [[도메인 기반 섀계(DDD)의 μ‹λ³„μž 뢄리]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 지식 μš”μ•½ 정보 μΆ”μΆœ 쀑... ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **'κΈ°λ³Έ νƒ€μž…μ—μ˜ μ§‘μ°©(Primitive Obsession)' 문제 극볡** TypeScript와 같은 ꡬ쑰적 타이핑(Structural Typing) μ‹œμŠ€ν…œμ—μ„œλŠ” ꡬ쑰가 동일할 경우 νƒ€μž… ν˜Έν™˜μ΄ ν—ˆμš©λ©λ‹ˆλ‹€ [1]. 이둜 인해 μ‚¬μš©μž ID(UserId)와 μ£Όλ¬Έ ID(OrderId)κ°€ λͺ¨λ‘ `string` νƒ€μž…μœΌλ‘œ ν‘œν˜„λ  경우, μ„œλ‘œ λ‹€λ₯Έ 의미의 λ°μ΄ν„°μž„μ—λ„ λΆˆκ΅¬ν•˜κ³  μ»΄νŒŒμΌλŸ¬κ°€ 이λ₯Ό κ΅¬λΆ„ν•˜μ§€ λͺ»ν•˜μ—¬ 데이터가 μ„žμ΄λŠ” 치λͺ…적인 μ‹€μˆ˜λ₯Ό λ°©μ§€ν•  수 μ—†λŠ” λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€ [1, 4]. 도메인 기반 μ„€κ³„μ—μ„œλŠ” μ΄λŸ¬ν•œ 'κΈ°λ³Έ νƒ€μž…μ—μ˜ μ§‘μ°©'을 ν•΄κ²°ν•˜κ³  λͺ…ν™•ν•œ 경계λ₯Ό μ„Έμš°κΈ° μœ„ν•΄ μ‹λ³„μžλ₯Ό νƒ€μž… λ ˆλ²¨μ—μ„œ 뢄리해야 ν•©λ‹ˆλ‹€ [1]. - **λΈŒλžœλ””λ“œ νƒ€μž…(Branded Types)을 ν†΅ν•œ μ‹λ³„μž 뢄리 κ΅¬ν˜„** μ‹λ³„μžμ˜ ꡬ뢄을 μœ„ν•΄ **λΈŒλžœλ””λ“œ νƒ€μž…**μ΄λ‚˜ **였파크 νƒ€μž…** νŒ¨ν„΄μ„ μ‚¬μš©ν•˜μ—¬, 기반이 λ˜λŠ” νƒ€μž…(예: λ¬Έμžμ—΄μ΄λ‚˜ 숫자)에 κ³ μœ ν•œ 심볼(Unique Symbol)μ΄λ‚˜ κ°€μƒμ˜ λΈŒλžœλ“œ 속성을 λΆ€μ—¬ν•©λ‹ˆλ‹€ [1, 4]. 이λ₯Ό 톡해 μ»΄νŒŒμΌλŸ¬λŠ” λŸ°νƒ€μž„ ꡬ쑰가 λ™μΌν•œ μ›μ‹œ νƒ€μž…μ΄λΌ ν•˜λ”λΌλ„, μ„œλ‘œ λ‹€λ₯Έ λΈŒλžœλ“œλ₯Ό κ°€μ§„ μ‹λ³„μžλ₯Ό λ³„κ°œμ˜ νƒ€μž…μœΌλ‘œ μ·¨κΈ‰ν•˜κ²Œ λ©λ‹ˆλ‹€ [4, 5]. 예λ₯Ό λ“€μ–΄, `UserId`와 `OrderId`λ₯Ό 이 νŒ¨ν„΄μœΌλ‘œ μ •μ˜ν•˜λ©΄ 두 μ‹λ³„μžλ₯Ό μ‹€μˆ˜λ‘œ κ΅μ°¨ν•˜μ—¬ ν• λ‹Ήν•˜λŠ” 것을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. - **도메인 λ‚΄ 무결성을 λ³΄ν˜Έν•˜λŠ” '신뢄증 μ‹œμŠ€ν…œ' μ—­ν• ** 도메인 기반 섀계(DDD)μ—μ„œ λΈŒλžœλ””λ“œ νƒ€μž…μ˜ ν™œμš©μ€ 특히 빛을 λ°œν•©λ‹ˆλ‹€ [2]. `UserId`, `OrderId`, ν˜Ήμ€ λŒ“κΈ€ ID와 κ²Œμ‹œκΈ€ ID(`CommentId`, `PostId`) λ“± λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ˜ GUID(Globally Unique ID)λ₯Ό μ—„κ²©νžˆ λΆ„λ¦¬ν•¨μœΌλ‘œμ¨, λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ—¬λŸ¬ 데이터 μœ ν˜•μ΄ μ‹€μˆ˜λ‘œ λ’€λ°”λ€ŒλŠ” 것을 λ§‰μ•„μ€λ‹ˆλ‹€ [2, 6, 7]. μ΄λŠ” κ²€μ¦λ˜κ³  μ˜¬λ°”λ₯Έ λ§₯락의 μ‹λ³„μž λ°μ΄ν„°λ§Œμ΄ μ‹œμŠ€ν…œμ˜ 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직으둜 μ§„μž…ν•˜λ„λ‘ κ°•μ œν•˜λŠ” **"신뢄증 μ‹œμŠ€ν…œ"**κ³Ό 같은 μˆ˜λΉ„μ  역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ [2]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[λΈŒλžœλ””λ“œ νƒ€μž…(Branded Types)]], [[였파크 νƒ€μž…(Opaque Types)]], [[κΈ°λ³Έ νƒ€μž…μ—μ˜ μ§‘μ°©(Primitive Obsession)]], [[ꡬ쑰적 타이핑(Structural Typing)]] - **Projects/Contexts:** [[TypeScript의 μ•ˆμ „ν•œ 도메인 λͺ¨λΈλ§]], [[데이터 μ˜€μ—Ό λ°©μ§€ 및 무결성 보호 체계]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ TypeScript의 ꡬ쑰적 타이핑은 맀우 νŽΈλ¦¬ν•˜μ§€λ§Œ μ‹λ³„μžμ²˜λŸΌ κ³ μœ μ„±μ΄ ν•„μš”ν•œ 데이터λ₯Ό κ΅¬λ³„ν•˜μ§€ λͺ»ν•˜λŠ” ν—ˆμ μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. 이λ₯Ό λͺ…λͺ©μ  타이핑(Nominal Typing)κ³Ό μœ μ‚¬ν•œ 효과λ₯Ό λ‚΄λŠ” λΈŒλžœλ””λ“œ νƒ€μž…μœΌλ‘œ λ³΄μ™„ν•΄μ•Όλ§Œ 도메인 μ‹λ³„μžλ₯Ό μ—„κ²©νžˆ 뢄리할 수 μžˆλ‹€λŠ” 점이 μΌκ΄€λ˜κ²Œ κ°•μ‘°λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [1, 5, 8]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/도메인 기반 섀계(DDD)의 μ‹λ³„μž 뢄리.md]] ---