ビジネス コンピューティングに革新をもたらす Windows Azure クラウド OS

丸山不二夫 氏
早稲田大学大学院
情報生産システム研究科
客員教授
萩原正義 氏
マイクロソフト株式会社
デベロッパー&
プラットフォーム統括本部
アーキテクト
イントロダクション
2008 年 11 月末に米国で開催された Microsoft PDC 2008 (Microsoft Professional Developers Conference 2008) において、マイクロソフトのクラウド OS である Windows Azure (Windows Azure、ウィンドウズ アジュール) が発表された。Windows Azure は、今後のコンピューティングを大きく変革する可能性を秘めたテクノロジだ。
分散コンピューティングに詳しく、Windows Azure に高い関心を持ち、ご自身も PDC 2008 に参加されたという早稲田大学の丸山不二夫氏と、マイクロソフトにおいて、先端テクノロジのエバンジェリズムなどで活躍する萩原正義氏が、クラウド コンピューティングと Windows Azure について語り合った。
Windows Azure とは何か?
- 萩原氏:
- 米国の PDC において、マイクロソフトのクラウド OS、Windows Azure が発表されました。
- 丸山氏:
- 私も今年の PDC に参加してきました。Windows Azure 関連で一番印象的だったのは、マイクロソフトがクラウド コンピューティングへの参入を本気で進めていると肌で感じたことです。マイクロソフトは、クラウドを意識してデータ センターの拡充を続けており、現在でも月に1〜2万台のペースでサーバーを追加しています。数年後には 100 万台を越えると思います。こうした強力なコンピューティング基盤込みでクラウド サービスを提供しようとしている。マイクロソフトは、技術面だけでなく、ビジネス的にも大胆な決断をしてきたな、という印象です。
- 萩原氏:
- マイクロソフトは、ソフトウェア プラス サービス (Software + Services) という概念を提唱しています。これは従来型のオンプレミスを表す「Software」と (on premise。premise は「土地」「構内」などの意で、ローカル コンピューターで実行されるプログラムを指す)、クラウド側の「Services」の連携による次世代コンピューティングを意味しています。Windows Azure は、このサービス提供の土台となるマイクロソフトのクラウド OS です。
- 丸山氏:
- Windows Azure を中心とした Azure サービス プラットフォームの構成を見ると、コンシューマー サービスの Live Services も含まれていますが、エンタープライズ向けを強く意識したクラウド サービスだと思っています。Google もGoogle App Engine というクラウド サービスを提供していますが、こちらもエンタープライズを対象にしたものです。これからは、クラウドの世界での技術革新と競争の主要な舞台の一つとして、エンタープライズの分野が浮上してくると思います。そして、クラウドが成熟する二年ぐらい後には、エンタープライズの技術は、今とは、様相を一変させている可能性があると思っています。

Windows Azure サービス プラットフォーム構成
Head in the Cloud, Foot on the Ground
- 丸山氏:
- いずれにしても、移行の時期があるわけで、マイクロソフトは、現在自社が強みを持つオンプレミスのしくみを起点にして、ソフトウェア プラス サービス を推し進めながらクラウド サービスの利用拡大を図かろうとしています。これは非常にうまいやり方です。
- 萩原氏:
- 急にすべてがクラウド化するわけではなく、移行は徐々に進みます。すでに SaaS (Software as a Service) として提供されているサービスなど、コモディティ化 (日用化) しているものはすぐにでも移行できるとして、自社の差別化に通じる情報システム部分をクラウドに持って行くのは簡単ではありません。実際には、まずはこちら側 (オンプレミス) で開発し、共通性の高いものなどが徐々にクラウドに移行していくことになるでしょう。これには ソフトウェア プラス サービス の双方が必要です。
- 丸山氏:
- PDC では、ソフトウェア プラス サービス のことを " Head in the Cloud, Foot on the Ground (頭はクラウドの中、足は地面) " と説明していました。これはうまい表現ですね。Azureには、オンプレミスのサービスとして開発し、時期がきて必要ならクラウドに移行できるという仕掛けが組み込まれています。
- 萩原氏:
- 基本的に開発者から見れば、サービスの展開先がローカルのイントラネットなのか、クラウドなのかという違いしかありません。そういう透過的な実行環境と開発環境をマイクロソフトは提供すべく努力しています。
- 丸山氏:
- 開発者は、あくまで足元にある慣れ親しんだ開発環境を使いながら、.NET Framework に対応したアプリケーションを開発すれば、必要に応じてそれらをクラウドに持って行けるということですね。
クラウドOSの基礎にP2P 技術を積極活用
- 丸山氏:
- 私は以前から P2P(Peer to Peer) の技術を追いかけていました。アカデミーの領域では、いろんな研究成果が蓄積されていました。また、P2P 製品の開発にマイクロソフトがかねてより力を入れていることも知っていました。ただ、P2Pを単なるアプリとして使うのではなく、今回の Windows Azure自身の土台の部分に、P2Pの新しい研究成果が大きく生かされています。外部からサービスを使うだけなら分かりませんが、100 万台からなるサーバーを円滑に構築、運営できる背景に P2P技術が生きています。これは、分散OSとしては、非常に斬新なデザインです。私の周辺の日本のP2Pコミュニティも、このことに強い関心を持っています。
- 萩原氏:
- アーキテクチャの観点では、集中管理方式のほうが簡単です。しかし集中管理方式にすると、耐障害性が低下します。Windows Azure では、P2P 技術により、サーバー同士がお互いを管理する関係になっています。お互いが親でもあり、子でもある。こういうと簡単ですが、例えば復旧中にまた別の故障が起こったらどうするとか、復旧中に入ってきた要求はどうするのかなど、さまざまな例外条件に対応しないといけません。実装もテストも、困難なはずです。具体的には、ディストリビュート ハッシュ テーブル (Distributed Hash Table) と呼ばれる分散処理の技術を使います。ハードディスクでいう RAID の仕組みといってよいでしょう。どこが壊れても、そのレプリカ (複製) が別のノードにあり、そこから元のデータを復元できる構成です。こうしたデータの持ち合い (オーバーレイ) を前提として、お互いがお互いを監視し合い、通信し合って、システム全体で可用性を高めています。
- 丸山氏:
- 研究レベルとしてはこれまでも存在しましたが、これだけ大規模に、しかもOSの基礎にP2P技術を適用するというのは、初めてのケースです。
Windows Azure Storage Services は RDB ではない
- 丸山氏:
- Windows Azure の基本機能として提供されるストレージ サービスの Windows Azure Storage Services は、新しいキー バリュー (key value) データ モデルを使っていますね。
- 萩原氏:
- はい。データベースといえば、リレーショナル モデルが代名詞になっていますが、Windows Azure Storage Servicesでは、キー バリュー データ モデルでデータを管理しています。外部からは従来同様のテーブル (表) として見えますが、内部的には、キー バリュー データ モデルで保持されたデータです。内部的にはテーブルではありませんから、テーブル間のリレーションシップに基づいた Join などの概念はありませんし、Join なしに、高速なデータクエリが可能です。
- 丸山氏:
- 正確には、操作としては Join も可能です。ただ、テーブル自体が沢山のマシン上に分割されているので、そうした構造を理解しないと、Joinの効率は悪くなりますね。
- 萩原氏:
- キー バリュー データ モデルでは、データの同一キーに対してインスタンス毎に別の型を持てます。リレーショナル モデルにおいてエンティティのビューを作るとか、オブジェクト指向言語で親クラスの属性のバリエーションをサブクラスで表現するなど、共通データの属性のバリエーションを実現する設計技術は存在するものの、どれも複雑さが伴いました。今度はそれが実行時に操作できるようになります。これによりシステム開発の考え方がまったく変わってくると思います。
柔軟なスケールアウトを可能にするアプリケーション モデル
- 丸山氏:
- クラウドで重要なのは、ビジネスの要求に応じて、スケールアウトによる規模拡大にどう対応できるかという点です。Web アプリケーションの 3 層構造では、ユーザーに近い方から Web 層、ビジネス ロジック層、最後にデータベース層があります。一般に、このうち Web 層とビジネス ロジック層はスケールアウトが容易で、規模拡大が必要なら、複数ノードでプログラムを実行して、入り口にロード バランサーを置いて処理を分散するという構成が可能です。しかしデータベースは簡単に多重化できないから、このような負荷分散ができない。データベース層の規模拡大では、コンピューター単体の性能を向上させるスケールアップを選択するしかなかった。ここが 3 層モデルのスケール アウト戦略の弱点になっていました。ここをどうするかが問題なのです。Windows Azure は、この問題を新しいアプローチで解決しようとしています。
- 萩原氏:
- そうですね。顧客データや商品データなど共有性が高いデータは、マスター データとして、一貫性に対して高い要求があります。これに対し、注文ごとに記録されるトランザクション データでは、一貫性よりも可用性が求められる。こうしたデータごとに異なる要求を満足し、スケールアウトによる負荷分散の実現も考えて、Windows Azure Storage Services では、キー バリュー データ モデルを採用するとともに、メッセージとキューを利用した非同期通信によるデータベース アクセスやパーティショニングを用いています。
- 丸山氏:
- そこがとても面白い。Windows Azure では、Web層とビジネス ロジック層が直結されるのではなく、Web層とデータベース層、ビジネス ロジック層とデータベース層がそれぞれクラウド ストレージのキューを通じて疎結合になっている。このためロックしなくてもデータベースにアクセスできるので、Webとビジネス ロジック (Worker) のプログラム (ロール) を必要に応じて自由に増減させてスケール アウトに対応できる。マイクロソフトの説明によれば、サービス モデルを定義すると、必要なシステムが物理的に構成されるといっている。本当にこれが出来たらすばらしい。

Windows Azure におけるアプリケーション構成
- 萩原氏:
- データベース アクセスは従来の呼出しベースではなく、メッセージ ベースになります。呼び出し側がメッセージを送信しても、相手がリッスンしてプルするまで要求は実行されません。その代わり、メッセージをキューにさえ入れれば、ロールはフリーになり、データベースのロックも即時に実行されません。この部分は、アプリケーション開発の作法はかなり変わるでしょう。.NET アプリケーション開発のノウハウやスキルは、Windows Azure でもその大半を生かせますが、Windows Azure の特性を生かすための工夫は必要です。
- 丸山氏:
- ただ、慣れてくれば、開発者が、分散処理やスケールアウトに最適な構成を意識する必要はなくなります。システムが自動的にScale-outしてくれる。これもAzureの大きな魅力の一つです。既存のシステムのクラウドへの移行についていえば、サービス指向(SOA)の開発手法に基づいた疎結合化されたシステムはクラウドに持っていきやすいですね。そうでない密結合の既存システムの移行はそれほど容易ではないかもしれません。その意味でも、SOAは重要なんだと思います。今後のシステム開発では、必要なコストとリターンを評価して、オンプレミスを使うか、クラウドを使うかというビジネス的な判断が必要になってきます。とはいえ全体的には、コスト メリットが大きいクラウドが徐々に主流になっていくでしょう。動くアプリケーションを開発するというだけなら、現在の .NET プログラミングの知識でも対応できるかもしれないが、アプリケーションの価値を最大化したければ、Windows Azure の設計思想や基本的な構成、特徴などの理解があったほうがいいですね。
- 萩原氏:
- 今に始まったことではありませんが、技術が進歩によって、新しい選択肢が提供されます。こうしたさまざまな選択肢の中から、どれを選ぶのが適切なのかを見分ける「目利き」が技術者の能力として必要です。1 つの技術が万能ということはありえません。この意味では、もちろん、クラウドも万能ではない。顧客要求や技術要求から何をどう目利きするか。今後の情報システム開発の選択肢として、クラウドがますます有力になる領域は増えていくでしょう。開発者の方々には、ぜひとも Windows Azure についていち早く理解を深めていただき、時代をリードするようなアプリケーション開発を手がけてもらいたいと思います。













詳細はこちら