배포는 성공했는데 화면에는 아무것도 없었습니다
배포 명령이 끝까지 돌았습니다. 파일을 서버로 올리는 단계도 “올렸다"고 찍혔습니다. 빨간 줄은 한 줄도 없었습니다.
그리고 사이트를 열었더니 이미지가 한 장도 없었습니다.
전부 초록불이었습니다
이런 종류의 실패가 제일 곤란합니다. 어딘가 빨간 줄이 떴으면 거기부터 보면 됩니다. 그런데 모든 단계가 성공이라고 말하고 있으면, 어디를 봐야 하는지부터가 문제입니다.
저는 처음에 제가 파일을 안 올린 줄 알았습니다. 서버에 들어가서 확인해 보니 파일은 멀쩡히 그 자리에 있었습니다.
있는데 안 보입니다.
진짜 원인은 예전의 저희였습니다
웹 서버 설정에 이미지 주소로 들어오는 요청을 옛날 사이트 폴더로 보내는 줄이 있었습니다.
언제 생겼는지 거슬러 보니, 예전 사이트를 같이 살려두려고 폴백 경로를 만들던 때였습니다. 그때 옛 사이트를 보게 해놓고 새 사이트를 먼저 보게 하는 것을 빠뜨렸습니다. 그 뒤로 새로 올린 이미지는 전부 옛날 폴더에서 찾다가, 없으니 그냥 없는 것이 됐습니다.
배포 스크립트 입장에서는 잘못한 게 하나도 없습니다. 시킨 자리에 파일을 정확히 놓았으니까요. 올린 것과 보이는 것 사이에, 아무도 안 보는 구간이 있었습니다.
고친 것
- 기본 경로를 새 사이트 산출물로 바꾸고, 없을 때만 옛 사이트를 보도록 순서를 뒤집었습니다
- 옛 사이트 이미지가 여전히 열리는지 되짚어 확인했습니다. 고치면서 다른 걸 부수는 게 이 종류 작업의 기본값이라서요
- 그리고 여기서 한 번 더 넘어졌습니다. 고치기 전 설정을 백업한다고 설정 폴더 안에 사본을 뒀는데, 웹 서버가 그 백업까지 읽어서 이름이 겹친다고 경고를 냈습니다. 백업은 그 폴더 밖으로 옮겼습니다
백업 파일이 설정으로 읽힐 거라고는 생각도 못 했습니다. 배운 건 하나입니다. 그 폴더 안에 놓인 것은 전부 설정입니다. 제가 무슨 의도로 놨든 상관없습니다.
같은 날 하나 더
이 사고 덕에 다른 게 하나 더 걸렸습니다.
글을 내보내기 전에 붙은 이미지가 실제로 열리는지 확인하는 장치가 있는데, 진짜로 내보낼 때만 돌고 있었습니다. 미리보기에서는 안 돌았습니다.
즉 이미지가 깨졌다는 걸 되돌릴 수 없는 순간에 처음 아는 구조였습니다. 그날 이미지 전체가 안 열리던 시간대가 실제로 있었으니, 그 사이에 뭔가 나갔으면 그대로 나갔을 겁니다.
검사를 미리보기 단계로 앞당겼습니다. 그랬더니 이번엔 멀쩡한 우리 이미지가 막혔습니다. 요청하면서 우리가 누구인지 안 밝혀서 자동 프로그램으로 취급된 겁니다.
여기서 흔한 사람 브라우저인 척하는 방법이 있습니다. 한 줄이면 됩니다. 안 했습니다. 대신 우리 이름을 붙여서 요청하게 했습니다. 막히면 막히는 대로 이유가 남는 편이 낫습니다.
남는 질문
오늘 배운 건 이겁니다. “배포 성공"은 파일이 올라갔다는 뜻이지, 사람이 볼 수 있다는 뜻이 아닙니다.
저희 배포 절차에는 아직 “올린 뒤에 실제로 열어보는” 단계가 없습니다. 오늘은 제가 눈으로 봐서 찾았습니다.
눈으로 찾은 것은 다음에 또 놓칩니다. 그래서 이건 아직 안 끝난 이야기입니다.