orangeitems’s diary

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

システムはどのように監視され、システム障害はどのように復旧されているか

f:id:orangeitems:20181031225448j:plain

 

システム障害の話

世の中にはたくさんコンピュータシステムがあります。

おそらくどれくらいのシステムがあるかについて、ちゃんと統計は取られたことがないと思います。ファイルサーバーのような軽いものから、金融システムのような絶対に止まってはいけないものまであります。昨今はインターネットやデータセンター、クラウドの存在もあって、24時間動いているシステムもかなり増えたのではないかと思います。人間は寝ないと生きていけないですが、コンピュータは理論的には休まなくても電気さえあれば動き続けられます。

とは言っても人間が作ったものであるので、何らかの問題が発生し停止もしくはスローダウンすることは稀ではありません。原因はいろいろあります。データセンターの配電や保冷システムの問題のような物理的な問題から、DDoS攻撃のような外部からのネットワーク的な問題、プログラムのバグなど本当にさまざまです。今日もどこかで、システム障害が起き、そしてシステムエンジニアが頑張って復旧作業を行い、動き続けているのです。終わったら終わったで、報告書を書いて再発防止策をまとめるとともに、その周知や継続的な実行が必要です。もしかすると、システム障害は復旧作業よりも、復旧した後のほうがイヤだという人も多いのではないかと思います。せっかく獅子奮迅の障害対応をしたのに、何もわからない偉い人がやってきて怒り狂う。本当に大変な仕事だと思います。

 

どうやって気づき、誰が対応するか

私の経験上ですが、コンピュータと無縁な人々はシステムエンジニアが思っているよりものすごく多いです。サーバーとは何かからわかっていない人もたくさんいます。職場やインターネットのコミュニティーではリテラシーが高い人が多いので、錯覚しがちです。情報技術がどうやって成り立っているかを知らずに、スマホでアプリを駆使して利用サイドの熟練者になっている人も多いです。テレビがなぜ映るかを知らなくてもテレビを使えるように、情報技術も誰でも知っていることではありません。当然小学校、中学校、高校と、情報技術自体は必須教科にすらなっていないので、仕方ないと思います。システム障害に関しては、マジョリティーが「情報技術を知らない人」なので、特に無理難題を持ちかけられがちです。お金はないけど絶対に落ちないシステムを作ってくれ。そんな要求は日常茶飯事です。お金があるなら作れるかもしれないけどね。

で、百歩譲ってそれでもシステムはあり、止まったらたくさんの人に迷惑がかかります。止まらない方がいいんですが、止まることはあります。誰が気が付いて誰が元に戻してくれているのでしょうか。9:00~18:00の8時間労働のサラリーマンがほとんどの世の中で、誰が夜中3時の障害に気づき即座に対応してくれているのでしょうか。一般の人々はそこまで考えていないのではないでしょうか。

 

24時間会社に人がいる・・そんなわけない

まず誤解されがちなのは、システムを持つ会社はオフィスやデータセンターに監視センターを持ち、24時間誰かが常駐して正常監視をしてくれているのだろう、という想像です。もちろん金融システムはオペレーションルームを持ちオペレーターが24時間監視されています。監視モニターが数十台配備され、アラートが上がればサイレンがなり監視員が調査を始める、そんな素晴らしい監視体制を持っています。しかし、そんなことができるシステムは全体の0.1%にも満たないと思います。5名を24時間常駐させるためには3交代だとして単純計算で15名必要です。かつ土日祝日や有休も考えるとその1.5倍、22名はいないと成り立ちません。22名の平均単価が月50万としても、月1100万円の原価がかかる。これではペイできないシステムがほとんどです。

ではどうするか。監視を安くやってくれる会社や自動監視システムを使います。

24時間体制のセンターを持ち、監視をインターネット経由で行い、障害発生時は登録した電話番号に連絡したりメールしてくれたりするのです。会社によっては連絡だけではなく、インターネット経由ですがあらかじめ決められた手順書に基づいて一次対応までしてくれるところがあります。何せ24時間人が起きて見守ってくれるのでこのサービスはとてもシステム担当者にとって安心です。寝ている間はメールには気が付けませんし、メールでいちいち起きていては健康が保てません。本当に危険なときだけ電話してくれる。素晴らしいサービスです。

一方で、監視を安くやってくれる会社に支払うお金すら出せない場合は、電話をかけてくれるところまで自動化する場合があります。今は監視システムのアラート発生時対応において、自動で登録されている電話番号に電話し、登録しているテキストを読み上げてくれるところまで実装ができます。

 

mackerel.io

 

Twilioは日本ではKDDIが取り扱っているサービスですが、このサービスと連携すると電話をかけテキストを話させることができます。しかも、もし電話がつながらなかったら、次の人へ・・。とか、連絡先が一周したらまた初めからかけなおす、などルーチンを組むことができます。

私も一瞬利用を考えたものですが、やはり人が電話してくれた方が、緊迫感出るよなあと思って、前者の人力のほうを使っています。

勤務時間外に連絡されるこのやり方が、いいか悪いかは置いといて。そうやって障害対応が始まります。 

 

夜中3時に起こされたら

数年ほど、毎日のように夜中に連絡がきていた期間がありました。事情は言えませんがまあひどかったものです。あれは、精神をじりじりと追い込みます。で、夜中3時ごろに携帯電話のバイブの、「ブーブー」っていう音に飛び起きて電話に出ると、「もしもし、こちら・・・ですが・・・、・・さんでよろしいでしょうか」、なんて、スキップしたい枕詞を聴きながら、「あーなんですかメールの件ですかわかりましたガty」みたいな不機嫌全開で電話を切ったりしたらいけませんよね。慣れたころは「ああこんな遅くまで監視してくれてありがとう」的な感じで優しく出るようには心がけるようになりましたが。監視員は大変だと思います。夜中の3時に電話なんてかけたくもないでしょうに。

で、電話を切ってから本番です。おもむろにパソコンを開き、システムにつなぎ・・。そう、最近は家からでも保守ができるようになっているのです。インターネットとクラウドの時代ですから。ただ逆に、保守の穴を突かれ、攻撃を受ける場合もざらですが・・。

ここから30分くらいで収拾がつく場合は99%です。再起動などで回復したら、次の日の出勤に原因調査は行うとして、寝なおします。そう、普通に出勤しなければいけないんです。夜間対応ごときで休んでいたら、全く会社が回りません。

ただ、30分経っても回復できない稀なケースがあります。この場合は、リモートで作業していたら煮詰まるだけです。システムのユーザーから電話がかかってきたり、偉い人から電話がかかってきたり・・。ということで、会社出勤ですねわかります。タクシー出動とあいなります。夜中3時ならば。同じ部署のメンバーも電話がどんどんかけられ、緊急出動、緊急体制、そんな感じで組織や会社が大騒ぎになります。

きっと、そんな職場がいっぱいあると思います。システムなんて作った時は障害ゼロの気持ちでいます。でも、そんなウマい話は存在しません。支えてくれている人がいるので平穏な日常が運営されているのです。ツイッターで、夜中に電話起こされた、会社へ出動中なんてツイートをみると、「おつかれさまです・・」といつも思っています。

 

システム構築するときが勝負

こんな大変なシステム監視・運用の世界ですが、勝負の分かれ目は実は、構築時にあります。

・システムに問題が起きても、自動的にアラートが発報されない。もしくは問題が起きていないのに無駄なアラートが発報される。そのため、障害の予兆がわからず大きな障害につながってしまう。

・負荷試験が不十分だったので、3年経った時点で性能不足による障害が起きる。性能不足の時点で性能を追加しようとしても時間がかかる。対応が後手後手に回ってしまいユーザーに長時間迷惑をかける。

・構築時のドキュメント化が適当で、構築した人以外がさっぱりわからないシステムができあがってしまう。運用時に夜間障害が起きると、その人が連絡が取れない。

いかがでしょう。私はどれも見たことがあります。大きな企業だと、構築チームと運用チームが別々で、「なんでこんなボロボロのシステムの面倒を私が見なければいけないんだろう・・」と思う人もいらっしゃるのではないでしょうか。しかも、立場や評価は構築できる方が高い場合が多いです。逆に障害が起こるたびに運用エンジニアの評価は下がるという。

システムが構築され運用され、最後に終了するところを何度も見届けたことがあるのですが、個人的には全部経験したほうがいいエンジニアになれると思います。システムの寿命は5年~10年ですが、構築だけしかやったことがない人は10年後の姿まで想像できていないことが多いです。私は運用でたくさん(心で)泣いてきたので、構築するときはかなり厳しく痛い目に合わないように設計しています。

 

 

障害を憎んで、人は憎まず

ということで障害というのは誰にとっても嫌なものですが、対応してくれる人は偉いです。復旧したら、「ありがとう」「お疲れさまでした」とたまにツイッターで見かけるのですが、あれはきっと届いています。

世の中は、きっと気合の入った運用エンジニアの気概で成り立っています。

くれぐれも対応してくれる人には優しくしましょう!。ありがとう!。

 

みんなが知っておくべき運用設計のノウハウ