Skip to content

[IMPROVE] Recommendation 컨텍스트 DDD 개선 로드맵 #419

Description

@Dimo-2562

✨ 개선할 기능

Recommendation 컨텍스트를 DDD 관점으로 점진 개선한다.


🏷️ 도메인 (해당하는 것에 체크)

  • 📝 domain:post (게시글)
  • 👤 domain:useraccount (사용자 계정)
  • 🧠 domain:personalization (개인화 프로필)
  • 🏢 domain:source (테크블로그 출처)
  • 🔍 domain:search (검색)
  • 🔔 domain:notification (알림)
  • 📊 domain:recommendation (추천)
  • 🎯 domain:activity (사용자 활동)
  • 🔐 domain:auth (인증/보안)
  • 🌐 infra (인프라/배포)

📌 현재 상태 (AS-IS)


🎯 개선 방향 (TO-BE)

  • 다른 컨텍스트처럼 application/domain/infrastructure 경계를 명확히 한다.
  • 우선 테스트로 현재 동작을 고정한 뒤, 작은 리팩터링 이슈로 분리한다.
  • API 응답과 DB schema는 1차 개선에서 유지한다.
  • ID reference 전환, VO 도입, 이벤트 추가는 4.5 1차 완료 후 별도 이슈로 둔다.

💡 개선 이유

Recommendation은 Personalization, Activity, Post, Elasticsearch에 모두 의존하므로 테스트 없이 구조를 바꾸면 위험하다.
4.5 단계에서는 큰 재설계보다 안전망 → 경계 정리 → 도메인 개념 캡슐화 순서로 진행한다.


하위 이슈

순서 이슈 목적
1 #420 Recommendation DDD 리팩터링 전 회귀 테스트 보강
2 #421 Recommendation application 경계 정리
3 #452 Recommendation 최상위 컨텍스트 패키지 승격
4 #424 RecommendationHistory 클릭 기록 용어 정리 (#420에서 함께 완료)
5 #456 Recommendation 조회 응답 매핑 경계 정리
6 #422 RecommendationSet 개념 1차 도입
7 #423 추천 후보 탐색/RRF/MMR 책임 분리
8 #425 Recommendation DDD 개선 문서 동기화
9 #453 Cross-context lookup 계약 고도화(2차)

진행 원칙

  1. 테스트 안전망을 먼저 만든다.
  2. API 응답 shape와 DB schema는 1차 개선에서 유지한다.
  3. 이미 정리된 Activity/User Account/Personalization/Post 컨텍스트의 DDD 패턴을 따른다.
  4. RecommendationSet 도입 전에 #456에서 application → presentation 역방향 의존을 제거한다.
  5. ManyToOne -> ID reference와 cross-context ID/projection 계약 고도화는 1차 완료 후 #453에서 진행한다.
  6. RankOrder VO와 Recommendation 이벤트 추가는 별도 후속 이슈로 분리한다.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions