人体の可用性について

 人体には、同じ器官が二つ以上ある構成をとるものが、いくつかあります。眼、耳、肺、腎臓、睾丸、卵巣、乳房に手足。他方、一つしかないものは、心臓、肝臓、膵臓、(各種の)腸、等々。三つ以上の重複は、人間には見られませんが、牛のように胃が4つある動物もいます。

 なぜ同じ機能を司る器官がわざわざ重複するよう設計されているか、という疑問に対する最も説得力ある答えは、障害対策です。つまり、重要な機能を持つ器官が何らかの原因で損なわれてしまった場合に、予備があれば完全に機能停止せずにすむ、という説明です。実証性はないけど、有力ではあります。爆笑問題の田中も、まだ一つは無事だからこそネタにできるのであって、これが完全に種なしだったらさすがに周りもいじれないでしょう。

 こういう、同じ機能を持つ部品を複数用意して、システムとしての可用性(Availability)を高める設計を、IT の分野ではクラスタリングと呼びます。マイクロソフトMSCS や、OracleRAC がポピュラーです(Google も30万台のマシンをクラスタ化していますが、こちらは可用性よりむしろパフォーマンスを向上させることに主眼を置いている)。

 一つの器官の故障率が 0.1 だとした場合、二つ用意しておけば、サービスが停止する確率(=両方ともの器官が損傷する確率)は、0.01 となり、ぐっと減少します。三つなら 0.001 にまで低下する。器官一つだけの場合よりずっと高い信頼性が得られるわけです。人間の器官は、通常二つ同時に稼動しており、こういう方式をアクティブ・アクティブ構成と呼びます。これに対して、脳の一部の部位のように、損傷を受けるとそれまで活動していなかった他の部位が活動を開始する方式は、アクティブ・スタンバイと言います。

 でもこの説が正しいとして、まだ分からない疑問があります。なんで一番重要な臓器である心臓がクラスタ化されていないのでしょう? 腎臓とか睾丸をクラスタ化するよりも(中には心臓より睾丸のが大事、という人もいるかもしれないが)生命維持のためにはこっちのが優先度は高いんじゃないでしょうか?

 この理由はおそらく、心臓が非常に複雑で精妙な機能を持つため、クラスタリング設計が複雑になりすぎて、逆に信頼性と効率を下げてしまうからでしょう。体中に血液を送るポンプである心臓は、動作がコンマ秒刻みで動く精密機械です。これを二つに増やすと、活動の同期を取るのが難しいことは予想がつきます。コンピュータをクラスタ化する場合も、1台のマシンだけを使うときに比べて設計が難しくなります。バグも多くなる。だから人間の体は、心臓をクラスタ化する代わりに、部品単体の信頼性を向上させる方針を選んだのでしょう。心筋は極めて頑丈で、何十年も休まず動きつづけてもビクともしません。同じく一つしかない胃や、「沈黙の臓器」の異名を持つ肝臓も、極めて丈夫な臓器です(従って逆にいうと、ストレスで胃にきたり、お酒で肝臓を壊した状況は、相当危険なところまで進行しているのです)。

 そうそう、クラスタとはちょっと違うけど、生命の設計図である DNA もまた、冗長構成による可用性の向上策をとっています。周知のように、DNA はらせん構造の細長いテープですが、それは二重に絡み合っており、片方のテープはもう一方のテープの情報のバックアップになるよう記録されています。これによって、片方の情報が欠落しても、もう一方の情報を使って復元可能なことは、理科の時間に習う生命の神秘です。DNA がシステム・ダウンしてしまうのは、両方のテープの同位置が損傷を受けた場合のみです(これが癌の原因になる)。この DNA の仕組みは、システム用語で言うと、ミラーリングが一番近いのかな。

 え? なんでまた唐突にこんな話をしているか、ですか? べつに深い理由はないのですが、知り合いの女性から「なぜ男の金玉は二つあるのか」という率直かつ深遠な質問をぶつけられたので、それから数日、そのことばかり考えているのです。