도메인 시스템
도메인 기반 스펙 관리에 대한 가이드입니다.
개요
도메인은 관련 스펙을 논리적으로 그룹화하는 단위입니다. 대규모 프로젝트에서 스펙을 체계적으로 관리할 수 있습니다.
도메인이란?
프로젝트
├── auth/ # 인증 도메인
│ ├── user-login
│ ├── oauth-google
│ └── session-management
├── order/ # 주문 도메인
│ ├── create-order
│ ├── payment
│ └── refund
└── core/ # 핵심 도메인
├── data-model
└── validation도메인 설정
domains.yml
도메인은 .sdd/domains.yml 파일로 정의합니다:
yaml
version: "1.0"
domains:
core:
description: "핵심 기능 및 공통 유틸리티"
path: "src/core"
specs:
- data-model
- common-utils
auth:
description: "인증 및 인가"
path: "src/auth"
specs:
- user-login
- oauth-google
dependencies:
uses: [core]
order:
description: "주문 및 결제"
path: "src/order"
specs:
- create-order
- payment
dependencies:
uses: [core, auth]도메인 속성
| 속성 | 설명 |
|---|---|
description | 도메인 설명 |
path | 소스 코드 경로 |
specs | 연결된 스펙 목록 |
dependencies | 의존하는 도메인 |
owner | 담당자 (선택) |
tags | 태그 (선택) |
도메인 관리
도메인 생성
bash
# 기본 생성
sdd domain create auth
# 옵션 포함
sdd domain create auth \
--description "인증/인가" \
--path "src/auth" \
--depends-on core도메인 조회
bash
# 목록 조회
sdd domain list
# 상세 정보
sdd domain show auth
# 의존성 트리
sdd domain list --tree스펙 연결
bash
# 스펙을 도메인에 연결
sdd domain link auth user-login
# 연결 해제
sdd domain unlink auth user-login의존성 설정
bash
# 의존성 추가
sdd domain depends order --on auth
# 의존성 제거
sdd domain depends order --on auth --remove의존성 그래프
시각화
bash
# Mermaid 형식
sdd domain graph
# DOT 형식
sdd domain graph --format dot
# 파일로 저장
sdd domain graph --output graph.md출력 예시
mermaid
graph LR
core --> auth
core --> order
auth --> order순환 의존성 감지
순환 의존성은 자동으로 감지됩니다:
❌ 순환 의존성 감지: auth → order → payment → auth도메인 검증
bash
# 모든 도메인 검증
sdd validate --domain
# 특정 도메인만
sdd validate --domain auth
# 고아 스펙 확인
sdd validate --orphan-specs검증 항목
- 도메인 존재 여부
- 스펙-도메인 일관성
- 의존성 규칙 준수
- 순환 의존성 없음
스펙 생성과 도메인
도메인/스펙 형식
bash
sdd new mfa-setup -d auth
# → .sdd/specs/auth/mfa-setup/spec.md (v1.3.0)이 명령은:
auth도메인 존재 확인.sdd/specs/auth/mfa-setup/디렉토리에 스펙 생성- domains.yml 자동 업데이트
v1.3.0 구조
스펙은 항상 specs/<domain>/<feature>/spec.md 형식으로 생성됩니다. 도메인 미지정 시 common 도메인에 생성됩니다.
도메인 자동 감지
컨텍스트가 설정된 경우 도메인을 자동 감지합니다:
bash
sdd context set auth
sdd new mfa-setup # auth/mfa-setup으로 생성도메인별 템플릿
각 도메인에 커스텀 템플릿을 정의할 수 있습니다:
.sdd/domains/auth/templates/
├── spec.md # 스펙 템플릿
└── scenario.md # 시나리오 템플릿모범 사례
도메인 설계 원칙
- 단일 책임: 하나의 도메인은 하나의 비즈니스 영역
- 낮은 결합도: 도메인 간 의존성 최소화
- 높은 응집도: 관련 스펙은 같은 도메인에
권장 구조
├── core/ # 공통 기능
├── auth/ # 인증
├── user/ # 사용자 관리
├── order/ # 주문
└── payment/ # 결제피해야 할 패턴
- 너무 큰 도메인 (10+ 스펙)
- 너무 작은 도메인 (1-2 스펙)
- 양방향 의존성
- 순환 의존성