아키텍처
헥사고날의 법칙
두줄요약
헥사고날 아키텍처를 결제 후처리와 외부 시스템 연동 서비스에 도입한 경험을 정리했습니다. 핵심 도메인 분리로 확장성과 유지보수성을 높였지만, 초기 설계와 팀 합의에 비용이 들었습니다.
핵심 내용
- 결제 후처리와 외부 시스템 연동이 필요한 빌링 서비스에 헥사고날 아키텍처를 도입한 경험 공유
- 핵심 도메인, 입력 포트, 출력 포트, 어댑터로 역할을 나누고 외부 의존성을 분리하는 구조 설명
- 초기 설계 복잡성과 팀 합의 필요성, 그러나 유지보수성과 확장성에서 얻는 이점 정리
구조와 흐름
- 사용자 요청과 외부 이벤트가 입력 어댑터를 거쳐 입력 포트, 도메인, 출력 포트, 출력 어댑터로 전달되는 흐름
- Controller, UseCase, Domain Port, Repository 구현 예시를 통한 모듈 분리 방식
- 공통 유틸리티는 별도 모듈로 분리해 재사용성 확보
선택 이유
- ERP, 세금계산서 등 외부 시스템 연동 확장 가능성
- DB, 메시징 시스템 등 기술 요소 변경 가능성
- 기능 분리와 확장성, 부하 분산을 고려한 구조 선택
트레이드오프
- 초기 구조 설계와 경계 정의에 드는 시간과 학습 비용
- 순수한 아키텍처 이상과 현실적인 구현 사이의 타협 필요
- 과도한 추상화와 작은 기능 혼재를 줄이기 위한 팀 합의 중요
