피드로 돌아가기
Día 14: Cambiaste una clase y rompiste 10 más. Efecto dominó.
Dev.toDev.to
Backend

Shared DTO 제거를 통한 영향 범위 축소 및 변경 비용 90% 절감

Día 14: Cambiaste una clase y rompiste 10 más. Efecto dominó.

Alejandro Lafourcade Despaigne2026년 4월 23일6intermediate

Context

단일 UserDTO를 Controller, Service, Persistence 계층 전반에 공유하며 발생한 High Coupling 문제 분석. 필드 변경 시 연쇄적으로 10개 이상의 클래스가 파손되는 Domino Effect와 낮은 Cohesion으로 인한 유지보수 효율 저하가 핵심 한계점으로 작용.

Technical Solution

  • 계층별 요구사항에 맞춘 전용 모델 분리를 통한 Low Coupling 구조 설계
  • CreateUserRequest, UserResponse 등 목적별 DTO 세분화로 데이터 노출 최소화
  • NotificationService, UserExportService 등 도메인 기능별 서비스 분리를 통한 High Cohesion 달성
  • 각 레이어가 필요한 데이터만 수신하는 Interface 설계로 변경 영향 범위 격리
  • 중복 코드 발생보다 명시적 모델 분리를 우선하는 설계 전략 채택

1. 변경 시 수정 클래스가 3개 이상인지 확인하여 High Coupling 여부 판단

2. 클래스 내 메서드들이 서로 다른 변경 이유를 갖는지 검토하여 Cohesion 수준 진단

3. 계층 간 공유 DTO 사용 시 각 레이어의 필수 필드 일치 여부 재검증

원문 읽기