도메인 패키지 구조 선택 (단일 aggregate vs 팩터별 분리)

상태

승인

후보군

방안설명
팩터별 분리marketflow 패키지 내 InvestorTrading·ForeignHolding·Valuation·ShortSelling·CreditBalance 5개 Entity, 각각 Repository·Gateway
단일 aggregate하나의 DailyMarketSnapshot Entity에 5종 필드 통합

결정

com.biuea.stock.marketflow 단일 패키지 안에 팩터별 5개 Entity로 분리한다.

KRX는 infrastructure 어댑터명(infrastructure/krx)으로만 등장한다. 도메인 패키지명에 데이터소스 약자(krx)를 넣지 않는다.

결정 이유

  • 5종은 테이블·수집 bld·공시 시차가 모두 다르다 (공매도는 T+1/T+2, 나머지는 EOD). 단일 aggregate로 묶으면 부분 수집·부분 실패 처리가 복잡해진다.
  • 팩터별 수직 슬라이스로 분리하면 티켓이 파일 교집합 ∅ 로 병렬화된다 (single writer per file).
  • 한 도메인 패키지 안에 두어 도메인 간 cross-import 금지 규칙을 지킨다.

검토 대안

방안기각 이유
단일 aggregate수집주기·시차 상이로 응집도 낮음, 부분 실패 처리·병렬 티켓화 어려움
데이터소스명(krx) 도메인 패키지naming-prefix 안티패턴 — 도메인 의미가 아닌 소스 약자

트레이드 오프

구분내용
팩터별 독립 수집·병렬 구현, 부분 실패 격리, 명확한 책임 분리
Entity·Repository 클래스 수 증가 (5종 각각)