목록 보기
온라인 시험 답안 유실 방지를 위한 기술 도입기
백엔드

온라인 시험 답안 유실 방지를 위한 기술 도입기

넥스트리
넥스트리
2026년 10월 23일

두줄요약

온라인 시험 종료 시점의 저장·제출 요청 폭주와 답안 유실 위험을 분석했습니다. Kafka, 버전 제어, 상태 머신으로 안정적인 제출 처리를 구현했습니다.

문제 상황

  • 시험 종료 정각에 약 100명 규모의 자동 저장·수동 제출·자동 제출 요청 집중
  • 네트워크 재시도, 패킷 역전, 클라이언트 시계 오차로 인한 최신 답안 갱신 유실 및 마감 실패 위험

원인 분석

  • 동기식 DB 쓰기 구조에서 커넥션 지연과 락 경합 가능성
  • 동일 응시 세션을 향한 동시 제출 요청과 과거 패킷의 뒤늦은 도착
  • 클라이언트 시계 기반 마감 판정에 따른 정상 요청 거절 가능성

해결 방법

  • Kafka 비동기 자동 저장, attemptId 파티션 키, clientSeq 조건부 업데이트를 통한 순서 보장과 최신 답안 보호
  • 서버 시간 단일 기준 및 3초 유예 시간으로 네트워크 지연 흡수
  • CAS 기반 단방향 제출 상태 머신, 멱등성 응답, 최종 답안 동반 전송으로 중복 제출 수렴

성능/운영 포인트

  • API 서버의 Kafka 이벤트 발행 후 빠른 응답으로 종료 시점 DB 병목 완화
  • 지연된 자동 저장 이벤트와 제출 트랜잭션 간 버전 검증으로 최종 답안 보호
  • 마감 후 IN_PROGRESS 세션을 스케줄러로 자동 마감 처리

다음 읽기

#Kafka 주제를 이어서 읽기

Inbox 패턴 기반 레거시 연동 비동기 전환 사례

레거시 연동 수신 구간을 Inbox 패턴으로 바꾸고 Kafka 비동기 처리로 분리한 사례를 정리했습니다. 응답 시간 단축, 중복 방지, 장애 복구 자동화까지 실측으로 검증했습니다.

넥스트리
넥스트리
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...