[출결 앱 개발 로그 09] 자동 QA 다음에 남은 태블릿의 하루
9월 말의 배포 전 QA 이후에도 프로젝트는 이어졌다. 앱을 도장에 놓고 쓰기 시작하자, 개발 화면에서는 보이지 않던 문제가 드러났다. 특히 입구 태블릿은 앱을 켠 직후 몇 번 출석하는 기기가 아니라, 최소 네 시간 이상 카메라를 계속 켜 두는 기기였다.
저장된 기록이 알려준 문제
10월 6일 출석 기록을 확인했을 때 QR 성공 기록은 없었고, 기록된 출석은 모두 PIN 방식이었다. 이 데이터만으로 QR 시도와 실패 횟수를 알 수는 없지만, 현장에서 들은 장애와 맞물려 QR을 다시 점검할 이유는 충분했다.
기존 자동 QA를 통과했다는 사실만으로 태블릿이 정상이라고 판단할 수 없었다. PIN이라는 대체 경로가 출석을 이어 주고 있었지만, QR 자체의 문제를 가려서는 안 됐다.
카메라에 보이는 것과 판독하는 영역 맞추기
화면을 채우기 위한 카메라 크롭과 실제 판독 좌표를 함께 살폈다. Android와 iPad의 판독 경로를 카메라 원본 영상 기반으로 통일하고, 원본 전체 영역에서 QR을 찾도록 바꿨다. 작은 중앙 QR뿐 아니라 큰 QR, 가장자리 QR, 가로·세로 영상과 좌우 반전도 검증 대상으로 삼았다.
판독은 별도 작업 스레드에서 초당 약 세 번 수행하도록 낮췄다. 입구에서 필요한 인식 속도를 유지하면서, 화면과 카메라를 오래 켜 두는 비용을 줄이려는 선택이었다.
다음 사람을 계속 받을 수 있어야 한다
출석 성공이나 입장 영상이 재생되는 동안에도 카메라와 판독을 유지하는 방식으로 개선했다. 같은 QR의 반복 요청은 억제하고, 다른 회원 QR은 순서대로 처리한다. 한 사람의 성공 연출이 다음 사람의 출석을 막지 않도록 한 것이다.
멈춤을 복구하는 방식도 정리했다. 주기적으로 상태를 감시하고 디코더, 영상, 카메라 순으로 복구한다. API 요청뿐 아니라 응답 본문에도 시간 제한을 적용하고, 카메라를 전환하기 전의 늦은 응답이 새 요청의 상태를 바꾸지 않게 했다. 성공음 자원도 종료 이벤트에만 의존하지 않고 회수하도록 보완했다.
확인한 것과 아직 남은 것
10월 7일 상시 운영 개선은 자동 테스트 116개와 전체 QA 15단계를 통과한 뒤 운영에 반영했다. 배포 후에도 합성 QR 픽셀 판독과 장애 복구를 확인했다. 검증 중 출석 요청은 테스트 응답으로 처리해 실제 회원 기록을 만들지 않았다.
다만 시간 가속 테스트는 실제 기기를 오래 켜 두는 시험과 다르다. SM-T590과 iPad의 실제 6~12시간 연속 운영, 발열, 조명과 Wi-Fi에 따른 체감은 별도 현장 검증으로 남았다. 이 단계에서 배운 것은 테스트 수보다 테스트가 어떤 환경을 대표하는지를 정확히 말하는 일이었다.