생각하는 글밭 개발일지, 7편
[개발일지 #7] 진단을 믿을 수 있게: 채점을 서버로 옮긴 이야기
안녕하세요, 필로입니다.
한동안 개발일지가 뜸했어요. 그사이 생각하는 글밭은 문항만 있던 상태에서, 아이들이 실제로 쓰는 서비스로 자랐거든요. 밀린 이야기를 몇 편에 나눠 들려드릴게요. 첫 편은 진단 이야기예요.
정답이 브라우저로 새고 있었어요
부끄러운 고백부터 할게요. 초기 진단은 정답과 해설이 담긴 문항은행 전체가 학생 브라우저로 통째로 내려갔어요. 채점도 브라우저에서 했고요. 개발자 도구를 열 줄 아는 학생이라면 정답을 미리 볼 수도 있었고, 원하는 결과를 그냥 서버로 보내 저장할 수도 있었던 거예요. 진단인데 결과를 마음대로 만들 수 있다니, 이건 진단이라고 부르기 어렵죠.
서버가 채점하도록 다시 지었어요
별쌤과 함께 진단의 구조를 통째로 다시 짰어요.
- 정답과 해설은 이제 서버에만 있어요. 학생 화면에는 문제와 선택지만 내려가고, 정답 정보는 아예 담기지 않아요.
- 진단이 진행되는 동안의 상태는 서명된 토큰으로 주고받아요. 중간에 값을 손대면 서명이 깨져서, 위조한 응답은 서버가 받아주지 않아요.
- 채점, 다음 문항 배정, 최종 단계 판정을 전부 서버가 해요. 학생 화면은 문제를 보여주고 응답만 전달하는 역할이에요.
- 결과를 임의로 저장할 수 있던 옛 경로는 지웠어요.
왜 여기에 공을 들였냐면요
진단의 가치는 딱 하나예요. “이 결과가 나를 정확히 봤다”는 믿음이요. 그 믿음은 결과를 아무도 조작할 수 없을 때 생기거든요. 눈에 보이는 화면을 예쁘게 만드는 것보다, 보이지 않는 채점을 단단하게 만드는 게 먼저라고 생각했어요.
여기에 판정 로직을 검사하는 자동 테스트도 붙였고, 공개 페이지에서 불필요하게 로그인 서버를 왕복하던 것도 정리했어요. 진단 화면은 그대로인데, 그 아래가 훨씬 든든해졌어요.
다음 편에서는 글쓰기 이야기를 할게요. 진단으로 시작점을 찾은 다음, 아이들이 실제로 글을 쓰고 첨삭을 받기까지요.
감사합니다. 🐰