목록 보기
포스타입이 개인화 추천을 하는 방법 2부
백엔드

포스타입이 개인화 추천을 하는 방법 2부

포스타입
포스타입
2026년 8월 5일

두줄요약

포스타입은 벡터 추천의 쿼리 비용을 줄이기 위해 HNSW 활용, 필드 최적화, 스레드 취소를 적용했습니다. 이후 전용 클러스터 분리와 차원 축소로 메모리 문제와 검색 장애를 함께 해결했습니다.

문제 상황

  • 수백만 개 벡터를 실시간 검색하는 추천 쿼리로 검색 스레드 풀이 쉽게 포화
  • 일반 검색과 추천이 같은 OpenSearch 클러스터를 공유해 추천 부하가 검색 장애로 전파
  • 벡터 그래프 메모리 증가와 샤드 불균형으로 노드별 성능 편차와 OOM 위험 발생

원인 분석

  • painless script_score 기반 brute-force성 계산으로 HNSW 그래프 이점 미활용
  • 결과 fetch 단계에서 source 전체를 읽어 불필요한 I/O와 압축 해제 비용 발생
  • ef_search 변경 시 native 메모리 그래프 캐시를 통째로 재로드하는 플러그인 동작
  • 데이터 증가로 그래프가 물리 RAM을 넘는 구조, 서킷 브레이커 한계 설정도 비현실적

해결 방법

  • HNSW 그래프를 먼저 타는 KNN 쿼리로 전환하고, 필요한 필드만 조회해 fetch 비용 절감
  • cancel_after_time_interval로 장시간 점유 스레드 조기 반환
  • 샤드 수를 노드 단위로 고르게 재설계하고 리색인으로 리밸런싱 유도
  • KNN 전용 클러스터 분리, MRL 임베딩의 앞 512차원 절단으로 그래프 크기 축소

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...