AC리서치 시황 사이트 개발로그 · 2화
자동 게시가 사흘 동안 네 번 멈췄다: 지금의 검사는 전부 그 사고에서 나왔다
시황이 끝나면 사이트가 스스로 올라가게 했다. 사흘 동안 마지막 세트가 빠지고, 예약한 칼럼이 잠긴 화면 앞에서 멈추고, 용량 한도에 막히고, 칼럼 두 편이 사라졌다. 검사 하나하나가 그 사고에서 나왔다.
9월 25일 오전, 사이트에 그날 오전판이 없었다. 원인은 단순했다. 자동 게시를 아직 설치하지 않았다. 전날 기록에 “자동 게시는 승인 대기”라고 적어 둔 채로 멈춰 있었다. 그날 아침 오전판은 섹터마다 세 건을 채우지 못해 세트가 하나도 없고 브리핑만 있었다. 브리핑만 있는 날도 날짜 페이지가 생기게 고친 뒤, 자동 게시를 설치했다.
자동 게시의 모양
게시 스크립트는 이렇게 돈다. 헤르메스에서 새 세트와 브리핑을 가져온다. 새 것이 있을 때만 사이트를 빌드한다. 올릴 용량을 재서 한도에 가까우면 멈춘다. 배포하고, 새 글 주소가 실제로 열리는지 확인한다. 실패하면 맥 알림을 띄운다. 이 스크립트를 시황 작업의 마지막 단계에 붙여, 오전 6시와 오후 5시 발행이 끝나면 곧바로 돌게 했다.
마지막 세트가 빠졌다
그날 오후 5시, 오후판 세 세트 가운데 두 개만 올라갔다. 시황 작업이 끝나자마자 가져왔는데, 헤르메스 게시판 목록은 큐 작업이 ’완료’로 바뀐 뒤에야 글을 보여 준다. 마지막 세트와 브리핑은 아직 목록에 없었다. 가져오기를 2분 간격으로 최소 세 번, 최대 여섯 번 반복하게 바꿨다.
잠긴 화면 앞의 확인 창
9월 26일 오전 10시에 예약해 둔 칼럼 게시가 실패했다. 게시를 맡긴 에이전트 앱의 명령이 45분 동안 아무 출력 없이 멈춰 있다가 시간 초과로 끝났다. 처음에는 화면이 꺼져서 명령이 앱에 연결하지 못했다고 봤다. 그 진단은 틀렸다.
시스템 로그를 다시 보니 10시 4초에 macOS의 게이트키퍼가 그 앱의 명령줄 도구를 실행해도 되는지 묻는 확인 창을 띄우고 대답을 기다리고 있었다. 맥은 잠겨 있었고 아무도 누르지 못했다. 새벽 시험 때는 같은 검사가 창 없이 통과했었다. 내가 돌아와 창을 승인한 뒤로는 정상이었다. 원인을 정정하고, 확인 창 문제는 따로 대책을 정하기로 했다.
두 판이 올라가지 않았다
9월 26일 오후판과 9월 27일 오전판이 사이트에 없었다. 용량 검사가 배포를 막았다. 올릴 용량이 한도를 넘었다고 멈췄고, 맥 알림만 띄웠다. 나는 맥 앞에 없었다. 1화에서 적어 둔 100MB 경고가 현실이 됐다. 카드를 840픽셀로 다시 압축해 카드 폴더를 90MB에서 67MB로 줄이고 밀린 두 판을 올렸다.
칼럼 두 편이 사라졌다
그 재압축 배포가 나간 직후 칼럼 두 편이 404가 됐다. 같은 날 새벽 6시 42분, 다른 작업이 흩어진 HTML 파일을 한 폴더로 모으면서 사이트 폴더의 칼럼 원본 두 개를 복사가 아니라 이동해 가 버렸다. 배포는 칼럼이 없는 상태로 나갔다. 약 10분 동안 칼럼이 열리지 않았다. 직전 배포에 올라가 있던 파일을 Vercel에서 내려받아 되살렸고, 지문이 원본과 일치하는지 확인했다.
이번에는 검사를 하나 더 넣었다. 배포하기 전에 지금 공개된 사이트맵의 모든 주소가 새 빌드에도 있는지 확인한다. 하나라도 빠지면 배포하지 않고 알린다.
배운 것
자동 게시의 실패는 조용했다. 가져오기가 한발 빨라도, 확인 창이 떠도, 용량에 막혀도 사이트는 에러 없이 어제 모습 그대로 있었다. 지금 게시 스크립트에 들어 있는 재시도, 용량 검사, 페이지 누락 검사는 전부 이 사흘 동안의 사고에서 하나씩 나왔다. 그리고 맥 알림은 맥 앞에 있을 때만 알림이었다. 텔레그램 알림은 3화에서 붙는다.