[trouble shooting] 무한 스크롤(다양한 정렬 기준)

김동욱·2023년 10월 16일
0

trouble shooting

목록 보기
2/2

프로젝트를 진행하며 생겼던 궁금증에 대해 정리하고 멘토님께 여쭤봤던 내용을 정리해봤습니다.

Problem

  1. 무한스크롤시 offset방식으로 최신순, 좋아요순, 조회순을 표현하는데 offset 방식의 문제점인 매번 offset만큼 탐색해야하니 성능이 안좋다고 생각했습니다.
    성능을 향상시키기 위해 어떤 방법을 선택해야할지 고민해봤습니다.

Try to solve

1. no- offset 방식으로 구현해보려고 했는데 좋아요, 조회순으로 정렬할때 기준이 되는 pk값을 명확하게 설정할 수 없어서 그냥 offset방식으로 구현했습니다.

무한 스크롤 방식은 정렬 방식에 따라 offset 방식과 no-offset 방식으로 구분됩니다.
no-offset 방식의 특징은 정확한 pk값이 있어야만 제대로 된 값을 조회할 수 있다는 점입니다.
저는 RDBMS에서 무한스크롤을 구현하며 최신순, 좋아요순, 조회순으로 정렬하는 방법을 고민했는데 좋아요순, 조회순으로 정렬할 시 pk값이 정확히 정의되지 않아 구현할 수 없었습니다.

위 방식의 단점으로는 매번 offset을 모두 조회하다보니 시간이 지날수록 성능이 안좋아진다는 점입니다.

2. 차라리 일정 시간마다(ex 정각) 스냅샷을 찍어 그 정보를 가지고 정렬을 하면 실시간성은 떨어져도 위 문제점들을 해결할 수 있지 않을까 생각해봤습니다.

위 방법 또한 생각해봤지만 이렇게 하게되면 프로젝트의 모든 게시물을 스냅샷 찍기에는 무리가 있어 일부만 찍게 되니 이 또한 적합하지 않다고 생각했습니다.

3. ES 사용

대부분의 실시간 목록 조회에는 ElasticSearch를 사용합니다. ES는 noSQL 방식으로 빠른 조회와 검색이 특징입니다. 또한 사용자의 검색 결과를 기준으로도 다양한 정렬조건을 사용할 수 있어 좀 더 사용자 편의에 좋습니다.

profile
안녕하세요. 공부해요

0개의 댓글