国内線システム障害は2台構成のDBサーバーの同時ダウン――ANAが発表

プロジェクトオーガナイザの吉田聖書よしだみふみです。

4月3日に全日空(ANA)の国内線システムで障害が発生し、多くの便が欠航または遅延しました。それに対してANAは4月7日に公式サイトにお知らせを掲載しまして、システム障害の原因はソフトウェアの不具合(いわゆるバグ)によるものだと発表しました。

4月3日に発生した国内線システム不具合の原因及び再発防止策について(2023/4/7 全日本空輸株式会社)

このお知らせによると、不具合があったのは「予約管理業務のために、特定のデータを抽出する日常の処理」だとあり、障害の事象としては「データベースサーバー2台が一時的に高負荷状態」になったということです。更に再発防止に向けた対応策の一つとして「データ抽出方法の変更」と書かれています。

私はこれだけ読んで、もしかしてデータベースに索引が無かったか、索引はあったんだけれども対象のソフトウェアで索引を使わない参照を行ったのではないかと推測しました。さすがにこれだけ有名な企業のシステムですから索引そのものが無かったというのは考えにくいです。もちろんこれは発表された内容からの推測ですから、実際には全然違う原因かもしれません。

それから、少なくともANAのお知らせには直近でプログラム更新を行ったということが書かれていないので、従来から存在していた潜在的な不具合がこのタイミングで顕在化したという風に読み取れます。なので今回は(そこまで書いていませんが)索引に無い項目の組合せを条件に指定した抽出を行ったので、索引が使われない全表スキャンが走り、高負荷となったのではないかと推測します。

冒頭に書いた通り、今回の不具合箇所は「日常の処理」であり、かつ高負荷になったのがDBサーバーだったということです。ロジックの間違いだとしたらプログラムを更新した直後に判りますし、本番環境にリリースする前にテストしているでしょうから、そこで見つかるはずです。ところがデータ抽出のパフォーマンスの問題というのはテストでは見つけにくくて、しかも運用を開始してからしばらく経って、データが増えてきた頃に発覚します。

もう10年以上前になりますが、ある日急にWebシステムが開けなくなったということで相談を受けました。そのシステムを開発した会社はもうなくなっていたので、私の取引先に相談が来て、その話が私に回ってきたということです。前日までは普通に見えていたのに、その日から見れなくなったということですが、試しにアクセスしてみるとリクエストがタイムアウトしました。

事象がいわゆるシステムエラーではなくタイムアウトでしたので、可能性の一つとしてデータベースの索引がついていないのではないかと推測しました。最初から確信があったわけではありません。もしかしたらサーバのファイルをもらって調査もしたかもしれません。ただ、ソースコードは残っていなかったんですよ。なのでデータセンターへ出向いて、直接データベースを見せてもらいました。そうしたら案の定、対象のテーブルには索引がついていませんでした。

その時は索引を付けるという作業だけで一瞬で解決したんですが、一般的にデータ量が少ない内は索引があろうがなかろうが検索処理も速いんですよ。それが運用して行ってデータが溜まってくると、あるところを境に索引を使った実行計画に切り替わるんですが、その時に適切な索引が存在していないと全表スキャンが走ることになります。


※ この記事は、先日公開した以下の音声コンテンツを基に編集したものです。


今回、2台のデータベースサーバーが同時に停止してしまったので被害が大きくなったんだと思いますが、対策は難しいのではないかなと思いました。リクエストする方のプログラムに不具合があれば、データベースが何台あっても全停止になり得るからです。

いつだったか忘れましたが、以前、航空機に搭載されているシステムは2重ではなく3重化されていると聞いたことがあります。しかも、開発チームは全部別にするんだそうです。同じプログラムをいくら多重化しても、単純なコピーだったら不具合も一緒にコピーされてしまいます。それを別の人が開発すれば、(お金はかかりますが)同じ不具合が存在するという可能性は限りなく低くなります。再発防止に向けた対応策の2つ目には「データベースサーバーが2台同時に停止しないための制御プログラムの強化」とありますが、具体的に何をどうするのかは個人的にとても興味があります。



関連記事

プロマネの右腕

クロスイデアでは、新サービス・新ビジネスの 立上げや計画を中心に
プロジェクトマネジメントの支援を行っています。

新サービスの企画を任されたけど どう進めていいか悩んでいる担当者、
部下に新しい企画を任せたけど このままで大丈夫か不安な管理職の方、
以下のサイトをご参照ください。
https://www.crossidea.co.jp/services/right-hand-pmo.html

YouTubeにて動画配信中!

プロジェクトマネジメントのノウハウを
YouTubeで配信しています。
ブログと併せてご活用ください。

Comments are closed.