개발 이야기

주간 답안지가 바뀌어도 게임이 이어지는 방법

정답·상위 유사도·힌트를 한 버전으로 미리 준비하고 검증한 뒤 활성 포인터를 바꾸어, 주간 답안지 교체 중에도 서로 다른 파일이 섞이지 않게 하는 과정을 설명합니다.
2026-08-278분 읽기카맨틀 운영팀

먼저 기억할 것

  • 주간 답안지는 정답 목록, 상위 유사도, 일반 힌트와 히든 힌트를 하나의 릴리스로 묶습니다.
  • 새 릴리스는 완성된 별도 디렉터리에서 검증한 뒤 manifest 포인터를 교체해 활성화합니다.
  • 방 상태에는 답안지 버전을 함께 저장하고 다음 요청에서 활성 버전과 맞는지 확인합니다.
  • 활성화에 실패하면 기존 릴리스를 계속 사용하거나 검증된 이전 버전으로 되돌릴 수 있어야 합니다.

답안지는 정답 목록 하나로 끝나지 않습니다

카맨틀의 한 문제를 제공하려면 정답 단어뿐 아니라 가까운 단어의 순위와 점수, 점수 분포 기준, 일반 힌트와 히든 힌트가 필요합니다. 파일 하나만 새로 바꾸면 같은 정답 번호가 서로 다른 단어를 가리키거나 힌트가 이전 정답을 설명할 수 있습니다.

그래서 한 주에 사용할 정답 데이터는 하나의 릴리스로 묶습니다. 각 파일은 같은 후보 집합과 버전을 기준으로 만들어지고 보고서에는 필터 결과와 생성 조건을 남깁니다.

운영에서 “답안지를 바꾼다”는 말은 정답 JSON 한 개를 복사하는 일이 아니라 서로 의존하는 자료 전체를 같은 단위로 움직이는 일입니다.

무거운 계산은 공개 전에 별도 공간에서 끝냅니다

새 정답 후보마다 전체 어휘의 유사도를 계산하고 가까운 단어를 고르는 작업은 시간이 걸립니다. 이 계산을 사용자가 추측하는 실행 경로에서 수행하면 답장이 느려지고 부분 결과가 노출될 수 있습니다.

카맨틀은 새 버전 디렉터리에 정답, 상위 목록과 힌트를 먼저 생성합니다. 현재 서비스가 읽는 릴리스는 그대로 둔 채 다음 릴리스를 완성하므로 생성 중인 파일을 실행 코드가 읽지 않습니다.

사전 계산은 속도를 위한 최적화이면서 배포 중 데이터 일관성을 지키는 경계이기도 합니다.

활성화 전에는 파일끼리 같은 답을 말하는지 확인합니다

릴리스 검증은 필요한 파일이 존재하는지만 보지 않습니다. manifest의 버전과 경로, 정답 수, 정답 번호, 상위 유사도와 힌트의 참조가 서로 맞는지 확인합니다.

정답 후보가 가까운 힌트를 충분히 가지는지, 상위 목록이 희귀어나 한 글자 표현에 지나치게 치우치지 않았는지도 생성 단계에서 점검합니다. 품질 기준을 통과하지 못한 후보는 다음 후보로 교체합니다.

검증이 끝나기 전에는 새 릴리스를 활성 상태로 표시하지 않습니다. 일부 파일만 먼저 바뀌는 시간을 만들지 않는 것이 중요합니다.

마지막에는 manifest 포인터만 교체합니다

완성된 릴리스를 공개할 때 서비스가 읽는 manifest를 새 버전으로 바꿉니다. manifest는 현재 사용할 릴리스와 각 파일 경로를 알려 주는 활성 포인터입니다.

포인터는 임시 파일을 완성한 뒤 한 번에 교체해 읽는 순간에 절반만 작성된 JSON이 보이지 않게 합니다. 실행 중인 프로세스는 새 포인터와 버전을 확인하고 준비된 파일 전체를 같은 릴리스로 읽습니다.

활성화 단계를 작게 유지하면 문제가 생겼을 때 어느 버전이 서비스 중인지 확인하고 이전 포인터로 되돌리기 쉽습니다.

방 상태의 버전도 활성 답안지와 맞춥니다

각 방의 상태에는 현재 정답 번호와 함께 답안지 릴리스 버전이 저장됩니다. 파일이 새 버전으로 바뀌었는데 방 상태가 이전 정답 번호를 그대로 사용하면 번호는 같아도 실제 단어가 달라질 수 있습니다.

방의 다음 요청을 처리할 때 저장된 버전과 활성 버전을 비교합니다. 다르면 새 릴리스의 시작 정답과 진행 기준으로 상태를 맞추고 추측 수, 상위 단어와 힌트처럼 이전 문제에 속한 값을 초기화합니다.

이 동기화는 사용자가 입력한 단어를 어느 답안지로 판정했는지 분명하게 만듭니다. 이전 문제와 새 문제의 기록이 한 상태에 섞이는 일을 피합니다.

실패했을 때는 기존 릴리스를 지키는 것이 우선입니다

새 포인터를 읽거나 파일을 적재하는 데 실패하면 불완전한 데이터로 계속 진행하지 않습니다. 프로세스가 이미 검증해 사용하던 릴리스가 있다면 기존 데이터를 유지해 갑작스러운 판정 변화를 줄입니다.

운영자는 manifest와 릴리스 파일을 확인하고 검증된 이전 버전으로 포인터를 되돌릴 수 있습니다. 롤백에서도 정답, 상위 목록과 힌트가 같은 버전으로 함께 움직여야 합니다.

매주 새로운 문제를 제공하는 일보다 어떤 버전이 활성인지 설명하고 같은 버전으로 답할 수 있는 상태를 유지하는 일이 먼저입니다.

작성 및 검토: 카맨틀 운영팀

실제 구현 코드, 수정 기록, 테스트 과정에서 확인한 내용을 바탕으로 운영팀이 작성했습니다.

콘텐츠 작성 원칙 보기

댓글

이 글을 읽고 든 생각이나 플레이 경험을 남겨 주세요.

0

아직 댓글이 없습니다.

이어서 읽기

직접 한 판 해볼까요?

글로 감을 잡았다면 브라우저 체험에서 바로 단어를 던져볼 수 있어요.

플레이 방법 보기공지