피드로 돌아가기
Thinking In Layers
Dev.toDev.to
Backend

Layered Architecture 기반의 Controller 비대화 및 결합도 해결 전략

Thinking In Layers

Steve McDougall2026년 5월 19일8intermediate

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 여부 판단

원문 읽기