雲を駆け抜けろ

第4回プラットフォームを作るPaaSを理解する――PaaSとIaaS、SaaSの違い

前回まではIaaSの解説をいたしましたが、今回はPaaS(Platform as a Service)についての解説を行います。連載の最初にも書いた通り「クラウドコンピューティング」を大きく分けるとIaaS、PaaS、SaaSと大きく3つに分けられます。連載の最初で私はIaaSは「サーバ」「回線」などのインフラを仮想的に提供するサービス、SaaSはソフトウェアを提供するサービス、PaaSは「開発環境」を提供するものと説明しました。

しかし、⁠開発環境を提供する」と一口に言っても人によっては色々な意味合いが出てきます。単に「開発環境を提供する」という事であれば、別にIaaSでもOSのインストールなどを行えば開発環境ができますし、1枚のWebページを公開するだけであればSaaS的なサービスでもWebサイトやブログを構築できるサービスはあります。

それではPaaSは、どのような「開発環境」を提供するものになるのでしょうか? PaaSによって、提供形態に違いはありますが、PaaSは一般的にはプログラムの実行環境を提供するものと言われています。

たとえば、あなたがMySQLとPHPで動くブログシステムを構築したいとします。これらの実行環境をIaaSで用意するには、まずはIaaSが用意する仮想サーバを借りて、OSを選択し、それをインストールして設定を行い、さらにPHPやMySQLをインストールし、設定を行う必要があります。IaaSなので物理サーバを用意する手間は省けますが、ブログを立ち上げるごとにこのような設定を行うのは非常に面倒です。

一方のPaaSの場合は、サーバの選択やOSのインストール、また利用できるプログラミング言語の設定、さらにMySQLのようなデータベースも用意してくれます。これにより開発者はサーバの設定などを考えることなくブログラムの開発に集中できます。

ただし、利用できるプログラミング言語など、PaaSサービスを提供している事業者にとって提供できるサービスには違いがあります。

 PaaSとIaaSとの比較
図 PaaSとIaaSとの比較

次は、代表的なPaaSをご紹介いたします。それぞれ、どのような特徴があるのか見てみましょう。

さまざまなPaaSを理解する

Google App Engine

Google App Engine(=GAE)は、Googleが提供しているPaaSで、Java、Python、そしてGoogle社が作ったプログラミング言語GOが利用できます。GAEの上でホスティングできるアプリケーションは、特定のストレージ領域とページビューでは月間500万程度まで無料で利用できます。

Heroku

Herokuは複数の言語を利用できるPaaSベンダーです。クラウドコンピューティングの大手ベンダー「セールスフォース」が買収したことや、Rubyの作者である、まつもとゆきひろ氏がチーフアーキテクトとして参画していることでも有名です。

元々Herokuは、Rubyが利用できるPaaSとして始まりましたが、現在ではRuby on Rails、Java、Node.jsなどの言語が利用でき、データベースとしてはPostgreSQLをサポートしています。

Herokuの課金方法はWebサーバにあたる「web dyno」とバックグランドのプロセスを実行する「worker dyno」の実行時間、またデータベースの容量によって課金されます。

FluxFlex

FluxFlexは日本人の開発者が作成したPaaS。PHP、Ruby, Python, Perl, Node.js, Haskellなどをサポートしています。今までご紹介したPaaSに大きな特徴として、WordPressやmediawikiなどのアプリケーションや、phpcakeなどのフレームワークをインストールボタンをクリックするだけでインストールできます。

また、githubへの連携や、Facebookなどのアカントからサインアップし利用できるなどの機能があります。Facebookのアカントがあれば、すぐにでも利用できるので、手軽にPaaS環境を利用してみたい方には良いと思います。

DotCloud

Dotcloudは、さまざまな言語、データベースが利用できるPaaS環境です。旧来のPaaSは利用できるプログラミング言語やデータベースは、固定化されているものが多く、選択することはできませんでしたが、dot cloudはPerl、Ruby、Java、Python、Node.jsなどの複数の言語が利用できるほか、データベースも代表的な物はほとんど使えます。従来のPaaS環境ではPaaS環境に合わせて、それぞれのPaaSの仕組みを学習すしていく必要がありましたが、dot cloudは複数の言語とデータベースが利用できますのでPaaSの仕様にこだわらず開発者がPaaSを利用できます。

Cloud Foundry

VMwareが提供しているPaaSです。オープンソースとして提供しており、このCloud FoundryをPCなどのローカル環境で動かすことができ「Micro Cloud Foundry」も提供しています。

Force.com

セールスフォース社が提供するPaaS環境。元々、PaaSという言葉はセールスフォース社が提唱した言葉ですから、ある意味PaaSの元祖的な所もあるでしょう。

Windows Azure

Windows Azureは、Microsoftが提供するPaaSです。他のPaaSとの最大の違いはWindowsやVisual Studioなどの従来のMicrosoft製品との親和性です。OSについてはAzure用のWindowsサーバOSが提供され、データベースについてもAzure用のSQLサーバ「SQL Azure」が利用できます。

他社のPaaS/IaaSと異なり、Microsoftは自社のクラウド環境だけで完結せずにオンプレミスと連動にも注力しています。クラウド側にあるWindows Azureとオンプレミス側にあるWindows Serverとも連動して動くようになっております。また、Windows AzureではPHPやPython、Rubyなどの言語も利用することが可能です。

レンタルサーバとPaaSの違い

ここまで見てきたようにPaaSの特徴はサーバのハードウェアやOSを用意せずに、プログラム実行・開発環境やデータベースを提供するものとなります。しかし、単にプログラムの実行環境とデータベースの提供だけであれば、以前から「レンタルサーバ」サービスが提供されています。

「レンタルサーバ」サービスは、サービスにもよりますが、PHP、Perl、Rubyなどのプログラム実行環境を提供していますし、MySQLなどのデータベースなども用意しています。これだけ見れば「レンタルサーバ」サービスとPaaSは同じようなものに思えます。

確かにプログラムの実行環境とデータベースだけを見れば、両者は同じように思えますが、最大の違いはスケールアップ/アウトができるかどうかの違いです。現在のレンタルサーバはスペックや実行環境が固定されており、これらをスペックアップしたりスケールアウトするのは難しい状況です。そのため、突然のアクセス増加にはサーバが耐えられない場合があります。

一方のPaaSは、サーバのスケールアップ/スケールアウトが容易にできます。IaaSと同様にはじめはスモールスタート、人気が出てきたらスケールアップ/スケールアウトをしてシステム全体を強化することもできます。

また、レンタルサーバが提供しているプログラム実行環境は、どちらかというとユーザサイドが必要な物が中心となっており、Node.jsやRuby on Railsなどをサポートしている所はまだ少数です。一方のPaaSは、これらの開発者に好まれるプログラミング言語をサポートしており、より開発者向けのものになっています。

おすすめ記事

記事・ニュース一覧