Leap second
윤초(閏秒)란 협정 세계시에서 기준으로 삼고 있는 세슘 원자시계와 실제 지구의 자전·공전 속도를 기준으로 한 태양시의 차이로 인해 발생한 오차를 보정하기 위하여 추가하는 1초이다. 12월 31일의 마지막에 추가하거나, 혹은 6월 30일의 마지막에 추가한다.
2022년 현재, 1972년 이후 27회 적용하였으며,
최근 적용된 윤초는 2016년 12월 31일 23시 59분 59초(UTC)에서 2017년 1월 1일 0시 0분 0초(UTC)로 넘어갈 때 적용되었다.
이제 '윤초'는 과거로 남겨둘 때가 되었다
WARNING |
현재로선 하나의 의견 정도로 읽어보자 |
- 윤초(Leap Second)는 지구 자전속도 때문에 생기는 UT1(세계시) 과 UTC의 차이를 보정하기 위해 도입됨
- 이는 UTC를 천체 관측등 다양한 목적으로 사용할 수 있게 해주기 때문에 과학자와 천문학자에게 주로 도움이 됨
- UTC를 수정하지 않으면 천문 관측을 위해 UTC와 동기화 되는 레거시 장비 및 소프트웨어를 보정 해야함
- 윤초가 제안된 후 현재까지, UTC는 총 27번 수정 되었음
- 윤초는 1972년도엔 과학계 및 통신업계를 모두 만족시키는 수용할만한 솔루션이었지만, 현재는 UTC는 디지털 어플리케이션 및 과학자 모두에게 좋지 않음
- 그들은 종종 TAI(International Atomic Time, 국제원자시)나 UT1을 선택함
Leap of Faith
- 지구 자전의 불규칙성에 기여하는 많은 요인 중 하나는 세계에서 가장 높은 산들의 만년설이 계속해서 녹고 다시 얼어 붙는 것
- 이것은 회전하는 피겨스케이터를 생각해보면 쉽게 시각화 가능
- 지금까지는 양의 윤초만 있었기에 단순히 23:59:59 와 00:00:00 사이에 23:59:60 이라는 추가 초만 넣으면 되었지만, 지구의 자전 패턴이 바뀌면서 미래의 어느 시점에서는 음의 윤초가 발생할 가능성이 높음 그러면 23:59:58 다음에 00:00:00 이 되어야 함.
- 이 음의 윤초가 주는 영향에 대해서는 대규모로 테스트 된 적이 없으며, 타이머나 스케줄러에 의존하는 소프트웨어에는 치명적인 영향을 미칠 수 있음
Smearing
- 더 최근에는, 단순히 시계를 늦추거나 빠르게 하여 윤초를 서서히 '입히는(Smear)'게 관행이 되었음
- 이 작업을 수행하는 보편적인 방법은 없지만, Meta 에서는 윤초를 00:00:00 부터 17시간에 걸쳐서 Smear함
- 수백대의 NTP 서버들이 같이 Stratum 2에서 진행하므로, 너무 크게 Smearing 하면 NTP 클라이언트들이 오류가 있다고 판단해서 Quorum 에서 빼버리게 되고 이건 Outage가 될 가능성이 있음
- 00:00:00 에서 시작하는 것도 표준화 된것은 아니어서, 여러 옵션이 있을 수 있음
- 예를 들어, 특정회사는 12:00:00 UTC 에서 시작해서 24시간동안 진행할 수도 있음
The negative impact of Leap Seconds
- 윤초와 그 오프셋은 업계 전체에 문제를 일으킴
- Outage가 발생하는 가장 쉬운 방법은 시간이 항상 앞으로만 간다고 생각하고 코딩하는 것
- 위의 spent 가 어떻게 사용되는지에 따라 윤초기간중에 음수가 발생할 수도 있음
- Reddit은 2012년에 윤초 때문에 대규모 중단이 발생했고, 사이트가 30~40분동안 접근이 불가능 했음
- Cloudflare는 2017년에 회사의 공용 DNS에 미치는 영향에 대해서 상세한 글을 게시 했음
Moving beyond the leap second
- 윤초 이벤트는 업계 전반에 걸쳐 문제를 일으키고 계속해서 많은 위험을 내포하고 있음
- 현업에서 우리는 윤초가 도입될 때 마다 문제에 부딪힘
- 그리고 매우 드문 사건이기 때문에 발생할때마다 커뮤니티들이 황폐화 됨
- 모든 산업분야에서 시계 정밀도에 대한 수요가 증가하면서, 윤초는 이제 득보다 실이 많고, Outage를 초래
- Meta의 엔지니어로서, 우리는 향후 윤초 도입을 중단하고 다음 천년동안 충분할 것으로 생각하는 현재 수준인 27을 유지하기 위해 큰 지원을 하고 있음