--- id: P-REINFORCE-AUTO-DDDB06 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)α„‹α…΄ 데아ᄐα…₯ α„€α…₯α†·α„Œα…³α†Ό|도메인 기반 섀계(DDD)의 데이터 검증]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 도메인 기반 섀계(DDD)μ—μ„œ 데이터 검증은 λ‹¨μˆœν•œ μœ νš¨μ„± 확인을 λ„˜μ–΄, μ‹ λ’°ν•  수 μžˆλŠ” 데이터λ₯Ό 도메인 객체둜 λ³€ν™˜ν•˜μ—¬ μ‹œμŠ€ν…œ λ‚΄λΆ€λ₯Ό λ³΄ν˜Έν•˜λŠ” μ•„ν‚€ν…μ²˜μ  κ³Όμ •μž…λ‹ˆλ‹€ [1, 2]. 주둜 λΈŒλžœλ””λ“œ νƒ€μž…(Branded Types)κ³Ό "κ²€μ¦ν•˜μ§€ 말고 νŒŒμ‹±ν•˜λΌ(Parse, Don't Validate)"λΌλŠ” 철학을 κ²°ν•©ν•˜μ—¬, μ‹œμŠ€ν…œ κ²½κ³„μ—μ„œ λΆˆν™•μ‹€ν•œ 데이터λ₯Ό λͺ…ν™•ν•˜κ²Œ νƒ€μž…ν™”λœ ꡬ체적 객체둜 λ³€ν™˜ν•©λ‹ˆλ‹€ [1-4]. 이λ₯Ό 톡해 잘λͺ»λœ λ°μ΄ν„°μ˜ μœ μž…μ„ μ›μ²œ μ°¨λ‹¨ν•˜κ³  예츑 κ°€λŠ₯ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν•©λ‹ˆλ‹€ [4, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **λΈŒλžœλ””λ“œ νƒ€μž…(Branded Types)을 ν†΅ν•œ 도메인 데이터 보호:** TypeScript와 같은 ꡬ쑰적 타이핑 μ‹œμŠ€ν…œμ—μ„œλŠ” 이메일과 μ‚¬μš©μž μ΄λ¦„μ²˜λŸΌ λ™μΌν•œ λ¬Έμžμ—΄(string) 기반의 데이터가 잘λͺ» μ„žμ—¬ μ‚¬μš©λ˜λŠ” 'κΈ°λ³Έ νƒ€μž…μ—μ˜ μ§‘μ°©(Primitive Obsession)' λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [6]. 도메인 기반 섀계(DDD)μ—μ„œλŠ” 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ λŸ°νƒ€μž„μ—λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ‚˜ 컴파일 μ‹œμ μ— μ‘΄μž¬ν•˜λŠ” κ³ μœ ν•œ μ‹λ³„μžλ₯Ό λΆ€μ—¬ν•˜λŠ” 'λΈŒλžœλ””λ“œ νƒ€μž…'을 μ‚¬μš©ν•©λ‹ˆλ‹€ [6]. 이λ₯Ό 톡해 `UserId`와 `OrderId`λ₯Ό μ—„κ²©νžˆ λΆ„λ¦¬ν•˜μ—¬ 데이터 ν˜Όμš©μ„ λ°©μ§€ν•˜λ©°, κ²€μ¦λœ 데이터(예: `SanitizedString`)만이 μ‹œμŠ€ν…œ λ‚΄λΆ€ 둜직으둜 μ§„μž…ν•˜λ„λ‘ κ°•μ œν•˜λŠ” 신뢄증 역할을 ν•©λ‹ˆλ‹€ [4]. * **"κ²€μ¦ν•˜μ§€ 말고 νŒŒμ‹±ν•˜λΌ(Parse, Don't Validate)" μ² ν•™:** 데이터 검증은 λ‹¨μˆœνžˆ μ°Έ/κ±°μ§“ μœ νš¨μ„±μ„ μ²΄ν¬ν•˜λŠ” 것에 λ¨Έλ¬ΌλŸ¬μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€ [2]. μ‹œμŠ€ν…œμ˜ 경계(Boundary)μ—μ„œ νƒ€μž…μ΄ λΆˆν™•μ‹€ν•œ 데이터λ₯Ό μž…λ ₯λ°›μ•„, 단 1회의 νŒŒμ‹±μ„ 톡해 μ‹ λ’°ν•  수 μžˆλŠ” 잘 μ •μ˜λœ νƒ€μž…μ˜ 객체둜 λ³€ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1-3]. νŒŒμ‹± κ³Όμ • μžμ²΄κ°€ μœ νš¨μ„± 검증과 λ³€ν™˜μ„ λ™μ‹œμ— μˆ˜ν–‰ν•˜λ©°, 이 관문을 ν†΅κ³Όν•œ λ°μ΄ν„°λŠ” μ΄ν›„μ˜ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ—μ„œ μ™„μ „νžˆ κ²€μ¦λœ νƒ€μž…μ˜ ν˜•νƒœλ‘œ μ•ˆμ „ν•˜κ²Œ λ‹€λ£¨μ–΄μ§‘λ‹ˆλ‹€ [1]. * **경계면 μ œμ–΄ 흐름 μ΅œμ ν™” 및 λŸ°νƒ€μž„ 검증 λ„κ΅¬μ˜ κ²°ν•©:** 데이터λ₯Ό κ²½κ³„λ©΄μ—μ„œ λ‹¨λ²ˆμ— νŒŒμ‹± 및 κ²€μ¦ν•˜λ©΄, μœ νš¨μ„± 검사 둜직이 μ‹œμŠ€ν…œ λ‚΄λΆ€μ˜ μ œμ–΄ 흐름(Control flow) 곳곳에 μ§€μ €λΆ„ν•˜κ²Œ μ‚°μž¬ν•˜λŠ” 것을 λ§‰μ•„μ€λ‹ˆλ‹€ [3]. 특히 Zod와 같은 λŸ°νƒ€μž„ 검증 λΌμ΄λΈŒλŸ¬λ¦¬μ™€ λΈŒλžœλ””λ“œ νƒ€μž…μ„ κ²°ν•©ν•˜λ©΄, μœ νš¨μ„± 검사λ₯Ό ν†΅κ³Όν•œ λŸ°νƒ€μž„ 데이터에 λΈŒλžœλ””λ“œ νƒ€μž…μ„ μ•ˆμ „ν•˜κ²Œ λΆ€μ—¬ν•˜μ—¬ 이 철학을 ꡬ체적으둜 μ‹€ν˜„ν•˜κ³  μ‹œμŠ€ν…œμ˜ 데이터 무결성을 달성할 수 μžˆμŠ΅λ‹ˆλ‹€ [2, 7, 8]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[브ᄅᅒᆫ다드 ᄐᅑ압(Branded Types)|λΈŒλžœλ””λ“œ νƒ€μž…(Branded Types)]], [[Parse dont validate|Parse, Don't Validate]] - **Projects/Contexts:** Zodλ₯Ό ν™œμš©ν•œ λŸ°νƒ€μž„ 데이터 μœ νš¨μ„± 검사, TypeScript ꡬ쑰적 νƒ€μ΄ν•‘μ˜ ν•œκ³„ 극볡 - **Contradictions/Notes:** 도메인 기반 섀계(DDD)의 데이터 검증 방식에 λŒ€ν•œ μƒλ°˜λœ μ£Όμž₯μ΄λ‚˜ λͺ¨μˆœμ μ— λŒ€ν•΄μ„œλŠ” μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/도메인 기반 섀계(DDD)의 데이터 검증.md ---