본문으로 건너뛰기

0001 — 순수 Core를 사용한 엄격한 DDD

컨텍스트​

이 앱은 실제 자금을 이동합니다. 엔드포인트, 백그라운드 서비스, Razor 컴포넌트 전체에 흩어진 비즈니스 규칙은 테스트 불가능하고 일관성 없는 행동으로 부패합니다 — 정확히 버그가 사용자 자본에 비용이 드는 곳.

결정​

도메인 로직은 src/Core의 애그리게이트, 값 객체, 도메인 서비스에 있습니다, 이는 zero 인프라 의존성(EF, HttpClient, Docker, 또는 ASP.NET 없음)으로 컴파일됩니다. 엔드포인트, MCP 도구, 컴포넌트, BackgroundServices 오케스트레이트 — 절대 결정하지 않습니다. 규칙:

  • public setters 없음; 상태 변경은 불변성을 보호하는 의도 드러내기 메서드를 통해.
  • 애그리게이트는 강한 ID로 서로를 참조합니다, 네비게이션 프로퍼티가 아닙니다.
  • 하나의 SaveChanges는 하나의 애그리게이트를 변경합니다; 교차 애그리게이트 흐름은 도메인 이벤트를 사용합니다.
  • 도메인 경계를 넘는 프리미티브는 값 객체로 래핑됩니다.
  • 불변성 위반은 Core DomainException을 throw합니다, 프레임워크 예외가 아닙니다.

결과​

  • 도메인 규칙은 데이터베이스 또는 웹 호스트 없이 단위 테스트 가능합니다.
  • Core 순수성은 ArchitectureGuardTests에 의해 기계적으로 시행되고, 깨지면 빌드가 실패합니다.
  • 빈혈한 모델보다 더 많은 의식(값 객체, 강한 ID, 도메인 이벤트)이 있습니다 — 이것은 자금 이동 규칙을 정확하고 한 곳에 유지하는 의도적인 비용입니다.