피드로 돌아가기
Dev.toBackend
원문 읽기
Layered Architecture 기반의 Controller 비대화 및 결합도 해결 전략
Thinking In Layers
AI 요약
Context
단순한 Model-Controller 구조에서 발생하는 Fat Controller 현상으로 인한 유지보수성 저하 분석. 요청 처리, 비즈니스 로직, 데이터 영속성 계층의 경계 부재로 인한 코드 중복 및 테스트 난이도 상승 문제 직면.
Technical Solution
- HTTP Layer 도입을 통한 Request 유효성 검증 및 Response 포맷팅 전담 구조 설계
- Business Layer 구축으로 HTTP 의존성을 제거한 순수 도메인 로직(Actions, Services) 분리
- Data Layer의 역할을 DB 레코드 표현 및 관계 정의로 한정하여 Model의 비대화 방지
- '문제-병목-해결' 흐름에 따라 로직의 재사용성과 복잡도에 기반한 계층 분리 의사결정 적용
- 단순 CRUD의 경우 과잉 설계(Over-engineering)를 방지하기 위해 전략적 간소화 유지
실천 포인트
- Controller 내 비즈니스 로직 및 DB 쿼리 직접 호출 여부 확인 - Model 내에 비즈니스 규칙이나 알림 전송 등 외부 서비스 로직이 포함되었는지 검토 - 특정 로직이 HTTP 요청 외에 다른 진입점(예: Job, CLI)에서 재사용 가능한지 분석 - 계층 분리 시 불필요한 Indirection이 발생하는 단순 CRUD 여부 판단