核心内容の要約
この記事は、地球の自転が不安定であるために天文学者とコンピュータ専門家の間で「1秒」の定義に食い違いが生じ、その調整のために導入される「閏秒」がコンピュータシステムに大きな障害をもたらしているという問題について述べています。Googleはこの問題を解決するために「Time Smear(時間の平滑化)」技術を考案し、閏秒を微小な部分に分割して24時間に均等に分散させることで、システムが時間の急変を感じないようにしました。その後、他の大手テクノロジー企業もこの技術を採用し、国際計量機構(CGPM)は2035年までに閏秒を廃止することを決定しましたが、クラウドプラットフォーム間の時間のずれは完全には解消されていません。
1. なぜ閏秒が必要なのか?天文学者とコンピュータ専門家の「時間戦争」
天文学者とコンピュータ専門家は「1秒」の理解に大きな違いがあります:
- 天文学者の時間(UT1):地球の自転を基準にしており、1回の自転が1日で86,400秒です。しかし、地球は内部のマグマの動きや海水の摩擦、地震などによって自転速度が変わるため、実際の「1日」は正確に86,400秒ではありません。
- コンピュータ専門家の時間(TAI):原子時計を使用し、セシウム原子の振動回数で時間を測定しており、1秒は一定です。地球がどのように自転しても変わりません。
この違いが大きくなる中、天文学者は「太陽が頭上に来た時が正午12時であること」を保証したい一方で、コンピュータ専門家は時間が一定のペースで進むことを求めています。1972年にはUTC(協定世界時)が導入されましたが、原子時計と地球の自転のずれが0.9秒以上ある場合には閏秒を加えることになり、「23:59:60」という奇妙な時間帯が発生します。
2. 閏秒がコンピュータにとっての「悪夢」:実際にシステムがダウンした事例
コンピュータシステムの基本動作は「時間が一定のペースで進む」という前提に基づいています。例えば、ログを時間順に並べたり、データベースのトランザクションの優先順位を決めたり、分散型ロックを使用したりする際にこの前提が必要です。しかし、閏秒の導入によってこの前提が崩れます:
- 23:59:60の発生:多くのプログラミング言語ではこの時間帯が定義されておらず、コードを解析するとシステムがダウンします。
- 時間の一時停止:同じ秒に生成されたログやリクエストが同じタイムスタンプを持つため、デッドロックが発生します。
- 時間の逆戻り:最も深刻な問題は、分散型システムのロックやトランザクションが混乱することです。
2012年の閏秒による大規模な障害では、Linuxカーネルでデッドロックのバグが発生し、RedditやMozilla、オーストラリア航空のシステムが大量にダウンし、サーバーのCPU使用率が瞬間的に100%に達しました。これはエンジニアにとって大きな懸念事項であり、天文学者の「理想的な時間合わせ」がデジタル世界では大きな問題を引き起こす可能性があることを示しています。
3. Googleの「Time Smear」:「自欺欺人」で大きな問題を解決
Googleはこの問題に対処するためにTime Smear技術を開発しました:
- 方法:閏秒が到来する際に、Googleの内部時計サーバーはその12時間前から意図的に時計の進みを遅らせ(通常の1秒よりもわずかに長くします)、加えるべき1秒を数十万回に分割して24時間に均等に分散させます。
- 効果:システムは時間の急変を感じず、「23:59:60」も発生せず、すべてのビジネスやデータベース、ロックが正常に動作します。
これは「偽の時間」(UTCにもTAIにも合わない)ですが、エンジニアにとっては「システムがダウンしないこと」が「基準に合うこと」よりもはるかに重要です。
4. 業界の追随と計量機構の決定:閏秒の廃止
Googleの方法は非常に効果的で、AWSやMeta、Microsoftなどがこれを採用しました(ただし、各社の平滑化手法は異なります)。最終的に国際計量機構(CGPM)は2022年にUTCから閏秒を廃止することを決定しました。天文学者はコンピュータ専門家に譲歩し、デジタル時代においては時間を「機械的に均一に」保つことを選択したのです。
5. 残された問題:クラウドプラットフォーム間の時間のずれ
すべての企業がTime Smear技術を使用しているものの、各社の手法は異なります:
- Google:閏秒が発生する時刻を中心に24時間にわたって時間を平滑化します。
- AWS:前日の正午から24時間にわたって余弦関数を用いて時間を平滑化します。
- Meta:かつては17.5時間にわたって時間を平滑化していました。
もしシステムが複数のクラウドプラットフォームを利用している場合(例えば一部がAWS、一部がGCPである場合)、平滑化処理中にタイムスタンプに数百ミリ秒のずれが生じる可能性があります。これはデータベース間の不整合を引き起こす原因となり得ます。つまり、物理世界とデジタル世界の時間のずれはまだ完全には解消されていないのです。
一言でのまとめ:コンピュータシステムがダウンしないようにするためにGoogleは「1秒」の定義を再定義し、世界の時間基準を変えました。これは工学的な実用性が学術的な基準を上回った典型的な例です。しかし、デジタル世界と物理世界の時間の矛盾は今もさまざまな形で存在しています。