이번 사이트를 Cloudflare API로 올렸을 때 배포 상태는 성공이었다. 홈페이지가 HTTP 200으로 열렸고 공개 파일 22개의 내용도 로컬과 일치했다.
그런데 실제 PC·모바일 화면 검수는 완료하지 못했다. 기존 로그인 프로필이 별도 Chrome 창에서 사용 중이었고, 작업을 보존하기 위해 전환하지 않기로 했다. 이 두 결과를 한 문장으로 묶어 ‘모두 검증했다’고 적으면 다음 사람이 판단할 근거가 사라진다.
내가 완료 보고에서 알고 싶은 것
내가 맡긴 일이 끝났다는 말을 들으면 어떤 확인을 했는지 알고 싶다. 파일이 올라간 것인지, 휴대폰에서도 읽히는지, 실제 문의까지 도착하는지에 따라 다음 결정이 달라지기 때문이다. 나는 완료의 근거를 단계별로 남긴다.
확인을 네 단계로 적는다
- 배포: 업로드가 수락됐고 해당 배포 상태가 성공인가?
- 전달: 필요한 HTML·스크립트·폰트·영상이 정상 응답하고 예상 버전과 일치하는가?
- 화면과 기능: 읽기, 메뉴, 모바일 배치, 입력과 버튼 동작이 실제로 맞는가?
- 외부 결과: 메일 수신이나 결제처럼 브라우저 밖의 결과까지 도착했는가?
운영 파일을 실제로 대조한다
경로가 200이라고 해도 오래된 HTML이나 오류 안내문일 수 있다. 이번에는 로컬 파일과 공개 응답의 SHA-256을 비교했다. 주소가 열린다는 주장보다 어떤 파일이 전달됐는지 더 구체적으로 설명할 수 있었다.
코드와 구현 살펴보기
자기 소유 사이트 파일의 비교 예시
import hashlib
from pathlib import Path
from urllib.request import urlopen
local = Path('dist/index.html').read_bytes()
remote = urlopen(site_base_url + '/index.html').read()
print(hashlib.sha256(local).hexdigest() == hashlib.sha256(remote).hexdigest())되돌릴 수 있어야 변경도 설명할 수 있다
Pages는 성공한 production 배포로 되돌리는 기능을 제공한다. 복구 대상이 어떤 버전이고 어떤 소스와 대응하는지 먼저 기록한다. 배포 ID만으로 데이터베이스 변경까지 되돌아간다고 가정하지 않는다.
이번 작업의 미확인 영역
이 글의 공개 시점에도 앞선 홈페이지의 실화면 검수와 클릭 경로는 미확인으로 남아 있다. 기록은 성공을 작게 보이게 하려는 장치가 아니다. 다음 검수가 어디서 시작해야 하는지를 정확히 알려주는 운영 도구다.
같은 체크리스트를 쓰더라도 실제로 수행한 칸만 완료로 표시한다. 특히 문의 API가 요청을 받았다는 결과와 수신함에 메일이 도착했다는 결과를 분리한다.