피드로 돌아가기
Dev.toBackend
원문 읽기
FBCA 도입을 통한 NestJS 모듈 의존성 제어 및 코드 부식 방지
Feature Based Clean Architecture. Part 4: FBCA: Formalizing Responsibility Boundaries in a NestJS Module
AI 요약
Context
단순 Feature 기반 구조의 NestJS 프로젝트에서 비즈니스 로직과 인프라의 경계 부재로 인한 코드 품질 저하 발생. 시간이 흐를수록 Service 클래스의 비대화와 forwardRef 남발로 인한 복잡한 의존성 그래프 형성 및 유지보수성 상실.
Technical Solution
- Feature Based Clean Architecture(FBCA)를 통한 모듈 내부의 명시적 계층 분리
- Domain 계층을 최하단에 배치하여 프레임워크 및 외부 라이브러리 의존성을 완전히 제거한 순수 비즈니스 모델 설계
- Use Case 계층에서 시나리오 기반 오케스트레이션을 수행하여 기존 Service의 비대화 문제 해결
- Infrastructure 계층에 Repository 추상화를 도입하여 데이터 저장소 및 외부 API 호출 로직을 격리
- Presentation 계층을 통해 HTTP 전송 계층과 비즈니스 로직의 진입점을 분리하여 인터페이스 변경 유연성 확보
- Presentation → Use Case → Infrastructure → Domain 방향의 단방향 의존성 흐름 강제
실천 포인트
- 모듈 내부에 domain, use-case, infrastructure, presentation 폴더 구조가 명확히 분리되어 있는가? - Domain 계층의 코드가 특정 프레임워크나 ORM 엔티티에 의존하고 있지는 않은가? - Use Case가 HTTP 요청 객체(Request/Response)를 직접 참조하여 비즈니스 로직을 처리하고 있지는 않은가? - 의존성 방향이 항상 내부(Domain)를 향하며 역방향 참조나 순환 참조가 발생하지 않는가?