피드로 돌아가기
Dev.toBackend
원문 읽기
Domain 중심 설계를 통한 외부 의존성 제거 및 Testability 극대화
Hexagonal Architecture (Ports and Adapters)
AI 요약
Context
전통적인 Layered Architecture의 강한 결합도로 인한 비즈니스 로직 오염 발생. UI 및 Database 등 외부 인프라 변경이 핵심 도메인에 영향을 주는 Tight Coupling 구조의 한계 노출.
Technical Solution
- Domain Core를 중심에 배치하여 외부 기술 스택에 의존하지 않는 Technology-agnostic 구조 설계
- Primary Port 도입을 통한 외부 요청(User, System)의 진입점 표준화 및 인터페이스 정의
- Secondary Port 설계를 통한 외부 서비스(DB, API)에 대한 추상화 레이어 구축
- Driving Adapter를 통해 HTTP, CLI 등 다양한 입력 채널을 Primary Port로 변환하는 구조 적용
- Driven Adapter를 이용해 Secondary Port의 인터페이스를 구체적인 인프라 구현체로 매핑
- Core Domain과 외부 인프라 사이의 경계를 엄격히 분리하여 비즈니스 로직의 독립성 확보
실천 포인트
- Core Domain 내부에 외부 라이브러리나 DB 전용 쿼리가 포함되어 있는지 확인 - 외부 시스템 변경 시 Domain Core의 코드 수정이 필요한지 검토 - Secondary Port를 Mocking 하여 DB 없이 실행 가능한 Unit Test 환경 구축 여부 점검 - 신규 입력 채널(예: CLI, Message Queue) 추가 시 기존 비즈니스 로직 수정 없이 Adapter만 추가 가능한지 확인