oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

なぜ我々は業務時間外、主に酒を飲んだり寝ている時に障害対応をするハメになるのか

スライド作らなければいけないけど現実逃避でメモがてら整理する。(要はヨタ話ですよ。)

夜中とかにアラート来て「うへぇ(´Д`)」ととなるけど、これは果たして運が悪い、若しくはイケていないシステムだからなのだろうか。
まずこういう時は冷静にならなければいけない。スピリチュアルに「あいつの日頃の行いが悪いからだ」「データセンタの風水が悪い」「サーバをラッキングする時にお祓いをしなかった」とか考えても駄目だ。ではどうするか。わかりやすく整理するために「業務時間内に障害対応をしたらアタリ」「それ以外はハズレ」と考えよう。

まず1週間サイクルで考えて業務時間を9:00〜18:00と仮定してみよう。
単純にこれだけで、24時間の内9時間しかアタリの時間は無い。残りはハズレだ。9時間 / 24時間 = 0.375(37.5%)で既に丁半博打より分が悪い。
そして土日も休みだとすると、一週間で5日しかこの時間に該当しない。そうすると
24時間 * 7日 = 168時間の内、9時間 * 5日 = 45時間しかアタリにならない。確率で言うと45時間 / 168時間 = 0.267(約26%)という恐ろしい数値だ。そろそろ競馬で複勝を買ったほうが勝率がいい気がしてきた。

しかも我々には祝日という素晴らしい日もある。そうすると365日の内アタリとなる時間はもっと減る。
信頼のwikipediaで調べると国民の祝日

元日:1月1日
成人の日:1月第2月曜日
建国記念の日:2月11日
春分の日春分
昭和の日:4月29日
憲法記念日:5月3日
みどりの日:5月4日
こどもの日:5月5日
海の日:7月第3月曜日
敬老の日:9月第3月曜日
秋分の日:秋分
体育の日:10月第2月曜日
文化の日:11月3日
勤労感謝の日:11月23日
天皇誕生日:12月23日

となっており、たったの15日のようだ。ということは先程の26%から更にアタリとなる時間は減るのだ。

その上いろんなシステムのピークタイムは異なっている。とりあえず一般的なWebサービスなら、大体キャパシティ問題等が発生しやすくなる時間帯は主に夜などに偏る。おまけにLinuxのdaily cronが大体朝4時に実行されるたりするので、この辺で障害が起きる確率は昼間より更に高くなる。そうなると昼間の発生率は更に下がってしまうのだ。

以上の事から、業務時間内にだけ障害が発生するなんてことは夢のまた夢で、チンチロリンで言うとシゴロサイでも使わないと勝てない勝負なので、夜中にサーバ1台位落ちてもぐーすか寝ていられる様な設計・運用を心がけましょう( ˘ω˘)スヤァ

そう、例えばCassandraを使うとかね(apple風に

追記

夜中の方が偏りが多いと記述したが、環境によっては日中は日中でオペミス・リリースミス等で昼間の比率が大きく上がる場合もあるので、案外平準化する場合があるのかも知れない。ただ、その場合は「うちは運がイイなぁー」ではなく、本来アタリが少ない時間帯なのに大穴引きまくっているという意味なので、むしろ危険なのでフローを見直した方が良いとは思う。