Skip to main content

2023.04.03의 깨달음

· 2 min read

랭킹 리스트를 반환해주는 API 구현하기.​

특정 포인트를 기준으로 랭킹 리스트를 반환해주는 API 구현이 필요한 상황.

랭킹 데이터를 어떻게 보관하고 반환해주는 것이 효율적일지 우선 고민해보았다.

결론적으로 기획단에서 정해질 랭킹이 갱신되는 주기가 짧냐, 길냐에 따라 두 가지 방법을 생각하였다.

만약 랭킹이 갱신되는 주기가 짧거나 실시간이라면 랭킹 관련 DB 함수를 사용해서 API 요청마다 계산 후 반환하는 것으로 계획하였으며, 랭킹과 관련된 함수는 일반적인 정렬 함수보다 효율적으로 특정 컬럼을 기준으로 레코드 순위를 정해주는 것으로 이해하였다. 만약 랭킹이 갱신되는 주기가 길다면, 갱신되는 시점에 랭킹을 계산해 DB에 저장하고, 그 사이에는 계산된 랭킹 순으로 데이터를 반환해주기만 하는 것이 효율적일 것이다.

결론적으로 내가 구현하는 서비스의 특성상 특정 경기가 종료될 때마다 랭킹이 갱신되며, 경기의 텀이 일주일정도 있기 떄문에 후자의 방법으로 구현하였다.

참고자료 : postgresql 랭킹 함수 , azure에서 지원하는 game 관련 서비스의 ranking system