Files
2nd/10_Wiki/Topics/Programming & Language/도메인 기반 설계(DDD)의 식별자 분리.md
T

38 lines
3.6 KiB
Markdown

---
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]]
---