피드로 돌아가기
Dev.toBackend
원문 읽기
High Cohesion 및 Low Coupling 설계를 통한 시스템 유지보수성 극대화
LLD Foundations: Coupling vs Cohesion (how to judge if your design is actually good)
AI 요약
Context
단일 서비스 내에 결제, 알림, 청구 등 서로 다른 책임이 혼재된 OrderService 구조의 한계 분석. 책임 분리가 부재한 설계로 인해 코드 이해도 저하 및 변경 영향도 제어 불능 상태 발생.
Technical Solution
- OrderService 내 혼재된 비즈니스 로직을 Payment, Notification, Invoice 서비스로 분리하여 High Cohesion 달성
- 각 서비스가 단일 책임(Single Responsibility)을 수행하도록 구조화하여 테스트 용이성 확보
- 서비스 간 직접 참조를 제거하고 명확한 Interface 기반의 통신 구조를 설계하여 Low Coupling 구현
- OrderOrchestrator 도입을 통한 개별 서비스 간 의존성 제거 및 전체 워크플로우 제어 로직의 중앙 집중화
- 책임의 적절한 배치를 통한 변경 사항의 전파 범위(Ripple Effect) 최소화 설계
실천 포인트
- 클래스가 두 가지 이상의 서로 다른 질문에 답하고 있는지 확인하여 Cohesion 검토 - 특정 모듈의 변경이 연쇄적으로 다른 모듈의 수정으로 이어지는지 분석하여 Coupling 검토 - 서비스 간 직접 의존성 대신 Orchestrator 또는 Interface 도입을 통한 결합도 완화 적용