Package Scope
Package name: com.ikae.snowthing.domain.post
Overview
모바일 앱 및 PC 웹 환경을 모두 만족시키기 위한 웹 Offset / 모바일 Keyset Cursor 하이브리드 페이지네이션 및 Querydsl 동적 검색 API를 구축합니다.
PC 웹 유저를 위한 페이지 번호([1][2][3]) UX와 모바일 유저를 위한 무한 스크롤 $O(1)$ 성능을 동시에 제공하며, 추후 Redis 캐싱 및 Elasticsearch(ES) 확장에 대비 가능한 구조로 설계합니다.
Describe the solution you'd like
-
모바일 Cursor 기반 API 구현:
-
GET /api/v1/posts?cursor=xxx&size=20 (Keyset 커서 방식 적용, $O(1)$ 탐색)
-
Slice<PostListResponse> 반환 구조.
-
웹 Offset 기반 API 구현:
-
GET /api/v1/posts?page=1&size=20 (전통적 페이지 번호 지원)
-
Page<PostListResponse> 반환 구조.
- DB 과부하 방지를 위한 최대 100페이지 한정(Hard Cap Validation) 및 커버링 인덱스(Deferred Join) 적용.
-
Querydsl 동적 검색 및 정렬:
- 카테고리 필터링(
categoryCode), 검색 조건(TITLE, WRITER, CONTENT), 정렬 방식(LATEST, POPULAR) 동적 쿼리 지원.
-
익명 및 통합 인기 게시판 (개념글):
-
is_anonymous = true 글의 개인정보 유출 방지 DTO 매퍼 치환.
- 일반글+익명글 통합 인기 게시판 탭 및
[익명] 뱃지(Badge) 노출.
Additional context
- 추후 확장 대비성:
cursor 파라미터는 Base64 암호화 토큰으로 표준화하여 추후 Elasticsearch 도입 시 search_after 커서로 백엔드 스위칭할 때 프론트엔드 API 규격 파괴 방지.
- 추후 JWT/Redis 도입 시 웹 상위 목록(1~5페이지)에 Redis RAM 캐싱 적용 예정.
Package Scope
Package name: com.ikae.snowthing.domain.post
Overview
모바일 앱 및 PC 웹 환경을 모두 만족시키기 위한 웹 Offset / 모바일 Keyset Cursor 하이브리드 페이지네이션 및 Querydsl 동적 검색 API를 구축합니다.
PC 웹 유저를 위한 페이지 번호([1][2][3]) UX와 모바일 유저를 위한 무한 스크롤$O(1)$ 성능을 동시에 제공하며, 추후 Redis 캐싱 및 Elasticsearch(ES) 확장에 대비 가능한 구조로 설계합니다.
Describe the solution you'd like
모바일 Cursor 기반 API 구현:
GET /api/v1/posts?cursor=xxx&size=20(Keyset 커서 방식 적용,Slice<PostListResponse>반환 구조.웹 Offset 기반 API 구현:
GET /api/v1/posts?page=1&size=20(전통적 페이지 번호 지원)Page<PostListResponse>반환 구조.Querydsl 동적 검색 및 정렬:
categoryCode), 검색 조건(TITLE,WRITER,CONTENT), 정렬 방식(LATEST,POPULAR) 동적 쿼리 지원.익명 및 통합 인기 게시판 (개념글):
is_anonymous = true글의 개인정보 유출 방지 DTO 매퍼 치환.[익명]뱃지(Badge) 노출.Additional context
cursor파라미터는 Base64 암호화 토큰으로 표준화하여 추후 Elasticsearch 도입 시search_after커서로 백엔드 스위칭할 때 프론트엔드 API 규격 파괴 방지.