피드로 돌아가기
Dev.toBackend
원문 읽기
Service Class 비대화 해결을 위한 Clean Architecture 및 CQRS 도입 전략
Stop Putting Everything in the Service Class and Calling It Clean Architecture
AI 요약
Context
비즈니스 로직, 데이터 접근, 외부 통신이 단일 Service 클래스에 집중되어 발생하는 God Class 문제 분석. 의존성 복잡도 증가로 인한 코드 수정 시 사이드 이펙트 발생 및 단위 테스트의 어려움이 한계점으로 작용.
Technical Solution
- Dependency Rule 적용을 통해 Domain 중심의 내향적 의존성 구조 설계
- Domain Layer를 최심부에 배치하여 외부 인프라 및 DB 의존성을 완전히 제거한 순수 비즈니스 규칙 정의
- Application Layer에서 Use Case 단위로 기능을 분리하여 Infrastructure Layer의 세부 구현을 추상화
- CQRS 패턴 도입을 통한 Command(상태 변경)와 Query(데이터 조회)의 책임 분리
- 각 기능을 독립적인 Command/Query Handler로 캡슐화하여 단일 책임 원칙 준수 및 코드 응집도 향상
- 기능별 전용 폴더 구조 채택을 통한 서비스 클래스의 거대화 원천 차단
실천 포인트
- 단일 서비스 클래스 내 메서드 수가 과도하게 증가하여 변경 리스크가 높은지 검토 - 읽기와 쓰기 로직의 요구사항이 상이하여 개별 최적화가 필요한지 판단 - 비즈니스 핵심 로직이 프레임워크나 DB 라이브러리에 강하게 결합되어 있는지 확인 - 새로운 기능 추가 시 기존 코드 수정 없이 신규 핸들러 추가만으로 구현 가능한 구조인지 점검