배경
현재 큐레이션 피드는 원본 JSON payload를 조회한 뒤 Response Spec의 x-feed 기준으로 투영하고, 필요한 x-graphql 값을 조회 시점에 보강한다.
원본 payload는 건당 최대 128KB이며 페이지 크기 10과 다음 페이지 확인용 1건을 함께 읽으면 이론상 약 1.4MB를 DB에서 애플리케이션으로 전송할 수 있다. 피드 조회 최적화는 필요하지만 이번 작업 범위에서는 구현하지 않고 후속 과제로 남긴다.
결정
curation_extension.payload는 원본 데이터의 SSOT로 유지한다.
- 피드 조회용 파생 Read Model인
feed_source_payload를 별도로 저장하는 방향을 채택한다.
feed_source_payload에는 Response Spec의 x-feed 필드와 피드 GraphQL 보강에 필요한 숨은 입력값(alcoholId 등)만 포함한다.
- GraphQL로 계산되는 통계값은 저장하지 않고 조회 시점에 보강한다.
- 큐레이션명, 이미지, 노출 기간 등 payload 외 공통 필드는 기존 Curation 값을 그대로 사용한다.
- 피드 API의
codes는 1개 이상 필수이며 여러 스펙 코드를 받을 수 있도록 한다.
- 기존 피드 응답 구조는 변경하지 않는다.
후속 작업
비고
동적 JSON_EXTRACT로 매 요청마다 스펙별 필드를 조합하는 방식은 중첩 배열 복원과 동적 SQL 복잡도가 높아 우선안에서 제외한다.
배경
현재 큐레이션 피드는 원본 JSON payload를 조회한 뒤 Response Spec의
x-feed기준으로 투영하고, 필요한x-graphql값을 조회 시점에 보강한다.원본 payload는 건당 최대 128KB이며 페이지 크기 10과 다음 페이지 확인용 1건을 함께 읽으면 이론상 약 1.4MB를 DB에서 애플리케이션으로 전송할 수 있다. 피드 조회 최적화는 필요하지만 이번 작업 범위에서는 구현하지 않고 후속 과제로 남긴다.
결정
curation_extension.payload는 원본 데이터의 SSOT로 유지한다.feed_source_payload를 별도로 저장하는 방향을 채택한다.feed_source_payload에는 Response Spec의x-feed필드와 피드 GraphQL 보강에 필요한 숨은 입력값(alcoholId등)만 포함한다.codes는 1개 이상 필수이며 여러 스펙 코드를 받을 수 있도록 한다.후속 작업
feed_source_payload및 스펙 버전 관리 방식 결정x-feed변경 시 대상 스펙의 Read Model 재생성 정책 마련비고
동적
JSON_EXTRACT로 매 요청마다 스펙별 필드를 조합하는 방식은 중첩 배열 복원과 동적 SQL 복잡도가 높아 우선안에서 제외한다.