서버시간이란? 내 시계와 왜 다를까
콘서트 예매가 "오후 8시 정각"에 열린다고 할 때, 그 8시는 누구의 8시일까요? 내 휴대폰도, 내 컴퓨터도 아닌 예매처 서버의 8시입니다. 서버의 시계가 8시를 가리키는 순간 예매 버튼이 활성화되고, 그 전에 도착한 요청은 "아직 오픈 전입니다"라는 안내를 받습니다.
문제는 이 서버 시계와 내 기기 시계가 정확히 같지 않다는 점입니다. 차이는 보통 수십에서 수백 밀리초(1밀리초는 1/1000초)이고, 관리가 덜 된 서버라면 몇 초씩 벌어지기도 합니다. 인기 공연은 1~2초 사이에 좋은 좌석이 사라지기 때문에, 이 작은 차이가 결과를 바꿉니다.
시계는 왜 서로 어긋날까
컴퓨터와 스마트폰 안에는 수정(크리스털) 진동자로 시간을 세는 작은 시계가 들어 있습니다. 이 진동자는 온도나 부품 편차에 따라 아주 조금씩 빠르거나 느리게 갑니다. 하루에 고작 0.1초가 틀려도, 며칠만 지나면 눈에 띄는 차이가 쌓입니다.
그래서 대부분의 기기는 인터넷으로 표준 시각 서버에 접속해 주기적으로 시계를 맞춥니다. 이 방식을 NTP(Network Time Protocol)라고 부릅니다. 하지만 맞추는 주기와 기준 서버가 기기마다, 회사마다 다릅니다.
- 내 휴대폰은 통신사 망이나 제조사 시각 서버로 맞춰집니다.
- 내 PC는 운영체제가 정한 주기(때로는 며칠에 한 번)로 맞춰집니다.
- 예매처 서버는 그 회사의 서버 관리 방식에 따라 맞춰집니다.
세 시계가 각자 다른 시점에, 다른 기준으로 맞춰지니 서로 어긋나는 게 자연스럽습니다. 같은 순간에 휴대폰과 PC 시계를 나란히 놓고 보면 초가 바뀌는 순간이 살짝 다른 것도 같은 이유입니다.
네트워크 지연이라는 두 번째 변수
시계 차이만 있는 게 아닙니다. 내가 버튼을 누른 순간과 그 요청이 서버에 도착하는 순간 사이에도 시간이 걸립니다. 이를 지연(latency)이라고 하고, 요청이 갔다가 응답이 돌아오기까지 걸린 전체 시간을 왕복 시간(RTT)이라고 합니다.
국내 유선 인터넷에서 국내 서버까지는 왕복 수십 밀리초 정도가 일반적이고, 모바일 데이터나 붐비는 와이파이에서는 더 길어지고 들쭉날쭉해집니다. 요청이 서버에 닿는 데는 대략 왕복 시간의 절반이 걸린다고 보면 됩니다.
정리하면, 정각에 맞춰 누르려면 두 가지를 알아야 합니다. ① 서버 시계가 내 시계보다 얼마나 빠르거나 느린지, ② 내 요청이 서버까지 가는 데 얼마나 걸리는지. 서버시간 사이트는 이 두 가지를 재서 "서버 기준으로 지금 몇 시인지"를 보여 줍니다.
서버시간은 어떻게 잴까
웹사이트에 접속하면 서버는 페이지와 함께 몇 가지 정보를 응답 머리말(헤더)에 담아 보냅니다. 그중 Date라는 항목에 서버가 생각하는 현재 시각이 들어 있습니다. 서버시간 측정은 기본적으로 이 값을 읽는 일입니다.
그런데 Date 값은 초 단위까지만 적혀 있습니다. "20시 00분 03초"라고만 알려 줄 뿐 3.1초인지 3.9초인지는 알 수 없습니다. 그대로 쓰면 최대 1초까지 틀릴 수 있다는 뜻입니다.
초가 바뀌는 순간을 잡는 방법
이 한계를 넘는 방법은 여러 번 묻는 것입니다. 요청을 보낸 시각과 응답을 받은 시각을 정밀하게 기록해 두고, 서버가 알려 준 초 값과 비교하면 "서버 시계는 이 범위 안 어딘가에 있다"는 구간이 나옵니다. 요청을 조금씩 다른 타이밍에 여러 번 보내면 구간들이 겹치는 부분이 점점 좁아지고, 결국 서버의 초가 바뀌는 순간을 수십 밀리초 안쪽까지 좁힐 수 있습니다.
초침은 예매처마다 이런 요청을 10번 보내고, 구간이 겹치는 한가운데를 서버 시계의 위치로, 겹친 구간 폭의 절반을 측정 오차(±)로 표시합니다. 측정 오차가 작을수록 믿을 만한 값입니다.
내 기기와 측정 서버 사이도 보정
측정은 초침 서버에서 이루어지기 때문에, 내 기기와 초침 서버 사이의 시계 차이도 따로 잽니다. 페이지를 열면 짧은 신호를 몇 번 주고받아 가장 빠르게 돌아온 응답을 기준으로 내 기기 시계를 보정합니다. 그래서 화면에 보이는 시각은 "내 기기 시계"가 아니라 "예매처 서버 시계"를 기준으로 움직입니다.
측정값을 볼 때 알아 둘 것
- 오차가 크게 나오면 다시 재 보세요. 네트워크가 잠깐 불안정했을 수 있습니다. 와이파이보다 유선이, 모바일 데이터보다 와이파이가 대체로 안정적입니다.
- 예매 직전에 한 번 더 확인하세요. 서버 시계도 계속 조금씩 움직이고, 관리자가 시계를 다시 맞추기도 합니다. 오픈 10분 전쯤 다시 측정하는 게 좋습니다.
- 사이트에 따라 측정이 안 될 수 있습니다. 일부 사이트는 앞단에 보안·캐시 서버를 두어 실제 예매 서버와 다른 시계를 보여 주기도 합니다. 이 경우 표시값은 참고용으로만 보세요.
- 대기열이 있는 사이트는 결과가 시간만으로 정해지지 않습니다. 대기열 순번은 서버에 도착한 순서로 매겨지므로, 정확한 시각에 한 번 들어가는 것이 가장 중요합니다.
그래서 언제 누르면 될까
서버 기준 정각에 내 요청이 도착해야 하므로, 이론적으로는 "정각 − 편도 지연"에 누르면 됩니다. 하지만 너무 이르게 도착하면 "오픈 전" 안내를 받고 다시 시도해야 하므로 오히려 손해입니다. 그래서 초침은 서버 기준 정각에 맞추되, 아주 살짝(0.1~0.3초) 늦게 누르기를 권합니다. 자세한 전략은 티켓팅 성공 확률 높이는 법에 정리했습니다.