オブジェクト指向言語「Ruby」の開発者である、まつもとゆきひろ氏が語る日経Linuxの連載記事「技術を斬る」で最近、「BASE」という概念がよく登場する。BASEとは、「Baseically Available」(不整合は滅多に発生しないので可用性を重視し)、「Soft-state」(状態の厳密性を追求せず)、「Eventually Consistent」(途中はともかく最終的につじつまが合えばよい)、という考え方だ。

 実は、クラウドを支えているのは、この“ゆるい”考え方にほかならない。

トランザクションはもう古い?

 BASEは、トランザクションの概念が大量の情報を処理するシステムには適さない、という考えから登場してきた。データを正しい状態で維持するために必要なACID特性、すなわちA(原子性)、C(一貫性)、I(独立性)、D(永続性)を、大規模な分散処理では維持できないという「CAP定理」が裏付けになっている。

 CAP定理とは、C(一貫性)、A(可用性)、P(ネットワーク分割された場合の耐性)のうち、二つまでしか同時に満たせないことを数学的に証明したものだ。クラウドシステムでは多くの場合、CAPのうち可用性とネットワーク分割の二つが重要となる。この場合、一貫性で妥協する必要がある。具体的には、大量のサーバー機でデータを複製保持し処理すれば、一時的に整合性が失われる問題が発生する。

 従来は、トランザクションの厳密性を堅持しつつ、この問題に対応しようと努力してきた。1990年代には“2フェーズコミット”のような分散トランザクション技術が、近年ではデータベースソフト「Oracle」が備えるようなクラスタリング技術が開発された。

 しかし、同時アクセスのクライアント数が1万台を超えるような場合に起こる様々な問題、いわゆる「C10K」(クライアント1万台問題)の前では、“古い”トランザクションの概念を捨てざるを得ない。

 そこでBASEの考えを取り入れた「ROMA」や「kumofs」など“NoSQL”(Not Only SQL)と呼ぶ新たなデータベース群が、クラウドを裏で支えている(関連記事)。一時的には不整合な状態を作っても、最終的に整合性を取るという実装になっている。

固定観念を取り除くと、活用法が広がる

 BASEでは、最終的につじつまを合わせる。システム内部は整合性がなくても、結果として問題がなければよい。つまり、問題がある部分とない部分をよく見極めて、問題がある部分には従来通り厳密に対処し、そうでない部分には“ゆるく”対応すればよいということになる。

 多種多様のサービスや機器が提供されている今、こうした考え方をシステム一般に広げれば、これらのサービスや機器をよりうまく活用して、メリットが得られるようになるのではないだろうか。

 例えば、内部統制や個人情報保護で守り一辺倒の観念にとらわれていると、ドキュメント類の格納にオンラインストレージは活用しにくいかもしれない。だが、ドキュメント類に必要な重要性や機密性を見極めることで、重要性や機密性があまり要求されないドキュメントの格納には手ごろなオンラインストレージを使える可能性が出てくる。

 企業の中には「サポートがないものは使えない」という固定観念を持っているところがあるかもしれない。しかし、システムの中には、バージョンアップやソフトの保守が必要ないものもある。こうしたシステムを見極めることで、OSからアプリケーションまでオープンソースで安価に作るという選択肢が浮かび上がる。

 実際、個人ベースでは、デスクトップにLinuxを採用する動きが広まっている。Linuxは今や機能的にWindowsに近づき、「Linuxは難しい」という古い観念も払しょくされてきている。

 現実には、まだMicrosoft Officeほどの高機能なソフトはないため、エンドユーザーに多少の負担が発生する。しかし、その負担の度合いやどの程度の機能を求めるかを見極めれば、導入できる企業もあるはずだ。廃棄対象となるPCをリサイクルして使えば、コストや環境の面でもメリットがある。日経Linux2010年5月号特集1「もうWindowsに頼らない」では、Linuxでも可能なレベルや移行方法を詳しく解説した。

 状況が変化し、それまで常識として扱っていた観念が通用しなくなる場面も出てくるのは、トランザクションの例だけに限らない。周囲を見渡すと、意外と多いのではないだろうか。“ゆるい”やり方が通用できる分野は実は結構大きいのではないかと感じる。