본문으로 건너뛰기
유환호 연락하기

홈 / 기록

이 저장소의 하루는 한국시간인데 집계만 세계표준시로 자르고 있었다

한눈에 답변

크롤러 방문 집계 로직의 시간대 설정이 세계표준시(UTC)로 돼 있었는데, 같은 저장소의 다른 관리자 화면 두 곳은 이미 한국시간 기준으로 하루를 나누고 있었다. 한 저장소 안에서 '하루'의 경계가 서로 다른 두 가지 기준으로 갈라져 있었던 셈이다. 실제로 특정 구간의 집계값이 표시 날짜와 9시간만큼 어긋나 있는 것을 확인하고 바로잡았다.

무엇을 감사하다가 발견했나

측정 기준을 전체적으로 점검하는 과정에서, 크롤러 집계에 쓰이는 시간대 설정이 세계표준시(UTC)로 적혀 있는 것을 발견했다. 그런데 같은 저장소의 다른 관리자 화면 두 곳은 이미 한국시간 기준으로 날짜를 묶고 있었다.

왜 이게 문제인가

이 저장소가 다루는 하루의 기준은 한국시간이다. 그런데 크롤러 집계만 세계표준시 자정을 기준으로 하루를 나누면, 같은 시스템 안에서 ‘하루’라는 개념이 두 가지 다른 뜻으로 쓰이게 된다. 실제로 특정 기간의 집계 구간을 확인해 보니, 화면에 표시된 날짜 라벨과 실제로 집계에 포함된 시간 범위가 9시간만큼 어긋나 있었다.

어떻게 확인했나

같은 시간 경계를 데이터베이스에 직접 질의해 집계값을 뽑아 보고, 시스템이 계산한 값과 일치하는지 비교했다. 한국시간 기준으로 계산한 값은 직접 질의한 결과와 정확히 일치했고, 세계표준시 기준으로 계산한 값은 몇백 건이나 차이가 나는 다른 행 집합을 세고 있었다.

어떻게 고쳤나

특정 시간대(기본값은 한국시간)의 지역 자정을 세계 표준 시각으로 정확히 변환하는 함수를 새로 만들었다. 여름·겨울 시간 전환처럼 하루의 길이가 23시간이거나 25시간이 되는 특수한 경우까지 테스트에 포함시켜 확인했다.

이미 만들어진 근거·초안은 어떻게 됐나

잘못된 시간 경계로 만들어진 근거 자료 2건과 그 근거를 사용한 초안은 폐기하고, 올바른 경계로 다시 만들었다. 잘못된 전제 위에 세워진 결과물을 부분적으로 수정하는 것보다, 전제를 고친 뒤 처음부터 다시 만드는 편이 안전하다고 판단했다.