📄 설명
문제
현재 미리보기는 ux가 향상되기에는 너무 빈약한 기능을 수행하고 이에 비해 비용이 높습니다.
문서 목록 조회 경로에서 현재의 미리보기 로직의 응답 시간이 데이터 양에 따라 불안정해질 수 있는 구조가 확인됐습니다.
현재 목록 조회는 Doc 페이지 조회 후 각 문서마다:
- branch 전체 로딩
- 최근 branch 계산
- save / leafCommit 접근
- preview 조립을 위한 Mongo 조회
개발 당시에도 언급되었던 것처럼 미리보기의 작업이 기능대비 너무 무겁습니다.
특히 DocListAssembler.java에서
doc.getBranches().stream().max(...)
branch.getSave() / branch.getLeafCommit()
saveContentRepository.findById(...)
commitContentAssembler.assemble(...)
를 문서별로 호출하고 있어, 목록 조회 시 JPA N+1 + Mongo N+1 형태의 비용이 발생할 가능성이 높습니다.
영향 범위
/api/document/sidebar
/api/document
/api/document/search
목표
작업 범위
- 목록 조회용 성능 시나리오 정리
- read benchmark로
sidebar / full list / search 응답 시간 비교(K6)
- 쿼리 수와 Mongo 호출 수 확인
- 최근 branch / preview 조립 방식 개선
- 개선 전후 p95 비교
✅ 리팩토링 내용
문서의 미리보기를 썸네일형식의 이미지로 변경 및 성능개선
💡 참고 자료
No response
📄 설명
문제
현재 미리보기는 ux가 향상되기에는 너무 빈약한 기능을 수행하고 이에 비해 비용이 높습니다.
문서 목록 조회 경로에서 현재의 미리보기 로직의 응답 시간이 데이터 양에 따라 불안정해질 수 있는 구조가 확인됐습니다.
현재 목록 조회는
Doc페이지 조회 후 각 문서마다:개발 당시에도 언급되었던 것처럼 미리보기의 작업이 기능대비 너무 무겁습니다.
특히 DocListAssembler.java에서
doc.getBranches().stream().max(...)branch.getSave()/branch.getLeafCommit()saveContentRepository.findById(...)commitContentAssembler.assemble(...)를 문서별로 호출하고 있어, 목록 조회 시 JPA N+1 + Mongo N+1 형태의 비용이 발생할 가능성이 높습니다.
영향 범위
/api/document/sidebar/api/document/api/document/search목표
작업 범위
sidebar/full list/search응답 시간 비교(K6)✅ 리팩토링 내용
문서의 미리보기를 썸네일형식의 이미지로 변경 및 성능개선
💡 참고 자료
No response