1.1.3 IaaS/PaaS/SaaS の違い
続いて、「販売商品」の観点で整理します。これは、IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、SaaS(Software as a Service)と呼ばれる分類にあたります(図 1.5)。歴史的には、クラウドサービスの利用は、SaaS タイプのサービスから広がっていきました。
これは、企業向けの CRM アプリケーションや、個人向けのメールサービスなど、エンドユーザーが直接に利用可能なアプリケーション環境をクラウド上のサービスとして提供するものです。このようなサービスは、クラウドコンピューティングという用語が登場する以前より、ASP(アプリケーションサービスプロバイダー)という名称で提供されていましたが、一種のマーケティング戦略として、「クラウドサービス」という名称で呼ばれるようになりました。
次に、PaaS タイプのサービスでは、アプリケーションの開発/実行環境がクラウド上のサービスとして提供されます。アプリケーションの開発を始めるには、アプリケーションサーバーとバックエンドのデータベース、あるいは、開発フレームワークやコンパイラーなどの準備が必要です。
PaaS を利用すると、これらの環境が自動的に用意されるので、アプリケーション開発者は、すぐに開発に取りかかることができます。従来のフレームワークやデータベース環境をそのまま提供するサービスの他に、そのサービスに固有の特別なフレームワークやデータストアを提供するものもあります。
そして最後は、本書のテーマである IaaS タイプのサービスです。IaaS タイプのサービスでは、サーバー、ネットワーク、ストレージといった、IT インフラの構成要素をサービスとして提供します(図 1.6)。
サービスの利用者には、それぞれに専用のテナント環境が用意されます。その中において、「仮想ルーター」や「仮想スイッチ」などの仮想的なネットワーク機器、「仮想マシンインスタンス」と呼ばれる仮想サーバー、そして、データ保存のための「仮想ストレージ」などを自由に追加していきます。
つまり、仮想化された環境内で、サーバー、ネットワーク、ストレージという、IT インフラの 3 大要素を自由に組み合わせて、自分専用のサービス基盤を構築することが可能になります。
先の図 1.5 に示したように、SaaS/PaaS/IaaS は、ユーザーに提供される IT リソースの範囲の違いと捉えることもできます。しかしながら、IaaS の上に PaaS が作られる、あるいは、PaaS の上に SaaS が作られるという単純なものではありません。
たとえば、SaaS の場合、サービスの利用者から見えるのは、あくまでアプリケーションのユーザーインターフェースです。アプリケーションの機能でマルチテナント化することにより、同じサーバー上で稼働する 1 つのアプリケーションを複数ユーザーに利用させることも可能です。インフラそのものを仮想化することは、必須というわけではありません。
一方、IaaS の場合は、サーバーやネットワークなど、インフラの構成要素そのものをユーザー個別に提供する必要がありますので、それぞれのコンポーネントを仮想化して提供することは、ほぼ必須の要件となります[※ 1](図 1.7)。
このように、IaaS タイプのクラウドで提供されるリソースは、物理環境から切り離されて仮想化されているという点に大きな特徴があります。この後で説明するように、仮想化によって抽象化されたリソースを効率的に操作するうえで、API が大きな役割を果たすことになります。
※1 IaaS タイプのクラウドサービスには、物理サーバーを利用できるものもあります。このようなサービスにおいても、物理サーバーであることを意識せずに仮想マシンと同様の手続き(API)で利用できるため、「API から操作する」という本質は変わらないと考えて良いでしょう。