SNS 서비스의 대명사인 페이스북이 인터넷 시간 서버(time.facebook.com
)를 공개하였습니다. 이 시간 서비스의 특징은 ±1 ms 수준의 낮은 오차로 구글이나 애플 등 다른 회사에서 제공하는 시간 서비스보다 더 정확도가 높다는 것입니다.
예전에 클라우드플레어에서 공개 인터넷 시간 서비스를 개시했다는 글(https://gigglehd.com/gg/5121229)에서도 언급했지만, 일반 사용자에게는 밀리초 단위의 시간 정확도는 굳이 필요하지 않습니다. 그럼에도 불구하고 페이스북이 높은 시간 정확도를 내세운 것은, 사실 이런 시간 서비스는 원래 자기들의 필요에 의해 만든 것이기 때문입니다. 페이스북과 같이 대규모 분산 시스템을 운영하는 곳에서는 각 서버 사이의 시간을 정확하게 맞추는 것이 대단히 중요합니다. 서로 다른 두 서버 사이의 시간이 다르게 맞춰져 있으면 정보처리 순서가 뒤죽박죽이 될 수도 있는데, 이로 인해 데이터의 정합성이 깨지거나 할 수도 있거든요.
페이스북이 공개한 NTP 서비스는 전통적인 ntpd
가 아니라 chrony
를 서버 데몬으로 채택했습니다. 이는 벤치마크 결과 chrony
가 시간 동기화 정확도가 더 높았기 때문입니다. 그리고 NIC(랜카드)의 하드웨어 타임스탬프라는 기능을 활성화하였는데, 이는 일종의 하드웨어 가속을 통해 처리 지연시간을 줄이는 것입니다. 또한 이를 서비스하는 서버 시설은 전세계 5곳에 지리적으로 분산시켰습니다.
NTP 서버 소프트웨어를 ntpd
에서 chrony
로 바꾸기 전(파란색 선 왼쪽)과 바꾼 후(파란색 선 오른쪽)의 시간 오차를 밀리초 단위로 나타낸 그래프.
페이스북과 구글, 애플 등이 운영하는 인터넷 시간 서비스들의 시간 오차를 나타낸 그래프. 세로축은 GPS 인공위성의 원자시계에서 받아오는 기준 시간값과의 차이다.
p.s.
혹시 이 서비스를 시간 서버로 설정하실 분은 time.facebook.com
보다는 time1.facebook.com
로 지정하시는 편이 좋습니다. (대한민국 서울 기준) 그냥 time.facebook.com
은 안 먹히는 경우가 있고, time2
부터 time5
서버는 타임아웃이 뜨거나 핑이 상당히 느립니다. 가능하면 미리 ping
으로 테스트해보는 것도 좋겠죠. 제가 chrony
로 직접 테스트해본 결과, time1.facebook.com
은 Stratum 2 서비스면서도 Stratum 1인 포항공대 NTP 서버(±4~5 ms)를 능가하는 정확도(±1~2 ms) 추정치를 보여주더군요. 참고로 time.google.com
이나 kr.pool.ntp.org
같은 곳에 속한 서버는 보통 이 추정치가 최소 ±30 ms 이상부터 시작합니다.