새 약관을 배포한 날 저녁, 웹의 current 주소는 새 문서를 보여줬습니다. 그런데 앱이 조회하는 약관 목록에 새 판이 들어간 건 자정 뒤였습니다. 문서 버전에 시행일을 적어 두었지만, 웹과 API가 버전을 고르는 방식은 서로 달랐습니다.
자정 뒤 전환된 약관 목록
11월 2일 19:27 KST에 새 판이 들어 있는 변경을 병합했고, 19:36 배포 확인에서 current가 시행일 11월 3일인 문서를 보여주는 것을 확인했습니다. 이미 11월 2일 판이 있어서 같은 날짜를 새 문서에 다시 쓸 수는 없었습니다. 병합부터 자정까지 약 4시간 반 동안 문서의 날짜와 현재라고 표시되는 시점이 어긋났습니다.
웹은 배포된 문서 중 새 판을 바로 표시했습니다. API에 쓰는 등록 도구는 시행 시각의 한국 날짜와 버전 이름이 같은지 검사했습니다. 운영에서는 자정을 기다렸다가 기존 약관 테이블을 백업하고 00:00:30에 새 판 4행을 등록했습니다. 등록 도구의 문서·읽기·운영 API 확인이 모두 통과했고, 약관 목록 API에서 11월 3일 판 4행이 조회됐습니다. 이 기록은 전환이 자정 뒤에 완료됐음을 보여줍니다.
| 시각 (KST) | 확인한 기록 |
|---|---|
| 19:27 | 새 문서를 포함한 변경을 병합했습니다. |
| 19:36 | 웹 current에서 다음 날 시행 문서를 관측했습니다. |
| 다음 날 00:00:30 | 새 판 네 행을 등록했고 이후 API에서 네 행을 확인했습니다. |
19:36은 웹의 새 문서를 확인한 시각입니다. 웹이 정확히 몇 시에 전환됐는지는 이 기록에 없습니다.
배포와 시행 시각을 나누는 설계
다음 전환을 위한 설계안은 문서의 버전 식별자, 조회 가능 시점, 시행 시각을 따로 저장하는 것입니다. 새 문서가 미리 배포돼도 웹의 current와 API의 목록은 같은 시행 시각을 기준으로 판을 고릅니다. 날짜가 같아도 시각이 다르면 서로 다른 판으로 구분할 수 있도록 별도의 고유 식별자를 둡니다.
다음 표는 공통 시행 시각을 적용할 경우 고정 시계 검사에서 확인할 기대 결과입니다. 새 문서를 미리 배포하고, 동일한 시각으로 웹과 API가 고른 버전 식별자를 대조합니다.
| 검사 시각 | 웹 current와 API의 기대 결과 |
|---|---|
| 시행 1초 전 | 둘 다 이전 판 |
| 시행 정각 | 둘 다 새 판 |
| 시행 1초 후 | 둘 다 새 판 |
이번 전환에서는 자정 이후 등록과 API 응답까지 확인했습니다. 공통 시행 시각을 사용하는 방식은 설계안이며, 표의 경계 검사는 두 경로에 적용한 뒤 수행할 항목입니다.

댓글
댓글과 반응은 GitHub 계정으로 로그인해 남길 수 있어요.