헥사고날 아키텍처에서도 통합 데이터 컨테이너를 사용할수 있을까
- 핵사고널 아키텍처에서도 통합 데이터 컨테이너를 사용할 수 있으며, 이는 레이어드 아키텍처의 기본 개념을 확장한 형태로 이해할 수 있습니다. 🏗️
- 레이어드 아키텍처는 '스택'처럼 층을 이루고, 핵사고널 아키텍처는 '껍질'처럼 핵심 도메인을 감싸는 방식으로 상호 보완적입니다. 🧅
- 과거 TTD로 개발했던 '파라' 노트 분류 시스템 프로젝트를 핵사고널 아키텍처로 재구현한 경험을 바탕으로 설명합니다. 📚
- 핵사고널 아키텍처의 패키지 구조는 도메인 엔티티를 최상위에 두고,
activity (유스케이스 인터페이스), API, infra 등으로 구성하여 포트-어댑터 패턴을 구현합니다. 📦
- 비즈니스 엔티티와 리포지토리 지속성 엔티티를 명확히 구분하는 것이 중요합니다. 🏷️
- 통합 데이터 컨테이너는 데이터 흐름에 따라 타입 세이프하고 명시적인 구현을 지향하며, 제네릭 타입(
T)과 불변 객체(record)를 활용합니다. 🛡️
Container 인터페이스는 Search, List, VO 등으로 상호작용의 언어를 정의하며, 이는 핵사고널 아키텍처의 '포트' 역할을 수행합니다. 🚢
Search는 인바운드 페이로드, VO는 아웃바운드, Response는 최종 사용자에게 전달되는 아웃바운드 데이터로 명확히 구분됩니다. ➡️
- 이러한 설계 방식은 핵사고널 아키텍처의 핵심 철학인 '기술이 아닌 목적에 따른 설계'에 부합합니다. 🎯