피드로 돌아가기
Dev.toBackend
원문 읽기
SOLID 원칙 기반 Rich Domain Model 구축을 통한 확장성 확보
Rich domain modelling: a library story
AI 요약
Context
DB Schema 중심의 Anemic Domain Model 설계로 인한 비즈니스 로직 분산 및 유지보수 효율 저하 발생. 요구사항 변경 시 여러 서비스 메서드와 복잡한 Join 쿼리를 수정해야 하는 구조적 한계 직면.
Technical Solution
- Single Responsibility Principle 적용을 통한 Book과 Loan 엔티티 분리 및 도메인 책임 명확화
- 대여 이력 관리 및 통계 분석 가능 구조를 위한 Loan 엔티티의 First-class Entity 격상
- Open/Closed Principle 기반의 LendableItem 추상화 도입으로 신규 아이템 타입 추가 시 코드 수정 없는 확장 구현
- ItemType 설정을 통한 Data-driven 확장 구조 설계로 런타임 구성 변경 가능성 확보
- 기술적 계층이 아닌 도메인 수준에서의 SOLID 원칙 적용을 통한 비즈니스 개념 중심 모델링 수행
실천 포인트
- 엔티티 설계 시 '해당 속성이 개념적으로 이 객체의 본질인가'를 검증하여 책임 분리 여부 결정 - 단순 구현 편의를 위한 속성 추가 대신 도메인 이벤트(예: Loan)를 별도 엔티티로 추출하는 방안 검토 - 새로운 타입 추가 시 클래스 생성 대신 추상 인터페이스와 설정 데이터(Configuration) 조합 고려 - 요구사항 변경 시 기술 부채로 남기지 않고 즉시 도메인 모델에 반영하는 Iterative Refinement 프로세스 도입
태그