文・山崎 英(NTTデータ経営研究所 シニアコンサルタント)
急速に市場が拡大しつつあるクラウドコンピューティング・サービスは、「提供対象」と「構成要素」という二つの基準で分類できます。
「提供対象」で分類した場合は、(1)不特定多数を対象として提供されるパブリッククラウド(public cloud)、(2)同一企業内または共通の目的を有する企業群を対象として提供されるプライベートクラウド(private cloud)、(3)パブリッククラウドとプライベートクラウドを組み合わせて利用するハイブリッドクラウド(hybrid cloud)---に分類できます。
一方、SaaS(Software as a Service)、PaaS(Platform as a Service)、IaaS(Infrastructure as a Service)は、「構成要素」による分類です。総務省・スマートクラウド研究会報告書によると、それぞれの定義は表1の通りです。
SaaS (Software as a Service) |
アプリケーション(ソフトウエア)をサービスとして提供する |
---|---|
PaaS (Platform as a Service) |
アプリケーションを稼働させるための基盤(プラットフォーム)をサービスとして提供する |
IaaS (Infrastructure as a Service) |
サーバー、CPU、ストレージなどのインフラをサービスとして提供する |
SaaS/PaaS/IaaSにおいて、具体的に何が提供され、どのように異なるのか。詳しく見ていきましょう。
構成要素から見たSaaS/PaaS/IaaSの特徴
SaaS/PaaS/IaaSによって提供される構成要素を、「アプリケーション」「ミドルウエア」「OS」「ハードウエア/ネットワーク」に分け、それぞれの特徴を見てみましょう(図1)。
(1)IaaS
IaaSは、ネットワーク/ハードウエア(CPU・メモリー・ハードディスク)/OSを提供するサービスです。ユーザーは何もインストールされていないサーバー環境を提供され、その上にユーザーが必要とするミドルウエアや、アプリケーションソフトウエアをインストールすることになります。
レンタルサーバーと大して変わらないようにも思えますが、レンタルサーバーは物理サーバーをそのまま提供するものである一方、IaaSはサーバーのCPU・メモリー・ハードディスクを仮想化技術などによって、ユーザーが必要とする分だけ提供するものである点が異なります。
IaaSは、WindowsやLinuxなどのOSを含む、あるいは含まないといった双方の見解が存在します。しかし、米アマゾン・ウェブ・サービシズの「Amazon EC2」をはじめとした代表的なサービスを見る限り、OSまで提供しているケースが一般的です。なお、OSを含まないサービスを、明示的にHaaS(Hardware as a Service)と呼ぶこともあります。
(2)PaaS
PaaSは、IaaSの構成要素に「ミドルウエア」を加えたものです。IaaSの構成要素に加え、データベースソフトやWebサーバーソフトといったWebアプリケーションを稼働させるためのソフトウエアや、アプリケーション開発に必要となるソフトウエアが提供されます。ユーザーは、必要なアプリケーションのソースコードをPaaS環境にアップロードし、必要なデータベース定義を設定することで、アプリケーションを動作させることが可能となります。
PaaSではIaaSとは異なり、ユーザーはOSを直接操作することはありません。IaaSでは、OSの各種設定や保守作業をユーザー自身が行う必要がありますが、PaaSではそのような作業が不要となります。
なお、PaaSではサービスによって、アプリケーションで利用できる開発言語が限定される点や、PaaSにおいて提供されていないミドルウエアについてはユーザー自身が準備しなければならない(場合によっては利用できない)点に留意が必要です。
(3)SaaS
SaaSでは、ユーザーはネットワーク・ハードウエア・OS・ミドルウエアのすべての要素について、自身で準備をする必要がありません。ユーザーはWebブラウザを利用して、 SaaS提供事業者のWebアプリケーションにアクセスし、サービスを利用することになります。
SaaSのアプリケーションの機能が不十分である場合は、ユーザー自身が機能を追加開発することも可能です。画面上に入力項目を追加するなどの軽微な機能追加については、Webブラウザからパラメータを変更するだけで対応可能です。データ保存時にデータ整合性チェックを行うような複雑な機能追加については、SaaSベンダーが提供する専用アプリケーション(および専用開発言語)で開発するケースも見られます。この場合、専用アプリケーション(および専用開発言語)に習熟する必要があります。