Part 1. マイクロソフトのクラウドコンピューティング "S+S" 概要 その1
さて、今回のエントリは Windows Azure Platform について解説するわけですが、Windows Azure Platform は実際のところ、既存のシステムの在り方をすべてリプレースするような、万能なサービスというわけではありません。このため、Azure を利用するにあたっては、そもそも Azure というものが、マイクロソフトの製品やサービスの中でどのような位置付けにあるものなのかを正しく理解することが重要です。そして、マイクロソフトの製品やサービスの中での Windows Azure の位置づけを理解するためには、マイクロソフトのクラウドコンピューティング戦略である “S+S” (Software plus Services)の概要と、それがもたらすコンピューティングシステムの変化を理解しなければなません。
そこで Part 1. となる本エントリでは、まず、マイクロソフトのクラウドコンピューティング戦略 “S+S” がどのようなものなのかについて、技術者向けに解説してみたいと思います。ちょっと長めのエントリですが、お付き合いいただければ幸いです。
[Agenda]
- クラウドコンピューティングとは何か
- マイクロソフトの製品とサービスの分類
- インフラから見た場合のシステム形態の分類
- 利用者から見た場合のシステム形態の分類
- クラウドコンピューティング時代のビジネスチャンス
- クラウドコンピューティングに関する FAQ
では、順番に解説していきましょう。
[クラウドコンピューティングとは何か]
非常におおざっぱに言うと、「クラウドコンピューティング」とは、ネットワークを介して提供される「サービス」を利用するシステム形態のことを指す用語です。ネットワーク(主にインターネット)の向こう側にあるサーバ群やシステムがどのような構成になっているのかはよく分からないけれど、ユーザが、そうしたサーバの中身やシステムの構成などを意識することなくサービスを享受することができる、というのがクラウドコンピューティングの肝になります。
上記は、「クラウドコンピューティング」という用語に関する教科書的な説明ですが、もう少し技術的に説明すると、以下のようになります。
一般的に、コンピュータシステムは、以下の 3 つのレイヤの積み上げにより動作します。(※ アプリ/ミドル/インフラの境界線は曖昧ですので、あくまで概念的なおおざっぱな分類だと思ってください。)
- インフラ : ハードウェア(PC、ディスクストレージ)、収容施設など
- ミドルウェア : OS や RDBMS、アプリケーションランタイムなど
- アプリケーション : 業務アプリケーションやビジネスアプリケーション、ゲームアプリケーションなど
従来のコンピュータシステム(例えばみなさんが今使っているパソコン)は、これらのすべてを自前で所有します。例えば、ハードウェアを購入し、OS を買ってきて、アプリをインストールして動かす。このような形態を、オンプレミス型のシステムと呼びます(上図の一番左)。
しかし、ホビーユースならともかく、ビジネスユースを考えた場合、ハードウェアの調達からアプリケーションの運用まで、すべてを自前で見なければならない、というのはとてつもなく大変です。クラウドコンピューティングでは、これらのすべてまたは一部を、他社に任せてしまう、ということを行います。このようにすることで、その企業が本来注力したい部分のみにビジネスリソースを割くことができるようになる、というのがクラウドコンピューティングの考え方になります。
クラウドコンピューティングには、どこまでの部分を『お任せ』してしまうのか、ということに関して、大別して 3 つのチョイスがあります。
- IaaS 型(Infrastructure as a Service)
インフラ部分のみお任せしてしまう、という方式。この方式を取った場合には、自社ではアプリとミドルのみ用意すればよく、インフラ部分(ハードウェアの調達や監視、故障対応など)は業者にお任せしてしまう、ということになります。 - PaaS 型(Platform as a Service)
インフラとミドルウェアの部分をお任せしてしまう、という方式。この方式を取った場合には、自社ではアプリケーションのみを用意する形になります。 - SaaS 型(Software as a Service)
インフラ、ミドル、アプリのすべてを外部委託してしまう、という方式。この方式を取った場合には、自社ではコンピュータシステムの構築や運用などについては一切気にする必要はなく、提供されるアプリケーションをそのまま使うだけ、という形になります。
……と、この説明を読んでみて、「これって従来あったサービスと何が違うの?」と思われた方も多いと思います。はい、概していえばその通りです。実は IaaS, PaaS, SaaS に関しては、似たようなサービスが従来から存在しています。例えば以下のようなものを考えてみましょう。
- ASP (アプリケーションサービスプロバイダ)
業務用のアプリケーションをインターネットなどを介してお客様に提供したりレンタルしたりするのが ASP ですが、これは典型的な SaaS と言えます。グループウェアや財務会計ソフト、給与計算、販売管理や在庫管理など多数のアプリケーションが、利用料金さえ支払えばすぐにブラウザから使えるようになりますが、これらはまさに SaaS そのものと言えます。また、Hotmail(Windows Live メール) や GMail なども、典型的な SaaS と言えます。 - ホスティングサービス
OS とミドルウェアが用意されたサーバを、お金を払ってレンタルし、この上に掲示板アプリなどを乗せて使うサービスが、主に Linux 系のサーバでよく見られます(例えばさくらのレンタルサーバ)。これは PaaS のようなものです。つまり、OS やランタイム(Perl や MySql など)がプリインストールされたサーバ上に、自分で作成した(あるいは他社から購入した)アプリケーション(掲示板アプリケーションやアクセスカウンタアプリケーションなど)を乗せて使うことができるようになっているわけですが、これはまさに PaaS 型のサービスであると言えます。 - レンタルサーバ
前述のホスティングサービスの多くはコンシューマ用ですが、ビジネス用には、サーバそのものを貸し出して自由にいじれるようにしたサービスも存在します(例えばさくらの専用サーバ)。これは IaaS の一種と言えます。つまり、ハードウェアの調達や故障対応、ネットワーク回線の手配などについては、事業者側で対応してもらう形にし、自分たちはそこに OS やミドルウェアをインストールし、アプリケーションを動かす、という形になります。これはまさに「インフラをサービスとして必要な分だけ購入する」というスタイルになります。 - データセンタ
データセンタは、「特定の会社の中の各部署にインフラサービスを提供する IaaS」である、と言えます。
学術的な定義はさておき、これらはいずれもクラウドコンピューティングのはしりのようなものです。また共通的な特徴として、利用した分だけ課金が発生する、というものもあります(このような課金方式はユーティリティコンピューティングと呼ばれています)。つまり、自社のコアコンピタンスではない部分については、外部の業者に委託し、利用した分だけの対価を払ってサービスを受ける、という形にしよう、というわけです。
※ (注意) なお、この説明だけ読むと「それだったら従来型のサービスも全部クラウド型のサービスって呼んでいいんじゃないか?」と思われる方もいるかもしれません。実際、例えば従来のホスティングに対して、クラウドは共有型ホスティングと呼ばれることもあります。しかし、クラウド型と従来型を隔てる極めて重要な技術的ポイントとして、プロビジョニング(自動プロビジョング) と呼ばれる機能があります。この機能を持っていることにより、クラウド型サービスは従来型サービスに比べて、非常に安価かつスムーズにサービスが提供できるようになっています。ちなみにコスト削減に関してはこれ以外にも、仮想化をはじめとする資源の共有(マルチテナント)、運用自動化や規模の経済など、惜しみない努力を図っており、これを従来型とクラウド型の違いとみなす人もいます。プロビジョニングがどのようなものであるのかについては、最後の FAQ のところで解説します。
[マイクロソフトの製品とサービスの分類]
さて、以上がクラウドコンピューティングにおけるサービスの分類ですが、マイクロソフトのクラウドコンピューティングに対する考え方や戦略は、ある意味、 「全方位的」 です。というのも、他社の場合、「もともと自社サービスのために作ったものを転用してクラウド型のサービスにしました」といった派生的なサービスが割と多いのですが、マイクロソフトの場合には、もともとソフトウェアをすべて自社開発している上に、データセンタまで自社で構築し始めてしまった(!)ぐらいです。このため、シングルベンダーでありながら、極めて多彩なサービスが提供可能になっています。半面、そのサービスがあまりにも多岐に渡るために、分類や整理が非常に難しく、全体像を把握するのが難しい、というのも実際です。
厳密性を追求するとかえってわかりにくくなるので、ここでは非常に乱暴に、マイクロソフトの製品やサービスを分類してみましょう。まず、マイクロソフトが提供する主要なパッケージ製品と、オンライン型のサービスを分類すると、以下のようになります。(※ 細かいところの正確性についてはここでは議論しないことにしてください;。また、点線部で示したところのように、欠けていたり、今後リリース予定だったりするところもあります。)
このような形で書いてみるとわかりやすいのですが、マイクロソフトは、各々の製品を、以下の 2 通りの方法でリリースしようとしています。
- オンプレミス用の製品(パッケージ製品) (= Software) (パッケージ購入・自社保有型)
- クラウド型のサービス(オンラインサービス) (= Services) (従量課金・自社非保有型)
しかも、これらは IaaS, PaaS, SaaS すべての領域に広がっており、極めて全方位的なラインアップを用意している、というのがマイクロソフトのクラウドコンピューティング戦略の特徴です。これを、 ”S+S” 戦略(Software + Services 戦略) と呼びます。
このマイクロソフトの戦略や考え方に関しては、メディアによっては「マイクロソフトはパッケージソフトウェアの成功体験から離れられないからだ」といった論調で語られることもあります。しかし、私個人の現場エンジニア感覚からすると、将来的にすべてのソフトウェアがクラウド型サービス(オンライン型サービス)になるという考え方や論調の方が、よほど非現実的だと思います。というのも、クラウドコンピューティング(オンライン型サービス)には、以下のような課題や問題もあるからです。
- データの秘匿性や監査性
例えば、金融機関の預金データや顧客データなどを、社外のパブリックなデータセンタ内(例えば Microsoft や Google のデータセンタ内)に置いてよいのか? と言えば、ふつうは No でしょう。セキュリティ要件上、取り扱うデータを外部会社に委託できないようなケースは実際のビジネスではよくある話です。(※ なお、これは Microsoft や Google のデータセンタ運用がセキュリティ的にずさんである、という意味ではありません。これらのデータセンタは極めて高いセキュリティで運用されています。しかし、サービスを利用する側の組織的なポリシー上、そもそも社外ににデータを持ち出せないケースがよくある、ということです。) - 極めて高い SLA (非機能要件への対応やその保証)
詳細は後ほど解説しますが、クラウドコンピューティングは、スケーラビリティ(動的なキャパシティ調整)に関しては極めて大きなメリットがあります。しかし、「性能要件(応答時間)を保証したい」「99.999% の高可用性を保証したい」といった、極めて高い SLA 要件は保証しにくい、あるいはできない、というのが実態です。 - サーバやソフトウェアのカスタマイズ性
上記のことと絡みますが、特に Microsoft や Google などが提供する、極めて大きなクラウド型のサービス(メガクラウドとでも呼ぶべきサービス)のほとんどは、個別要件への対応のためのカスタマイズに関して、大きな制約があることが普通です。例えば、業務アプリケーションでは .NET ランタイムのバージョンを特定のバージョン番号に固定したい、といったニーズがよくありますが、Windows Azure では、問答無用でセキュリティパッチやサービスパックなどが適用されていきます。また、サポートが英語でしか受けられない、といったこともよくありますし、サーバに自由にソフトをインストールできないといった制限もよくありますし、もっと身近なところでは、OS のタイムゾーンをいじれない(=時刻がグリニッジ標準時から動かせない)、既定の言語が英語になっている、といったこともあります。簡単に言えば、クラウド型のサービスを購入する、というのは、カスタマイズできない(あるいはカスタマイズが著しく制限された)パッケージ製品を購入するようなもので、利用者側の個別要件には基本的に対応してくれない、と考えておく必要があります(※ 実際にどこまでカスタマイズ可能かはサービスによって異なりますが、基本的にはカスタマイズ自由度が低い、と考えておくべきです)。 - ネットワークの接続性やデータの連携性
クラウド型サービスを利用する際によく問題になる点のひとつに、社内システムとの接続問題があります。例えば、イントラネットの業務アプリケーションの一部を社外のクラウド上に置く場合、クラウド上に置いたアプリケーションは、社内に置かれた Active Directory と連携してユーザを認証しなければならない、ということがよくあります。あるいは、クラウド上のデータベースから、定期的に社内のデータベースにデータをバックアップしなければならない、といったこともよくあるでしょう。このような場合、クラウド上のシステムと、社内システムとの接続をどのように行うか(そもそも行えるのか?)が問題になります。(※ ちなみに Microsoft の場合には、この問題に対処するために、サービスバスと呼ばれるサービス(AppFabric)や、Windows Identity Foundation による ID 連携サービスなどを提供しています。興味がある方は調べてみてください。)
つまり現実的には、クラウド型のソリューションだけではお客様要件を満たせないケースが多い、ということです。このため、実際のシステムは、オンプレミス、小型クラウドサービス(従来型に近いデータセンタのようなもの)、超大型クラウドサービス(Microsoft や Google などのデータセンタを使うもの)などを併用したシステム、すなわちハイブリッド型のシステムになるはずです。こうしたハイブリッド型のシステムを実現していくためには、ソフトウェアとサービスを上手に併用する必要がある、というのが Microsoft の “S+S” 戦略の根底にある考え方です。
(注意) クラウドコンピューティングのような新しいキーワードが出現すると、あたかもすべての既存のビジネスが新しいキーワードで書き変わるようなイメージで語られることがあります。しかし、こうした論調には十分注意が必要だと思います。クラウドコンピューティングは、よく、「蛇口をひねったら必要な分だけ水道水が出てきて、必要な分だけ水道料金を払うのと似たようなものだ」と言われます。しかし、水道水があったからといって、カミオカンデの水に水道水が使われるわけではないですし、銘酒の仕込み水が水道水になるわけでもないはずです(← 微妙に例えがわかりにくくてすみません;)。クラウドコンピューティングというパラダイムシフトは多くのビジネスやコンピューティングシステムの在り方に影響を与えるものではありますが、既存のビジネスやコンピューティングシステムをリプレースするものではない、と考えるべきです。
(注意) 前述したマイクロソフトの製品やサービスの分類図に関してですが、この図はあくまで単純な製品マッピングを示したものにすぎない、という点にも注意してください。先の図だけ見ると、あたかも BPOS というオンラインサービスが、Windows Azure Platform 上に構築されているかのように見えますが、そういうわけではありません。BPOS は BPOS の独自のインフラやプラットフォーム上にサービスが構築されています。このため、IaaS, PaaS, SaaS の正しいシステム構成図は下図のようになります。
(参考) これは個人的見解ですが、マイクロソフトテクノロジを採用する大きなメリットは、単一テクノロジで広範なシステム形態を利用することができる、というポイントだと思います。これは “S+S” 戦略などでも非常に明確に見て取れるのですが、エンジニアからすると、新たなシステム形態や技術が出現したときに、テクノロジをゼロから覚え直したり、異なるテクノロジにつなぎ合わせたりすることには多大な労力が必要になります。マイクロソフトテクノロジの場合、例えば Web アプリケーション開発であれば、オンプレミスの IIS 上でも、メガクラウド型 PaaS サービスの Windows Azure Platform 上でも、ほとんど同様のテクノロジが利用できる(ASP.NET や SQL Server/Azure など)ため、新技術が出現した場合でもそのラーニングコストや移行コストを最小限に抑えることができます(ゼロにすることは原理的に不可能ですが)。「最適なものを組み合わせて最適なソリューションを提供できるマルチベンダ方式」というのは聞こえはよいですが、現場のエンジニア感覚からすると、マルチベンダ方式の実態は、「最適なものを組み合わせるために様々なテクノロジを覚えねばならず、さらに組み合わせるための接続検証が必要になり、それらの組み合わせの動作保証までしなければならない方式」です。ソリューションが複雑化すればするほど、また新技術が多数現れてくるほど、マルチベンダ方式はかえってデメリットの方が大きくなる危険性がある、ということは覚えておいてください。(と、元 SIer にいたコンサルタントがつぶやいてみる。)
※ 次のエントリへ続きます。(長すぎてポストできなかったので分割しました。)