윤초 설명: UTC는 어떻게 지구 자전과 보조를 맞추는가
윤초는 원자시계 시간을 점점 느려지는 지구 자전과 맞추기 위해 UTC에 삽입하는 1초 보정입니다. 대형 시스템을 다운시킨 적이 있으며 2035년까지 폐지될 예정입니다. 이 가이드는 윤초가 무엇인지, Unix 시간이 어떻게 다루는지(대개 무시), 그리고 시스템이 안전을 유지하는 실용적 패턴을 다룹니다.
1분으로 보는 윤초
윤초는 시간을 UT1에서 0.9초 이내로 유지하기 위해 UTC에 가끔 추가하는 1초입니다. UT1은 지구의 실제 자전으로 정의되는 시간입니다. 원자시계는 완벽히 일정한 속도로 똑딱이지만 지구는 완벽히 일정한 속도로 돌지 않으므로, 둘은 어긋나 다시 동기화해야 합니다. 1972년 이후 이런 삽입이 27번 있었고 마지막은 2016-12-31이며, 세계 계량 기관들은 2035년까지 이를 폐지하기로 의결했습니다. 핵심은 Unix 시간이 윤초를 완전히 무시한다는 점입니다. 아래 표는 주요 시간 척도가 어떻게 관계되는지 보여 줍니다.
| 시간 척도 | 기준 | 윤초? | 비고 |
|---|---|---|---|
| TAI | 원자시계(SI 초) | 없음 | 연속 — 2017년 이후 UTC보다 37초 앞섬 |
| UT1 | 지구 자전(천문) | — | UTC가 가깝게 유지하는 태양시 |
| UTC | TAI를 UT1로 조정 | 있음(~2035까지) | 전 세계 민용시 |
| Unix 시간 | UTC, 단 하루 86,400초 | 무시 | 애플리케이션 코드가 쓰는 것 |
윤초란 무엇인가
윤초는 UTC를 UT1에서 0.9초 이내로 유지하기 위해 UTC에 추가하는 1초입니다. UT1은 지구 자전에 기반한 천문 시간입니다. 지구 자전은 불규칙하고 긴 시간 척도에서 약간 느려지므로, 원자적 UTC와 자전적 UT1은 어긋나 재정렬해야 합니다.
- 1972년부터 마지막(2017-01-01)까지 27번의 양의 윤초가 삽입되었다
- 음의 윤초는 한 번도 없었지만 지구가 가속하면 이론상 가능하다
- IERS의 Bulletin C는 다가오는 윤초를 최소 6개월 전에 공지한다
- UTC 하루의 맨 끝(23:59:60)에 삽입되며, 보통 6월 30일 또는 12월 31일이다
윤초가 존재하는 이유
UTC는 1972년에 하이브리드로 재정의되었습니다. SI 초(원자)를, 가끔의 윤초 삽입을 통해 UT1(천문)에서 1초 미만으로 유지하는 것입니다. 목표는 어느 순수 체계에도 얽매이지 않고 시간과 태양시를 대략 정렬해 두는 것이었습니다.
- TAI: 국제 원자시, 윤초가 없는 순수한 SI 초 계수(현재 UTC보다 37초 앞섬)
- UT1: 자전 시간, 지구 자세 관측에 기반
- UTC: 하이브리드 — 원자의 똑딱임을 주기적으로 UT1로 당김
- 윤초가 없으면 UTC와 태양은 1세기당 약 1분씩 어긋난다
윤초와 Unix 시간
POSIX Unix 시간은 윤초를 무시하도록 정의됩니다. Unix 하루는 정확히 86,400초입니다. 윤초가 발생하면 시스템마다 다르게 처리하지만 — 그 어느 것도 Unix 타임스탬프를 1초 더 증가시키지 않습니다. 그래서 Unix/POSIX 타임스탬프는 UTC를 따르지만 1970년 이후 경과한 물리적 초의 진짜 계수는 아닙니다.
- 엄격한 POSIX: 초 번호가 반복됨 — 23:59:59가 두 번 발생, 둘 다 같은 Unix 타임스탬프에 매핑
- 2012년 이전 Linux 커널: 엄격한 POSIX 구현, 많은 버그가 표출(Java, MySQL, Hadoop 멈춤)
- 현대 Linux 커널: clock_settime()으로 보정 적용, 일부 구현은 구간에 걸쳐 스미어
- 스미어링: 추가 1초를 여러 시간이나 하루에 분산해 어떤 초도 반복되지 않게 함
Leap smearing(윤초 스미어링)
대부분의 대형 공개 NTP 서비스는 더 이상 윤초를 그대로 클라이언트에 전달하지 않습니다. 스미어합니다. 추가 1초를 한 구간에 분산해, 그 동안 클라이언트 시계가 UTC보다 아주 약간 더 빠르게(음의 윤초면 더 느리게) 가도록 합니다. 그 결과 어떤 클라이언트도 23:59:60을 보지 않습니다 — 엄격한 UTC에서 잠시 벗어나는 대가로요.
| 제공자 | 스미어 구간 | 비고 |
|---|---|---|
| 24시간, UTC 자정 중심 | 약 11.6 µs/s 조정 | |
| AWS | 24시간 | Amazon Time Sync Service |
| Meta(Facebook) | 17시간 | — |
| Microsoft | 24시간 | 2018년 이후 |
- 스미어링은 스미어 구간 동안 클라이언트 벽시계가 엄격한 UTC와 달라짐을 뜻함 — 애플리케이션 용도엔 괜찮지만 고정밀 타이밍엔 부적합
음의 윤초가 있을 수 있는가?
지금까지의 윤초는 모두 양 — 1초 추가 — 이었습니다. 그러나 2020년경부터 지구가 지난 반세기 대부분보다 조금 더 빨리 돌면서, 한때 이론적이던 음의 윤초 가능성을 잠시 끌어올렸습니다. 1초를 빼서 23:59:58 다음에 곧바로 00:00:00이 오게 하는 것입니다. 사상 최초가 될 것이며, 반복되는 초를 다루는 많은 시스템이 건너뛴 초는 여전히 잘못 다룹니다. 최근 연구에 따르면 극지 해빙이 가속을 늦추고 있어 음의 윤초가 있더라도 2029년경으로 미뤄질 수 있습니다 — 그때쯤이면 2035년 폐지가 이를 무의미하게 만들 수도 있습니다.
2035년 폐지
국제도량형총회(CGPM)는 2022년 11월(결의 4)에 늦어도 2035년까지 UTC에서 윤초를 없애기로 의결했습니다. 이 계획은 ±0.9초 UT1 허용오차를 훨씬 큰 값으로 대체해, 사실상 UTC가 수십 년에 걸쳐 태양시에서 벗어나도록 허용합니다.
- 2022-11: CGPM 결의 4 — 2035년에, 또는 그 이전에, 최대 UT1−UTC 차이를 확대
- 2023-11: ITU-R WRC-23이 계량 결정을 공식 승인
- 폐지 후 UTC는 고정 오프셋으로 TAI에 묶인 순수 원자 시간 척도가 된다
- 구현체는 윤초 처리 코드 경로를 단계적으로 없애는 데 2035년까지 시간이 있다
관련 참고
FAQ
- 윤초는 지금까지 몇 번 있었나요?
- 1972년부터 2017-01-01까지 27번의 양의 윤초가 UTC에 삽입되었습니다. 그 이후로는 없습니다. 음의 윤초는 한 번도 일어난 적이 없습니다.
- UTC와 TAI의 차이는 무엇인가요?
- TAI는 윤초가 없는 연속 원자시간이고, UTC는 지구 자전에서 0.9초 이내로 유지하기 위해 윤초로 조정한 TAI입니다. 2017년 이후 TAI는 UTC보다 정확히 37초 앞섭니다.
- 음의 윤초가 있을 수 있나요?
- 가능하지만 한 번도 없었습니다. 2020년경부터 지구가 약간 더 빨리 돌아, 원리상 1초를 더하는 대신 빼야 할 수도 있습니다. 2035년으로 예정된 윤초 폐지가 이 문제를 무의미하게 만들 수 있습니다.
- 2035년 이후 Unix 타임스탬프는 윤초를 포함하나요?
- 아니요. Unix 시간은 윤초를 센 적이 없고 앞으로도 세지 않습니다. 폐지 후에는 UTC 자체가 더 이상 추가하지 않으므로, Unix 시간과 UTC는 그대로 정렬된 채 유지됩니다.
- 왜 Reddit과 Cloudflare가 윤초 날 다운됐나요?
- Linux 커널과 Java 라이브러리에 23:59:60이 발생할 때 작동하는 버그가 있었습니다 — 보통 무한 루프, 락 경합, 또는 일부 코드 경로에서 "음의 초"로 인한 NaN 연산입니다.
- 현재 TAI−UTC 차이는 얼마인가요?
- 37초입니다. 즉 27번의 윤초(1972년 이후)에, UTC를 정의할 때 설정한 10초 초기 오프셋을 더한 값입니다.