先日、KDDIが大規模な通信障害を起こした。社会インフラである携帯電話に関する障害ということもあって影響は大きく、SNSでもさまざまな話題のタネになった。障害対応をしている真っ最中の現場など、関係各所に「今どうなってるんだ」と怒鳴り込み、解決を遅らせる「今どうなってるんだおじさん」もその一つだ。

 例えばauの障害時は、auショップに怒鳴り込む人が相次いだという。総務省がKDDIに幹部を直接送り込んだ報道に対しても「『今どうなってるんだおじさん』ではないのか」と疑問視する声が見られ、後に総務省が「足を引っ張ったわけではない」と詳細を説明していた。

 実はこの問題、携帯回線だけでなく、クラウドなど、他のITインフラの障害時にも起こり得る。もし周りでITインフラが障害を起こしたとき、今どうなってるんだおじさんにならないためにどんな考え方をすればいいのか。auの一件や、エンジニアやコンサルタントとして筆者が見てきた事例を振り返りながら考えてみる。

●著者紹介:伊藤利樹

NTTデータのエンジニア兼、コンサルタント兼、ビジネスディベロッパ―。セキュアにクラウドを利用するソリューション「A-gate(R)」を企画・開発し、世の中に展開している。また、クラウド利用体制の構築支援をライフワークのように実施。クラウドの基礎知識から利用時に決めるべきこと、作るべき体制、守るべきルールを伝え、世の中のクラウド利用を推進している。『DXを成功に導くクラウド活用推進ガイド CCoEベストプラクティス』の著者の一人である。

●「今どうなっているんだおじさん」の実態 事例から振り返る

 まずはauの回線障害について、筆者の視点で少し振り返ってみる。少し旬を過ぎてしまったが、原因などの情報は出そろっている。

 障害発生は7月2日未明。当時は休日で、家族にauユーザーがいないこともあり、障害を知ったのは夕方のニュースだった。この時点でauショップに怒鳴り混んだ人がいたり、「今どうなってる? いつ直るんだ」という問い合わせが続いていたりしたという報道があった。警察が出動する事態もあったというニュースも見掛けた。

 料金を支払っているにもかかわらずサービスを受けられない不満は分かる。社会インフラである携帯電話が長時間利用できないと支障が出るし、救急への連絡で問題が出た件は文字通り致命的だ。さらにいつ直るのかも分からないとなると、フラストレーションがたまるのも無理はない。

 とはいえ、あくまで販売店にすぎないauショップに怒鳴り込んでもしょうがない。障害はauショップでは起きていないし、auショップの店員さんこそ「いつ直るの?」と思っているだろう。それでも不満のはけ口が欲しいのか、auショップに突撃し、さらなる混乱を起こす「今どうなっているんだおじさん」がいたようだ。

 同じような事例はクラウドツールを使うときにも起こり得る。7月21日や8月25日に発生した「Microsoft Teams」の障害時、業務に支障が出た人もいたはずだ。例えば筆者は予定していた社内会議に遅れて入ろうとしたが、参加できなかった。障害発生前から開かれていた会議は問題なく続行できていたが、別件があり後から参加しようとした筆者は弾かれてしまったのだ。

 ちなみに、会議は筆者がいなくとも滞りなく進んでしまい、存在価値を問われる悲しみに見舞われてしまった。幸いにも業務に支障がなかったような気もする。とはいえ、実際は業務に支障が出た人も多かったはずだ。ここでも「今どうなっているんだおじさん」がいたかもしれない。

●絶対に止まらないシステムは絶対にない

 そもそも携帯電話もクラウドも、人が機械を使って管理・提供している以上、サービスが止まってしまうことは当然あり得る。機械は壊れるし、人間がやっているのでミスもある。

 もちろん通信会社もクラウド事業者もシステムを止めないように努力はしている。機器は十二分に冗長化(予備の設備や機能などを用意すること)しているし、人間の作業品質を担保するためにさまざまな仕組みやルールを作り込んでいる。しかし、au回線障害も始まりは人的ミスと発表されているように限界はある。絶対止まらないシステムなど絶対にないのだ。

 一方で「じゃあ、現場に詳細を聞きに行こう」と行動を起こしても、良い結果が得られるかどうかは微妙なところだ。関係のない窓口に連絡しても意味はないし、問い合わせに対応するにもリソースが必要なので、むしろ悪化する可能性だってある。例えばTeamsの障害時に、情報システム部門に問い合わせても、基本的には提供元である米Microsoftの対応を待つしかないので、事態は進展しないだろう。

●必要なのは事前の冗長化 「今どうなってるんだ」以外にできること

 ではITインフラで障害が発生したとき、auショップに突撃するような「今どうなってるんだおじさん」にならないためには、どんな対応が必要か。必要なのは、ユーザーの側でもインフラをあらかじめ冗長化しておくことだ。大体のケースに対応できる。

 例えばTeamsの場合、チャットのやりとりはメールで代替。重要なチャットを残しておきたいのならば、履歴を保存する仕組みを作る。絶対に実施すべき会議は、Teamsで障害が起きたら「Zoom」や「Cisco WebEx」を利用するよう、あらかじめ取り決めておくことなどが考えられる。

 「今どうなっているんだ!」と情シスに文句を付けるよりも、Teamsで障害が起きていたが、代替案としてWebExなどを事前に用意していたので会議は滞りなく実施できました、という方がスマートだ。

 携帯回線で置き換えると「デュアルSIM」やスマホ2台持ちが冗長化に当たるだろう。auショップに突撃するほど携帯回線が欠かせないインフラならば、維持に相応の努力をしても良いはずだ。

 もちろん冗長化するとコストは余分に掛かってしまう。格安SIMの基本料金はおおむね1000円未満とはいえ、毎月の出費が増えるのは喜ばしい話ではない。冗長化していても運悪く両方のインフラが同時に潰れることもあるので、100%安心とはいえない。

 筆者も、冗長化しているにもかかわらず痛い目にあったことがある。クラウドの話ではないが、RAID(データを複数のHDDに分散して保存する仕組み)を組んでいたのに、HDDが同時に破損して数十TBのデータベースが壊れてしまった経験がある。10年近く前の話だ。

 結局データベースはバックアップから復旧ができた。しかしデータ量もさることながら、新たに発生するデータのロード処理や加工処理、日次で作成する他システムへの配信データなどもあり、連日徹夜で復旧作業に臨んだが、完全な復旧まで一週間を要した。

 もしかすると、冗長化をさらに多重にしておけば回避できたかもしれない。しかし大規模DB用の高性能ディスクを増やすとコストもそれなりに掛かる。つまり、求める可用性とコストの折り合いで、冗長化のレベルを決める必要があるのだ。

 携帯回線に置き換えれば、回線契約をしたスマホを何台持つか(もしくはデュアルSIMをするか)などを、コストとの折り合いで判断する必要がある。例えば、冗長化のためにスマホを3台持つのは妥当かどうか──といった判断がこれに当たるはずだ。

●とはいえ残る「単一障害点」の落とし穴 冗長化を考える上での注意点

 ただ、いくら冗長化しても「単一障害点」(その箇所が働かないと、システム全体が障害を起こすようなポイント)が残ってしまうことはある。

 例えばauの障害では、SMS認証が単一障害点になった例がみられた。Wi-Fiによりデータ通信は利用できたが、SMSの認証コードが受け取れずオンラインサービスが利用できないといった形だ。確かに複数の電話番号を登録できるSMS認証はあまりない。

 クラウドの世界でも単一障害点は残り得る。例えばIaaSの場合、サーバ障害の発生時はロードバランサー(負荷分散を行う機能)が検出して、接続サーバを切り替えることで対応する。しかし、ロードバランサーが障害と認識できない程度の性能劣化による障害が発生する可能性はあるので、ここが単一障害点になる。

 対策には、使っているインフラの単一障害点を正しく把握し、その対応を事前に整理しておく必要がある。

 例えばスマホの場合、SMS認証の外し方や変え方を事前に確認しておくべきだろう。中には簡単にSMS認証を外せないサービスもあるかもしれない。その情報も確認しておき、利用サービスの重要性に応じて対応を考えておく必要がある。

 ロードバランサーの例は、性能劣化を検出する仕組みと、それを検出すると強制的に切り替わる仕掛けを構築しておくべきだろう。もしくは手動で切り替える手順が必要になる。

 つまり冗長化はすればするほど良いわけではなく、可用性とコストにはいい案配があるわけだ。そして冗長化を超えた障害が起きたら仕方なかったと諦め、復旧を待つ。この考え方ならば、少なくとも「今どうなってるんだおじさん」となりauショップに突撃はしないだろう。

 携帯回線・クラウドを問わず、欠かせないサービスの利用を維持するには、相応のお金と努力が必要だ。携帯電話1台という選択肢は手間もかからず比較的安いが、一方でau障害のようなトラブルが起きたときには対応しにくい。もし絶対に使い続けたいのであれば、それだけのコストや手間暇を覚悟すべきだ。