こんにちは、新緑と雨の季節、休日は趣味の写真撮影で大忙しの岩崎です。今回は、サービス指向の一環として、クラウドコンピューティング(以下クラウド)などでトランザクションの形態が果たして変わるのだろうか? という話をひとつ致します。

本領域は、客観的な評価や共通認識の乏しい箇所です。様々なご意見や認識があることは間違いありません。技術変革(という名の変更)も頻繁に行われています。本稿も最前線のそうした認識過程のひとつとして、あくまで2009年中頃におけるひとつの参考情報としてお読み頂ければ幸いです。

サービス指向とクラウドコンピューティング

最近クラウドという単語を良く聞きます。それ自身にさほど明確な定義は無く、初期のSOA製品と同じくマーケティング用語の側面が非常に強い単語です。過去、似たような話は「ユビキタスコンピューティング」や「ドットコムビジネス」「ASP」「Web 2.0」などとコロコロと変化してきています。

ただそれでは話が続かないので、仮にここでは『インターネットを介してコンピューターの機能を提供するもの』と無難に定義してみましょう。

このクラウドは、要するにインターネットを介して利用者との対話的な機能を提供する訳ですから、「ネットワークに接続するものは何でもかんでもクラウドだ」、と言い張ることが可能です。この場合、サービス指向もクラウドのイチ手法である、と強弁することも可能でしょう。

しかし本連載や筆者はこちらの視点ではなく、あくまで業務システムを構成する為には、という軸を置いております。いわゆるエンタープライズ領域です。この場合、クラウドはサービス指向を採用した場合のひとつの選択肢である、と言えるでしょう。各サービスが社内環境下に設置されているか、それとも外部に置かれているか、の違いに過ぎません。これを「オンプレミス」(on premise: 構内にて)という造語で語られることが多くなりました。(が、こういう特殊用語を乱発するのはユーザー企業側の混乱の元なので止して欲しい所です・・・)

つまり、クラウドはサービス指向設計におけるひとつの実現手段である、というのが筆者の捉え方です。

クラウドにおけるトランザクションモデル?

このクラウドですが、トランザクション制御においても新たなモデルが一部で提唱されつつあります。BASEモデルと呼ばれるものです。この単語は以下の頭文字となっています。

  • Basically Available(基本的に利用可能)
  • Soft-state(柔らかい状態)
  • Eventual consistency (最終的な一貫性)

これは、可用性が最重要視され、緩い状態を基本として、最終的に一貫性が取れる、という事を意味しているようです。クラウド専用OSがいくつか登場してきて、そのシステムの可用性を担保する上で有用な考え方と言われています。

このBASEモデルですが、従来のACID(エイシッド)トランザクションに置き換わるものではないか、という記事や意見を各方面からよく耳にすることが多くなりました。ACIDモデルが変わるなんて!? と筆者は驚きましたが、それと同時に疑問も抱きました。

ACIDトランザクションモデルについては、第3回で簡単に述べましたのでそちらをご覧下さい。以下の頭文字になります。

  • Atomicity (原子性)
  • Consistency (一貫性)
  • Isolation (独立性)
  • Durability (永続性)

果たして本当にACIDモデルは過去のものとなるのでしょうか?

業務システムに求められるもの

業務システムに求められるのは、情報の管理の厳密性です。どこかで情報が紛失したり構造が壊れたりするということは許されません。複数人から高速に行われる処理を、可能な限り高速かつ安全に実現することが何よりも優先される世界になります。

こうした業務システムに求められるのは、システム開発時においてシステムの非機能要件の一部としてまとめられます。最近ではSLA(Service Level Agreement: サービス水準の合意)という記述で代表される部分に表現されます。

さてこの企業システムにおいて最低限守らねばならないSLAを考慮した場合、従来のACIDモデルは安全な企業システムを実現する手段として、ほぼ要件を満たしていると考えられてきました(ほぼ、と記載したのは、万が一に失敗する確率が理論的に存在しているからです)。少なくとも、そうした合意がIT業界をはじめとして、ユーザー企業側にもある程度浸透しています。またこのACIDモデルは現在の企業システムを支える根幹として、揺るぎない地位を保っていることは間違い無いでしょう。

では、何故この実績あるACIDモデルが、その地位を追われる必要があるのでしょうか?

ACIDが守られない業務システム?

大変分かりにくい話なので、試しに業務システムでACIDが守られなかったら、何が起こるのか考えてみましょう。

ACIDのAtomicity、和訳では「原子性」です。要するに、すべて行われたか、全く行われなかったか、の二択であるべし、という「all or nothing」の考え方です。これが守られなければ、更新処理中に失敗した時に、巻き戻し処理(rollback operation)が行われない事になります。例えば引っ越しを行った「岩崎さん」の住所と所属を同時に更新する場合、住所は更新できたけど所属が変更されていなかった、なんて困った事が頻発してしまう可能性があります。これは業務システムとして失格です。

次にACIDのConsistency、和訳では「一貫性」です。要するに、情報構造が壊れずに更新できる事、という当たり前の話です。前記のAtomicityにも似ていますが、こちらは外部制約などで構造を規定した事を逸脱してはならない、という話になります。これが守られなければ、例えば「岩崎さん」の住所を誤って「アメリカ国埼玉県新宿区」と更新してしまう、なんて笑い話が頻発してしまう可能性があります。

ACIDの三番目であるIsolation、和訳では「独立性」です。要するに、Aさんが岩崎さんの情報を更新している最中に、同時にBさんが更新途中の岩崎さんの情報を参照したり更新したりできない事、という、微妙ですが厳密性を考えるならば当たり前の話です。これが守られなければ、Aさんが岩崎さんの『旧住所「渋谷」と旧所属「四谷事務所」』を『新住所「杉並」と新所属「新宿事務所」』へ同時に更新している最中に、Bさんが『新住所「杉並」+旧所属「四谷事務所」』で読めてしまい、それを元に次の処理をおこなってしまい大混乱へ・・・なんて弱った話になります。

最後のACIDのDurability、和訳では「永続性」です。要するに、一度更新した内容は必ず更新されていること、という、当たり前の話です。これが守られなければ、更新したはずの情報が実は更新されていなかった、なんて情報システムの存在意義そのものを問われてしまう事態に陥ります。人間のように途中で「忘却」されては困るわけです。

BASEだけで業務システムは担保できるのか?

さて、この業務システムを構成するために必要とされてきたACIDですが、BASEの考え方で担保できるとは残念ながらとても思えません。

BASEの考え方でACIDを担保しそうな部分は「Eventual consistency (最終的な一貫性)」のみですが、これだけでは原子性や独立性、永続性が欠落しています。(言及されていないということはつまり、担保されないという事になります)

本稿の現時点での結論は、ここになります。ACIDからBASEにトランザクションモデルを移行した場合、業務システムの要件を担保できるシステムは実現できないのではないか、というものです。

とても面白くない正論になりますが、業務システムは業務を実現する為のものです。業務を遂行する為に必要となる技術を取捨選択し、過大な投資を抑えて必要最低限となる技術で構成されるのが適当でしょう。

これはごく当たり前の考え方ですが、こと新技術として採りあげられるマーケティング用語に対しては、盲目的になりがちです。新たな製品、新たな技術、新たな用語。すべてそれらが古いものと比較して改善されているという根拠は無く、冷静に判断する必要があります。

業務システムとは、元々そういう堅い領域で実現されるものでしょう。

BASEとACIDとの違いとその将来像

さて、それで話が終わってしまってはちょっと物足りないので、すこしだけ話を進めてみましょう。

筆者が考えるに、BASEとACIDは同じ場所のトランザクションモデルを語っていない節を感じています。というのは、ACIDがアプリケーション層に対してのトランザクションモデルを主に表現しているのに対して、BASEはアプリケーションではなく、OSなど基盤層のものを語っているのではないか、という仮説です。

参考書籍として先頃出版された『クラウド大全 <サービス詳細から基盤技術まで>』(日経BP社出版局編、2009年)を参照しましたが、BASEモデルや分散型I/Oなどのシステム間通信技術については、主にクラウド専用OSとその下部を支えるサーバーの分散構成・可用性向上を支える技術としての紹介となっています。

図

つまり、BASEとACIDは共存が可能なモデルでないか、というのが筆者の仮定です。BASEで分散された基盤に対して、アプリケーションがACIDトランザクションをかける。そのような姿が健全なる業務アプリケーションの姿ではないか。これならば業務システムでの活用確度は急上昇ではないか。そのように考えてみた次第です。皆様はどのようにお考えでしょうか?