アプリケーションの開発・実行環境(プラットフォーム)をサービスとして提供する形態。
PaaS(パース、Platform as a Service = サービスとしてのプラットフォーム)とは、アプリを開発・実行するための土台をサービスとして提供する形態のことです。ここでいう土台(プラットフォーム)とは、OS、プログラムを動かすための言語ランタイム(=プログラムを実行する仕組み)、データベース、ミドルウェアなどをまとめたものです。
身近な例で考えると、調理器具と火がそろったレンタルキッチンのようなものです。コンロや鍋(土台)は用意されているので、利用者は料理(自分のアプリ)を作ることだけに集中できます。
PaaS は SaaS と IaaS の中間に位置します。完成品をそのまま使う SaaS と違い、自分でアプリを作れます。一方で、土台の準備や保守は事業者がやってくれるため、IaaS よりも手軽です。
PaaS では、事業者が OS・ミドルウェア・実行環境までをまとめて用意します。利用者はその上に自分のアプリを置いて動かすだけです。
それぞれの担当範囲を整理すると次のようになります。
・事業者が管理:OS、ミドルウェア、言語ランタイム、データベースなどの土台と、その下の物理インフラすべて
・利用者が管理:自分が書いたアプリ(コード)と、そのアプリが扱うデータ
これにより、利用者はサーバの構築やOSの更新といったインフラ管理から解放されます。上の図解の境界線を見ると、SaaS よりは利用者の範囲が広く(アプリが利用者側)、IaaS よりは狭い(OSは事業者側)ことが分かります。
PaaS の代表的なサービスには次のようなものがあります。
・Heroku:書いたコードを置くだけで公開できる老舗の PaaS
・Google App Engine:Googleが提供するアプリ実行環境
・AWS Elastic Beanstalk:AWS上でアプリを簡単にデプロイ・運用できる仕組み
・Azure App Service:MicrosoftのWebアプリ向けプラットフォーム
いずれも「アプリを置けば、土台はすべて事業者が面倒を見てくれる」点が共通しています。開発者はサーバの設定よりもアプリ作りに集中できます。
PaaS を使うとアプリ開発が速くなる理由は、「土台の準備をまるごとスキップできる」からです。
IaaS(仮想マシンを借りる形態)でアプリを公開しようとすると、次のような手順を自分でこなす必要があります。
・OSのインストールと設定(セキュリティ設定・ユーザー管理など)
・言語ランタイムの導入(JavaやPythonなど、プログラムを動かすための仕組み)
・データベースのインストールと設定(データを記録・管理する仕組み)
・その上でやっとアプリのコードを書いて公開
PaaS ではこれらの土台がすべて用意済みです。開発者はコードを書いて「デプロイ(=サービスとして公開する操作)」するだけで、アプリをすぐ動かせます。また、事業者がOS のセキュリティ更新を自動でやってくれるため、セキュリティ管理の手間も大幅に減ります。アイデアをすぐ形にしたい、開発スピードを重視したい場合に PaaS が選ばれるのはこのためです。
PaaS は便利な反面、事業者が決めた土台の範囲内でしか使えないという制限があります。自由度の高さでは IaaS に劣ります。
PaaS が向かないケースには次のようなものがあります。
・特定のOS・バージョンを指定したい:PaaS では事業者が選んだOSしか使えないことが多い
・OSやミドルウェアを細かくカスタマイズしたい:土台の設定は事業者まかせで変更できない
・特殊なソフトウェアを組み込む必要がある:PaaS が対応していない場合はIaaSを使う必要がある
なぜこの制限があるのか。事業者が土台を統一管理するからこそ、セキュリティ更新や保守を自動化できます。土台を自由に変えさせてしまうと、管理コストが跳ね上がり「手軽に使えるPaaS」の利点が失われます。手軽さと引き換えに、自由度の一部を事業者に預けるのが PaaS の設計思想です。自由度が最優先なら IaaS を選ぶ、というのが使い分けの基本です。
Q1. PaaS の説明として最も適切なものはどれか。
Q2. PaaS において、利用者が管理する範囲はどれか。
Q3. 次のうち PaaS の代表的なサービスはどれか。