피드로 돌아가기
Dev.toBackend
원문 읽기
.NET 8 기반 Clean Architecture 도입을 통한 테스트 시간 단축 및 도메인 무결성 확보
Clean Architecture in .NET 8: A 2026 Starter Template with 4 Projects, EF Core, and JWT Auth
AI 요약
Context
비즈니스 로직이 Controller와 DbContext에 산재하여 유지보수 효율이 저하된 레거시 구조 분석. 모든 테스트에 SQL Server 의존성이 발생하여 CI 파이프라인 속도가 저하되는 병목 지점 식별.
Technical Solution
- Api, Application, Infrastructure, Domain의 4계층 분리를 통한 엄격한 Dependency Direction 강제
- Domain Project 내 Entity가 자체 Invariant를 관리하는 로직을 구현하여 서비스 계층의 검증 책임 제거
- Application Project에서 Use Case 중심의 인터페이스를 정의하여 외부 인프라 의존성 배제
- Infrastructure Project에 EF Core 및 JWT 구현체를 격리하여 DB 교체 및 확장성 확보
- Moq를 활용한 Application 계층 Unit Test 환경 구축으로 DB 연결 없는 독립적 검증 체계 마련
- Compiler 레벨의 프로젝트 참조 제약을 통해 순환 참조를 원천 차단하는 구조 설계
Impact
- DB 의존성 제거를 통한 Unit Test 실행 시간 1.2s 수준으로 단축
- 기존 20분 소요되던 CI 프로세스의 획기적 속도 개선 달성
Key Takeaway
아키텍처의 핵심은 단순한 폴더 구조가 아닌 코드 배치 제약(Constraint)을 통한 의존성 관리이며, 비즈니스 규칙은 서비스가 아닌 도메인 객체가 직접 소유해야 함.
실천 포인트
- 도메인 엔티티의 setter를 제한하고 비즈니스 로직을 포함한 메서드로 상태 변경을 제어하는지 확인 - Application 계층이 Infrastructure 계층의 구체 클래스를 참조하고 있지 않은지 검토 - 모든 Unit Test가 DB 연결 없이 Moq 등의 Mocking 도구만으로 실행 가능한지 검증 - 계층 간 데이터 전달 시 Entity 대신 DTO를 사용하여 도메인 모델의 외부 노출을 방지하고 있는지 확인