ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION1203 / 1500
게임 서버난이도 중하5분 답변 목표 · 보강본

게임 랭킹 마감 뒤 늦게 도착한 점수와 보상 지급을 어떤 기준 버전으로 확정하고 재처리하나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

랭킹 마감과 보상 지급은 먼저 ‘어떤 이벤트를 어느 확정판에 포함할 것인가’를 고정해야 합니다. 서버가 이벤트를 받은 시각을 기준으로 할지, 검증 가능한 게임 발생 시각을 기준으로 할지에 따라 늦은 점수의 결과가 달라집니다. 여러 서버의 벽시계를 그대로 비교하면 경계가 흔들리므로 시즌·규칙 버전·서버가 부여한 순서와 허용 지연 창을 함께 사용하고, 모든 샤드 집계가 끝난 뒤 보상 계산의 입력을 봉인해야 합니다. 이 봉인된 입력 집합을 랭킹 확정 스냅샷(ranking cutoff snapshot)이라고 부를 수 있습니다.

마감과 늦은 이벤트

예를 들어 시즌 7의 이벤트를 발생 시각 기준으로 받되 마감 후 30초까지 허용한다고 하겠습니다. 그 창 안에 도착한 이벤트는 검증 후 확정판에 포함하고, 이후 도착한 이벤트는 폐기·다음 집계·정정 대기 중 하나로 처리합니다. 중요한 것은 화면의 잠정 순위가 아니라 season=7, cutoffVersion=184처럼 보상 계산의 입력 버전을 고정하는 것입니다. 마감 직후 늦은 점수가 화면 순위를 바꿔도 이미 확정한 보상 대상이 조용히 바뀌어서는 안 됩니다. 부정 점수가 나중에 발견되면 기존 지급을 새 버전으로 다시 실행하지 않고 조정 ID를 가진 회수·차액 지급·다음 시즌 반영 중 정책을 적용하며 원래 판정과 정정을 모두 감사 가능하게 남깁니다. 지급 작업은 accountId, seasonId, rewardType처럼 규칙상 한 권리를 식별하는 키를 사용해 멱등화합니다.

집계 버전은 어떤 결과를 근거로 지급했는지 설명하는 메타데이터이지, 정상 재시도의 중복 방지 키에 무조건 넣을 값은 아닙니다. 작업자가 지급 성공 응답을 받기 전에 죽거나 성공 후 완료 표시 전에 죽을 수 있으므로, 지급 원장에 권리 키와 상태를 기록하고 같은 키의 재처리가 한 번의 지급으로 남는지 확인하겠습니다. 외부 보상 시스템이 멱등 키를 지원하지 않으면 결과 조회·대사·수동 보정 절차로 보장 범위를 낮춰 명시해야 합니다.

집계와 사용자 표시

샤드별 점수를 합칠 때 모든 입력 파티션의 watermark가 허용 지연 창을 지났는지, 집계 작업이 동일한 규칙 버전을 읽었는지 확인합니다. 일부 샤드가 실패한 상태에서 확정하면 나중에 점수가 추가되어 보상 기준이 뒤집힐 수 있으므로, 확정 실패를 별도 상태로 두고 재개 가능한 집계 작업으로 관리합니다. 화면에서는 잠정 순위와 확정 순위, 마감 시각·허용 지연 정책을 구분해 보여 주는 것이 신뢰에 중요합니다. 테스트는 마감 직전·직후와 허용 지연 경계, 동점, 샤드 일부 실패, 지급 응답 유실, 중복 이벤트, 부정 점수 정정을 포함합니다. 같은 확정 버전과 정책으로 재계산했을 때 대상·지급 원장이 일치하는지를 성공 기준으로 삼겠습니다. 랭킹의 핵심은 숫자를 빨리 보여 주는 것이 아니라 재현 가능한 확정과 멱등 보상 권리(reproducible cutoff and idempotent entitlement)입니다. 마감 확정은 배치가 성공했는지만 보고 끝내지 않습니다.

이벤트 중복·누락·부정 검증 상태, 샤드별 마지막 처리 순서, 집계판 생성 시각과 규칙 버전을 저장해 같은 판을 재현할 수 있어야 합니다. 재시작 때 이미 확정된 판을 새 입력으로 덮지 않고 새 확정판이나 정정판을 별도 ID로 만들겠습니다. 보상 권리 원장과 실제 잔액 변경이 다른 저장소라면 한쪽 성공 뒤 다른 쪽 실패를 대사 대상으로 남깁니다. 권리 키 중복이 정상 재시도인지 데이터 오류인지 구분하고, 동점 정렬은 안정적인 보조 키를 사용해 순위와 보상 계산이 같은 규칙 버전을 읽는지 확인하겠습니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 마감 시각·이벤트 발생 시각·수신 시각·확정 버전을 구분한다.
  • 허용 지연 창과 봉인된 집계판, 늦은 이벤트·정정 정책을 명시한다.
  • 보상 권리 키와 지급 원장으로 작업 재실행 중복을 막는다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 서버별 현재 벽시계만으로 마감 경계를 결정한다.
  • 봉인 전 잠정 순위를 계속 보상 기준으로 사용한다.
  • 지급 성공과 완료 표시 사이의 재실행을 구분하지 않는다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기