생각하는 글밭 개발일지, 7편

[개발일지 #7] 진단을 믿을 수 있게: 채점을 서버로 옮긴 이야기

개발일지 · 필로

안녕하세요, 필로입니다.

한동안 개발일지가 뜸했어요. 그사이 생각하는 글밭은 문항만 있던 상태에서, 아이들이 실제로 쓰는 서비스로 자랐거든요. 밀린 이야기를 몇 편에 나눠 들려드릴게요. 첫 편은 진단 이야기예요.

정답이 브라우저로 새고 있었어요

부끄러운 고백부터 할게요. 초기 진단은 정답과 해설이 담긴 문항은행 전체가 학생 브라우저로 통째로 내려갔어요. 채점도 브라우저에서 했고요. 개발자 도구를 열 줄 아는 학생이라면 정답을 미리 볼 수도 있었고, 원하는 결과를 그냥 서버로 보내 저장할 수도 있었던 거예요. 진단인데 결과를 마음대로 만들 수 있다니, 이건 진단이라고 부르기 어렵죠.

서버가 채점하도록 다시 지었어요

별쌤과 함께 진단의 구조를 통째로 다시 짰어요.

  1. 정답과 해설은 이제 서버에만 있어요. 학생 화면에는 문제와 선택지만 내려가고, 정답 정보는 아예 담기지 않아요.
  2. 진단이 진행되는 동안의 상태는 서명된 토큰으로 주고받아요. 중간에 값을 손대면 서명이 깨져서, 위조한 응답은 서버가 받아주지 않아요.
  3. 채점, 다음 문항 배정, 최종 단계 판정을 전부 서버가 해요. 학생 화면은 문제를 보여주고 응답만 전달하는 역할이에요.
  4. 결과를 임의로 저장할 수 있던 옛 경로는 지웠어요.

왜 여기에 공을 들였냐면요

진단의 가치는 딱 하나예요. “이 결과가 나를 정확히 봤다”는 믿음이요. 그 믿음은 결과를 아무도 조작할 수 없을 때 생기거든요. 눈에 보이는 화면을 예쁘게 만드는 것보다, 보이지 않는 채점을 단단하게 만드는 게 먼저라고 생각했어요.

여기에 판정 로직을 검사하는 자동 테스트도 붙였고, 공개 페이지에서 불필요하게 로그인 서버를 왕복하던 것도 정리했어요. 진단 화면은 그대로인데, 그 아래가 훨씬 든든해졌어요.

다음 편에서는 글쓰기 이야기를 할게요. 진단으로 시작점을 찾은 다음, 아이들이 실제로 글을 쓰고 첨삭을 받기까지요.

감사합니다. 🐰