피드로 돌아가기
Dev.toBackend
원문 읽기

Dependency Inversion 기반 Hexagonal Architecture로 외부 의존성 변경 비용 최소화
Hexagonal Architecture is Not a Layered Architecture: Topology, Safety, and When to Walk Away
AI 요약
Context
전통적인 Layered Architecture의 수직적 의존성 구조로 인해 비즈니스 로직과 인프라 레이어가 강하게 결합된 상태. 특히 다양한 외부 API와 DB 기술 스택이 혼재된 환경에서 기능 변경 시 여러 레이어의 코드를 동시에 수정해야 하는 높은 변경 비용 발생.
Technical Solution
- 의존성 방향을 외부에서 내부(Domain)로 향하게 하는 Radial Inward Coupling 구조 설계
- Port와 Adapter 패턴을 도입하여 비즈니스 로직이 외부 구현체(MyBatis, gRPC, Stripe 등)에 대해 무지한 상태를 유지하는 Dependency Inversion 실현
- Inbound Port를 통한 다중 프로토콜(REST API, SSE, Chrome Extension) 수용 구조 구축
- Outbound Port를 활용해 volatile한 외부 엔진(Translation Engine) 교체 시 비즈니스 로직 수정 없이 Adapter만 스왑하는 구조 적용
- Clean Architecture의 과도한 레이어 분할 대신 Port/Adapter/Domain의 최소 집합으로 인지 부하 및 매핑 비용 최적화
실천 포인트
1. 외부 라이브러리나 API의 어노테이션이 서비스 레이어까지 침투했는지 확인
2. 신규 프로토콜 추가 시 비즈니스 로직 수정 없이 Adapter 추가만으로 가능한지 검토
3. 레이어 간 매핑 비용이 비즈니스 가치보다 커지지 않는지 적정 경계 설정
4. 테스트 시 인프라 모킹 없이 도메인 로직만 단독 검증 가능한 구조인지 체크