아키텍처
헥사고날의 법칙
두줄요약
헥사고날 아키텍처를 빌링 서비스에 도입한 경험과 구조를 정리했습니다. 외부 의존성을 분리해 유지보수성과 확장성을 높였지만, 초기 설계와 팀 합의가 중요했습니다.
핵심 내용
- 결제 후처리와 외부 시스템 연동이 있는 빌링 서비스에 헥사고날 아키텍처를 도입한 경험 공유
- 핵심 도메인, 포트, 어댑터로 역할을 분리해 비즈니스 로직을 외부 의존성으로부터 분리하는 구조 설명
- 초기 설계 복잡성과 학습 곡선이 있으나, 유지보수성·테스트 용이성·확장성 측면의 이점 강조
구조와 흐름
- 입력 어댑터가 REST 요청을 받아 입력 포트를 호출하고, 애플리케이션/도메인 레이어가 비즈니스 로직을 처리
- 출력 포트가 DB·외부 API 같은 의존성을 추상화하고, 출력 어댑터가 실제 저장·조회 수행
- 공통 유틸리티를 별도로 두어 여러 모듈에서 재사용 가능한 기능 분리
선택 이유
- ERP, 세금계산서 등 외부 시스템 연동이 있고 향후 기능·기술 요소 확장 가능성이 높아 적합한 구조로 판단
- 도메인 중심 설계로 변경 영향 최소화, 새로운 인터페이스 추가와 어댑터 교체를 쉽게 하기 위한 목적
주의할 점
- 초기에 레이어 경계와 책임을 명확히 정의하는 데 시간이 많이 소요됨
- 과도한 추상화와 순수성 집착은 오히려 비효율적일 수 있음
- 팀원 간 동일한 이해와 충분한 논의가 필요
