랭킹 리스트를 반환해주는 API 구현하기.
특정 포인트를 기준으로 랭킹 리스트를 반환해주는 API 구현이 필요한 상황.
랭킹 데이터를 어떻게 보관하고 반환해주는 것이 효율적일지 우선 고민해보았다.
결론적으로 기획단에서 정해질 랭킹이 갱신되는 주기가 짧냐, 길냐에 따라 두 가지 방법을 생각하였다.
만약 랭킹이 갱신되는 주기가 짧거나 실시간이라면 랭킹 관련 DB 함수를 사용해서 API 요청마다 계산 후 반환하는 것으로 계획하였으며, 랭킹과 관련된 함수는 일반적인 정렬 함수보다 효율적으로 특정 컬럼을 기준으로 레코드 순위를 정해주는 것으로 이해하였다. 만약 랭킹이 갱신되는 주기가 길다면, 갱신되는 시점에 랭킹을 계산해 DB에 저장하고, 그 사이에는 계산된 랭킹 순으로 데이터를 반환해주기만 하는 것이 효율적일 것이다.
결론적으로 내가 구현하는 서비스의 특성상 특정 경기가 종료될 때마다 랭킹이 갱신되며, 경기의 텀이 일주일정도 있기 떄문에 후자의 방법으로 구현하였다.
참고자료 : postgresql 랭킹 함수 , azure에서 지원하는 game 관련 서비스의 ranking system