orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

猛暑が後押しする日本へのサマータイム導入、インフラエンジニアは頭を抱える

f:id:orangeitems:20180728173627j:plain

 

オリンピックに絡んでサマータイム導入?

この話だけで体感温度が5度下がりました。昨日夕方のニュースです。

 

www.asahi.com

2020年東京五輪・パラリンピック大会組織委員会は27日、「20年に限ってでも良いのでサマータイム(夏時間)を導入する法改正を検討して欲しい」と安倍晋三首相に申し入れた。現状より1~2時間早めることで、大会期間中の暑さ対策を進める狙いがある。

 

首相に申し入れ、まで進んでしまっているんですねこの話。

 

時間の問題に苦しんだインフラエンジニアの過去

私の経験でも、過去2度、時間の問題の記憶があります。

 

2000年問題

2000年問題と言ってピンと来る人もだんだん減ってくるんでしょうね。私は1月1日の昼のシフトに入った記憶があります。昔のコンピューターは年号を2桁で処理していたため、99に1を足すと誤作動して2000年になった瞬間に世界で停電や爆発事故などシステムエラーがことごとく発生し、世界が滅亡につながるだのなんだの、ノストラダムスの大預言ばりに騒ぎになりました。

蓋を開けたら、なーんにもなくて、世の中がミレニアムミレニアム言い始めました。いまでもこのミレニアムという言葉が残っているのは西部そごうのミレニアムカードだけだなという感じです。

ただ何もしなくて放っておけばシステムエラーは確かに起きてたでしょうから、各ベンダーの隠れた事前対応に今でもありがとうという思いはあります。

 

うるう秒問題

うるう秒のことをきちんと理解している人はあまりいないのではないでしょうか。

質問4-3)「うるう秒」ってなに? | 国立天文台(NAOJ)

細かいことは上記を読んでいただくとして、インターネットにつながるシステムのほとんどはNTPサーバーという時間合わせのサーバーに問い合わせをして時間を合わせています。このNTPサーバー側でうるう秒という特殊な秒をごくごくたまに加えて、対応するということをやっています。したがって、システム側では本来はうるう秒を神経質に考える必要はなかったはずです。

しかし!、私の場合はJavaの実行環境に不具合があり、OSのCPUが100%になるという障害を食らいました。しかもJavaを動かしているサーバーをいっぱい預かっていたので、どっかんどっかんアラート状態です。そして、土曜日の9時というタイミングでその時はうるう秒を挿入されてしまったので、私は外出先からとんぼ返りしてJavaを再起動する刑に処せられたのでした。

「うるう秒」障害がネットで頻発|WIRED.jp

ここ最近、うるう秒が何度か挿入されるときには何も起こっていませんので、最近はうるう秒も考えられてハードウェアやソフトウェアが動いていることを感じます。

1秒ごときにやれやれでした。

 

ちなみに年号が変わって困るのはアプリ側

来年にも平成が終わるのですが、インフラエンジニアが気にするレイヤーでは、年号は全く気にしていないので、全然平気です。

一方で、公共系のシステムなどは年号を取り扱うので、なかなか大変そうです。

新元号の発表はいつになるのか…。現役SE「システム屋を殺す気か」と悲鳴

まあ、監視アラートなどが「平成30年7月28日 17:00 CPUアラート」と記載してくれたらそれはそれで腹を抱えて爆笑してしまいそうで、ネタとしては優秀ですけどね。

年号発表のタイミングはなかなかシビアなようで、アプリエンジニアの方は大変だと思います。

 

そしてサマータイム

サマータイムになると、日本はどういう運用になるのでしょうか。

 

サマータイムってどういう意味なの?何か注意は必要? - トラベル QUESTION!【トラベルコ】

◎アメリカ、カナダ、メキシコ(一部除く)
≪開始日≫3月の第2日曜日午前2時
≪終了日≫11月第1日曜日午前2時

開始日→午前1:59の次は時計の針を1時間進めて午前3時に。
終了日→午前1:59の次は時計の針を1時間戻して午前1時に。
また、開始日は1日が23時間、終了日は逆に25時間になります。

 

上記がよくまとまっていると思います。

なんと、0:00になったら1時間進めるではないのが発見です。戻し方も同様です。

しかも月の始めでも終わりでもないという始末です。

 

そしてインフラの話に入っていきますが、今のOSの時刻管理は「UTC(Universal Time Coordinated)」で記憶されているそうです。それを表示するときに、OSの設定を反映して時間表示するそうで、OSにサマータイムの情報を入れてあげれば、それを踏まえて表示してくれるそうです。

つまり、OS側がサマータイムを日本でいついつからやるよ、という情報を持ってしまえば、システム上の時間管理には何の影響もなく、表示に対応してくれるようです。OSベンダーはちょっと大変ですが、日本以外ではサマータイムを運用しているところはたくさんあるので、そこまで心配する必要はないと思われます。

しかし、1つだけ留意点があるとすれば、サマータイム反映後の時間(つまりタイムゾーンを反映させた時間)をアプリ側で取得して、それをファイル名やデータベースのIDなどに反映させている場合です。サマータイム開始の時は時間が1時間進むので影響はないのですが、終了の際には、時間が戻ることになります。戻った時間にて再度IDを付けなおすと、ユニークではない文字列となってしまう可能性がありますよね。

時間が戻る、というのは気持ちの悪い話ですね。

もちろん、UTCで運用していればいいんですが、そんなことを気に留めていないバッチプログラムはたくさんありそうな気がします。

 

・・ということで、多分サマータイムをやったら、アプリエンジニアはソースコード、インフラインジニアはバッチファイルの見直しをしなければいけないでしょうし、そのための自動化ツールも出そうですね(タイムスタンプから文字列を取得する処理の検査など)。

とりあえずは事前のOSのアップデートは必須かなあ。塩漬けしてアップデートしていないOSは大変でしょうね。

 

心の準備を

年号にサマータイムにと、時間イベントがいろいろと頻出していますが、心を落ち着けて一つ一つ対応していくしかないですね。

政治家がどう判断するかわからないですが、やりたいならやればいいと思います。ただやったらやめないで、とも思います。どうなることやらです。

 

 

1分で話せ 世界のトップが絶賛した大事なことだけシンプルに伝える技術