従来の発想を覆したアクルーアル故障検出法
—世界10億人のサービスを支える故障検出システム—

コンピュータ理工学部 コンピュータサイエンス学科 林原 尚浩 准教授

世界10億人のサービスを支える故障検出システム

 私達が日々接しているフェイスブックやツイッター、アマゾンなどのWebサービス。そうした大規模なシステムが動くためには、いち早く故障を検出することが欠かせません。より短時間に、より正確に、それでいて、誰でも手軽に、特別な知識がなくても、最適な故障検出ができる。そんな夢のような方法は、発想の転換によって実現されました。多くのSNSやクラウドサービスに用いられている故障検出システムを開発した林原 尚浩先生に、そのアイデアの概要を教えていただきました。

従来の故障検出

 私の専門は故障検出システムです。故障検出と聞いてもイメージしにくいかもしれません。しかし、私達が身近に利用している様々なサービスの裏では、必ず故障検出システムが動いています。ツイッターやフェイスブックといったSNSや、巨大なクラウドサービスまで、故障検出システムはその裏方としてサービスを支えています。

 クラウドサービスとは、システムの中身が見えないサービス形態です。ユーザは中身が故障しても分かりません。ユーザ側にはそういったことを気にせずサービスを継続的に受けられるメリット、システムを構築する側にはシステム構成の変更や故障を隠せるというメリットがあります。このようなシステムが動くためには、自動的に故障を検出して、サービスを最適な形で継続することが必要です。

 従来の故障検出方法は、時間の軸で考えていました。タイムアウトと呼ばれる一定の時間を予め設定して、ラウンドトリップタイムがタイムアウトよりも長くなれば、故障とみなすのです。しかしタイムアウトをどのように設定すれば最適になるかは、ネットワークのコンディションで変わります。たとえば、昼はネットワークが混んでいても、夜には空いていることはよくあります。そうすると、時間帯や環境によってタイムアウトの設定を変える必要性が出てきます。これまでもタイムアウトの設定を自動で変更するシステムはありましたが、多くは固定でした。そうすると、故障していないのに故障していると判定してしまう、あるいは故障しているのを早く発見できないという欠点が出てきます。

 あまりにも早すぎるタイムアウトを設定してしまうと、そのタイムアウトでは低い精度でしか故障を判定できません。遅ければ遅いほど正確になっていきますが、故障の検出に時間がかかりすぎてしまいます。実はこのようなタイムアウトの設定は非常に難しい職人技で、最適な精度での設定にはネットワークを熟知する必要がありました。

 そこで私は、時間の軸で見るのをやめて、信頼性の軸で考えることにしました。こうして生まれたのが、アクルーアル故障検出です。

故障の信頼度を固定する

 アクルーアル故障検出の根本にあるのは、時間ではなく信頼度を固定するという発想の転換です。例えば80%の可能性で故障が分かればいいとき「80%」という値を固定します。すると、タイムアウトのほうが、その信頼度で検出できるように変動します。つまり、ネットワークが混んでいるときは時間が長くなり、空いているときは短時間で故障を判定するようになります。信頼度を固定して時間を動かすことで、最適な時間で故障を発見できるのです。

 これを実現するにあたり、私は故障検出システムを2つのプロセスに分けました。

 従来の故障検出システムは「故障している/していない」の二値を返すだけでした。アクルーアル故障検出システムでは、システムをモニタリングする部分とモニタリング結果を解釈する部分に分離しています。モニタリング部分では、単にラウンドトリップタイムを測定するだけです。この値を元にして、解釈部分では時間の分布を描き出します。信頼度が90%に設定されていれば、「分布中の90%はその時間以内に応答が返ってきている」というような時間を求め、その時間以内に応答がなければ故障と判定することになります。このタイムアウトは分布図が変わる度、刻々と変化していきます(下図)。

 1つのシステムにいくつも監視対象がある場合、それに応じた故障検出をしようとするとタイムアウトはその一つ一つに応じて設定しないといけません。システムが大きな規模になってくると管理が大変になってきます。しかし、モニタリング部分/値を解釈する部分を別にすれば、規模が大きくなっても問題ないシステムになります。結果的にアクルーアル故障検出はクラウドやSNSなどの大規模なサービスにマッチしやすいのです。

 私が考案したこの故障検出方式は、ツイッターやフェイスブックで用いられているCassandraという分散データベースに実装されており、世界で10億人以上のユーザに提供されるサービスを支えています。

見えないところでシステムを支える

 故障検出は、社会的にそれほどスポットライトが当たっていないニッチな分野です。日本でも分散システムの故障検出を研究しているのは数人でしょう。

 一方でシステムの高速化や並列化は華々しく、クラウドコンピューティングなどはメディアなどでもよく取り上げられています。しかし、その背後では、故障がいつも起こっています。クラウドコンピューティングを始めとした最近のコンピュータシステムは、昔と違って大きな汎用機が1台あるのではなく、小さくて交換が容易なブレードサーバと呼ばれるコンピュータなどがたくさんネットワークにつながって構成されています。これは、多少壊れてもその部分だけ差し替えればいいという理念に基づいた設計です。1つの故障が大きなダメージにならない代わりに、入れ替えが必要になります。この入れ替えというのは故障検出とセットにすることで最大限に活かされるのです。

 故障検出は地味ですが、決して欠かすことはできません。私達が身近に触れているシステムのバックエンドでは、そうしたシステムが動いているのです。人の目には触れないけれど重要な分野はどこだろうと考えたときに出会ったのが、分散システムの故障検出です。困ったときにあってよかったと思えるようなシステムを作りたいと考え、日々研究に取り組んでいます。

アクルーアル故障検出方式の誕生秘話

図

 アクルーアル故障検出方式のアイデアが完成したのは博士課程の頃でした。故障検出に興味を持ったのは、博士課程のときに留学先のスイス連邦工科大学ローザンヌ校(EPFL)で、分散アルゴリズムの研究に携わったことがきっかけでした。その研究プロジェクトで理論的には様々な耐故障分散アルゴリズムが故障検出器を用いて耐故障性を実現している一方で、実際は高い精度で故障を検出する故障検出器を実装することが困難であることも学びました。

 アクルーアル故障検出方式は、単に高い精度で故障を検出する方式であるだけでなく、従来行われてきた理論的な耐故障分散アルゴリズムで用いられている故障検出器と数学的に等価であることも証明されており、理論と実践を結ぶ架け橋である点でも注目されています。

 海外での経験は研究以外にも多くのものを私にもたらしました。スイスでは(多くの海外の大学でもそうですが)博士課程の大学院生はAssistantという職で雇用されている立派な研究のプロです。彼らは皆、研究を職業として考えているため、年間の研究計画や論文執筆・投稿に関して非常にしっかりとした独自のビジョンをもっていました。このような環境が新たな故障検出方式の着想に寄与したことは言うまでもありませんし、研究者としての姿勢を教えてもらえたと思っています。

 また、この留学先で後にアクルーアル故障検出方式をCassandraに導入した友人と知り合いました。彼と研究に関する交流を深めたことにより、彼はアクルーアル故障検出方式について最も理解しているエンジニアの一人となりました。実際Cassandraに実装されたアクルーアル故障検出方式はフェイスブックをはじめ、ツイッターやネット通信販売サイトのeBayなどのSNSや企業などにも使われています。彼はCassandraだけではなくリスボン大学で開発されている分散システムのためのフレームワーク「APPIA」にもアクルーアル故障検出方式を実装し、アクルーアル故障検出方式の普及に大きく貢献してくれています。

アドバイス

情報科学は数学を使った魔法

 私は今、高校で数学をもっとやっておけばよかったと後悔しています。

 情報科学は、数学を使った一種の魔法です。化学や物理をあるものを別の何かに変える錬金術のようなものだとすると、情報科学は「今までなかったものを作り出す」ことができる魔法です。コンピュータの中では自分が想像したものを自由につくることができますが、数学はそれを可能にする魅力的なツールです。

 数学は身近なものでもあります。たとえば、プリクラの目が大きくなる処理やデジタルカメラのモニタに顔の領域が表示される処理は高校の微分積分の延長線上にあります。大学では高度な研究成果を生み出していますが、それを実現するためには高校数学で学んだ多くの技法が役に立ちます。

 新しい技術に触れたりつくってみたいと思われる方は、ぜひ高校の数学に興味をもって勉強してください。きっと大学での研究は楽しくなると思います。

コンピュータ理工学部 コンピュータサイエンス学科 林原 尚浩 准教授

プロフィール

博士(情報科学)。専門は、分散アルゴリズム・耐故障高信頼システム。元々大学では経済学を専攻していたが、専門分野に進んだ頃から情報学に魅力を感じるようになり、そちらにのめり込んでいった。当時はWindows95が出て、ようやくWebが一般的に認知されてきた時期。大学院で入った情報科学研究科の研究室で分散システムの耐故障性に興味を持ち、現在では分散システムの故障検出の第一人者として活する。奈良県立香芝高等学校OB。

PAGE TOP