피드로 돌아가기
Reducing Complexity: Replacing Entity-Based Services and Repositories with Purposeful Layers in Software Design
Dev.toDev.to
Backend

불필요한 Entity-Based Layer 제거를 통한 아키텍처 복잡도 최적화

Reducing Complexity: Replacing Entity-Based Services and Repositories with Purposeful Layers in Software Design

Artyom Kornilov2026년 6월 25일12intermediate

Context

UserService 및 UserRepository와 같이 Entity 중심으로 설계된 정형화된 계층 구조의 무분별한 적용으로 인한 시스템 비대화 발생. 단순 위임(Delegation) 수준의 레이어 반복으로 인해 추상화 없는 간접 참조만 증가하며 인지 부하와 유지보수 비용이 상승하는 한계점 노출.

Technical Solution

  • Entity 기반의 Generic Service를 특정 Use Case 중심의 Action-based Class(예: RegisterNewUser)로 대체하여 설계 의도 명확화
  • 복잡한 데이터 로직(Sharding, Caching, Multi-source persistence)이 없는 경우 Repository 계층을 제거하고 ORM을 직접 사용함으로써 불필요한 래퍼 제거
  • 다중 구현체가 존재하지 않는 경우 인터페이스 도입을 배제하여 코드베이스의 수평적 확장 억제 및 수직적 로직 심화 유도
  • 구조적 템플릿 준수보다 복잡성 격리(Complexity Isolation)라는 실제적 목적에 따른 레이어 생존 여부 결정
  • '구조 중심'에서 '의도 중심'으로 설계 패러다임을 전환하여 시스템 동작과 코드 구조의 일치성 확보

- 해당 Service가 단순히 Repository의 메서드를 호출하기만 하는 위임 객체인지 검토 - Repository 계층이 ORM 기본 기능 외에 별도의 복잡한 데이터 접근 전략을 수행하는지 확인 - 인터페이스의 실제 구현체가 단 하나뿐이며 다형성이 필요 없는 상황인지 분석 - Use Case 단위로 클래스를 분리하여 도메인 로직의 응집도를 높일 수 있는지 검토

원문 읽기