SiliconValley_survivor

SiliconValley_survivor

Realtime Score Leaderboard - 랭킹 시스템을 DB 조회로만 설계하면 왜 면접에서 탈락하는가

Realtime Score Leaderboard - 점수 랭킹 리더보드 시스템을 깊게 다루어봅니다 (메타 인터뷰 기출)

SiliconValley_survivor's avatar
SiliconValley_survivor
Apr 15, 2026
∙ Paid

리더보드란 무엇일까?

LeetCode Contest 리더보드를 시스템 디자인 관점에서 보면, 이건 단순히 점수 높은 사람을 정렬해서 보여주는 기능이 아니다. 문제 제출이 계속 들어오고, 참가자들은 콘테스트가 진행되는 동안 자신의 순위가 어떻게 변하는지 실시간에 가깝게 확인하고 싶어 한다. 그래서 이 문제의 본질은 “누가 몇 점인가”를 저장하는 것이 아니라, 제출 결과가 계속 바뀌는 환경에서 상위 랭커, 특정 사용자의 현재 순위, 그리고 그 주변 경쟁자들을 얼마나 빠르게 계산하고 보여줄 수 있는가에 있다. 리더보드는 LeetCode Contest 같은 경쟁 시스템에서 매우 흔히 사용된다. 사용자는 문제를 해결하면 점수를 얻고, 더 많은 점수를 가진 사람이 리더보드의 위에 올라간다. 상단에는 상위 참가자들이 보이고, 동시에 현재 사용자의 위치도 함께 보여주는 형태가 일반적이다.

+------+----------------+--------+
| Rank | Users          | Points |
+------+----------------+--------+
|  1   | Aquaboys       |  976   |
|  2   | B team         |  956   |
|  3   | Berlin's Angels|  890   |
|  4   | GrendelTeam    |  878   |
+------+----------------+--------+

1. Understand Problems and Scope

문제를 정의할 때 먼저 요구사항부터 Contest 문맥에 맞게 다시 정리해야 한다. 점수는 “게임에서 이길 때 1점” 같은 단순 모델이 아니라, 문제별 점수 + 시간 패널티 + 제출 상태로 계산되는 경우가 더 자연스럽다. 예를 들어 참가자가 문제를 맞히면 해당 문제의 점수를 얻고, 더 빠른 시간에 해결한 참가자가 유리하며, 같은 점수라면 패널티가 적거나 더 먼저 점수에 도달한 참가자가 앞선다. 모든 참가자가 같은 콘테스트 리더보드에 포함되고, 리더보드는 contest 단위로 생성된다. 즉 Weekly Contest, Biweekly Contest, 혹은 특정 회사 모의 코딩 테스트마다 별도의 리더보드가 생긴다. 상위 10명만 보여주는 것으로 끝나지 않고, 특정 참가자의 현재 순위도 보여줘야 하며, 가능하다면 그 위아래 참가자들까지 함께 보여주는 것이 UX적으로 더 좋다. 그리고 가장 중요한 조건은 이것이 실시간 또는 거의 실시간이어야 한다는 점이다. 배치 집계 후 나중에 반영되는 방식은 Contest 경험과 맞지 않는다.

This post is for paid subscribers

Already a paid subscriber? Sign in
© 2026 실리콘밸리_생존자 · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture