【初心者向け】IaaS PaaS SaaSそれぞれの違いとVPSとの比較

# クラウドの波に乗れていない人のための記事です。

あなたがもし、もうすでにAzure,AWS等のクラウドサービスを使用しているなら、本記事の内容はあなたにとって全く意味のないものでしょう。

本記事は、クラウド、つまりIaaS PaaS SaaSと呼ばれるインターネット上でコンピュータを使用する技術について、初心者にもわかりやすいよう解説をしていくものです。
あなたが本記事を読み終わった頃には、クラウドの種類とVPSの違いについて理解し、クラウドの波に乗るための準備をし終わるのが目標です。

あなたが優秀な技術者なら、ぜひ本記事の問題点を指摘してください。指摘と改善は、読者にとっても私にとっても良い結果をもたらします。

## クラウドの違い

*単純に、IaaSとVPSの違いが知りたい人はこの項目を飛ばしてください。*
これから本記事を読むのに必要な前提知識についてお話いたします。それは、**"クラウド"というワードはぼんやりした意味しかなく、それでいて場面場面で意味が変わってしまう**という厄介なワードである、ということです。

下の例文を見て、一度考えてみてください。
**A「私の写真をクラウドにアップロードしたから見てね！」**

あなたと写真を共有したがっているAさん。特にICTに詳しい印象はありません。
どうやら、Aさんはクラウドを使い、そこに写真をアップロードして公開したようです。
では、Aさんはどのようなクラウドを使い、どのような方法で写真を公開したのでしょう。

- 単に、iCloudやGoogle Photosなどのサービスを使って写真を公開した

- 自分でWebアプリケーションを作って写真を公開した

- 自前のサーバ環境を持ち、そこにCMS(ownCloud,WordPress等)を展開し写真を公開した

前述の通り、Aさんは特にICTに詳しいわけではありません。ですので、ここでは一番最初の「単に、iCloudやGoogle Photosなどのサービスを使って写真を公開した」が最もAさんの利用した可能性の高い方法と言えるでしょう。

ですが、二番目と三番目はクラウドとはいえないのでしょうか？
**答えはNOです。** すべてクラウドなんです。
更には、自前のサーバ環境が自宅にあるノートPCであっても、クラウドと言えてしまうのです。

**クラウドの定義は、簡単に表すと"インターネット上でサービスを利用すること"である。**

難しいですね。でも、大丈夫です。クラウドというワードは曖昧であるとだけ理解していただければ、次のステップに進む事ができます。


## IaaS PaaS SaaSの違い

クラウドという大きな分類の中には**クラウドコンピューティング**という分野があります。
**自分のやりたい事(=目的)をインターネット上のコンピュータを使って実現する(=達成)こと**をクラウドコンピューティングと呼びます。
そして、そのクラウドコンピューティングを、ユーザから見て更に3つに分類したのが**IaaS PaaS SaaS**です。
これらは**目的を達成するために、どこまでをクラウドとして用意するか**を区別しています。

下が、それぞれの関係性を示した表です。

|  | IaaS | PaaS | SaaS |
|:-:|:-:|:-:|:-:|
|アプリケーション|   |   | ✔ |
|ミドルウェア(DB等)|  | ✔ | ✔ |
|OS| ✔ | ✔ | ✔ |
|ハードウェア| ✔ | ✔ | ✔ |
|ネットワーク| ✔ | ✔ | ✔ |

...見てみても、よくわかりませんよね。
それぞれを場所のレンタルに例えてみましょう。

- 土地を借りること = IaaS
- 家を借りること　 = PaaS
- 部屋を借りること = SaaS

雨風をしのげる場所を得ることが目的であれば、部屋を借りるのが一番効率的で簡単な方法です。雨風をしのぐために、土地を借り家を建てるのは現実的ではありません。
逆に、農園を運営するのが目的であれば、家や部屋を借りるのは良い選択肢ではありません。土地を借り、たがやし、収穫をしなければいけませんね。

このように、目的を達成するための**最適な**手段として、IaaS PaaS SaaSがあるのです。


### IaaS - Infrastructure as a Service

***全てはあたなの思い通りに、好きなようにリソースを使ってください。***
日本語に訳すと、"サービスとしてのインフラ"、つまり、インフラをサービスとして提供しますよ、と言うものです。
IaaSでは、仮想サーバやハーディディスク、SSD、ファイアウォール、ロードバランサーなどがサービスとして提供されます。

#### メリット

目的を達成するために、ハードウェアの設計から始めることができます。あなたはOSやCPU、メモリ等のリソースを自由に設定し、リモートでアクセスをし構築をします。全ては自由に決めることができるため、PaaSやSaaSでは達成が困難な目的でも、IaaSでは達成できるということが多々あります。

#### デメリット

PaaSやSaaSと比べ、OSやハードウェア、ネットワークの知識が必要になります。そして、更新やセキュリティ対策などもすべて自分の手で行わなければなりません。


IaaSは今までのVPSと近い立ち位置にいるため、両者はよく比較されます。この記事でも最後の方で比較をしています。

前述の例に当てはめてみると、IaaSは土地を借りることに分類されます。
整地された土地と、ガスや水道、電気などの必要最小限のものが提供されています。その土地を自由に建築、改造をすることができますが、必然的に建築、改造の知識が必要になってきます。そして、その建造物の責任もあなたが持つことになります。

**目的を達成するためにSaaS,PaaSに無い特殊なソフトウェアを必要とする場合や、細かな設定を必要とする場合、IaaSは最良の選択肢と言えるでしょう。**


### PaaS - Platform as a Service

***面倒な設定は必要ありません。あなたのプログラムの動作に必要なものをそろえました。***
日本語に訳すと"サービスとしてのプラットフォーム"、つまり、プラットフォームをサービスとして提供しますよ、というものです。
PaaSでは、データベースやプログラム実行環境などがサービスとして提供されます。

目的を達成するために、OSやハードウェアの心配はいりません。あなたはプログラムだけ用意すればいいのです。GUI上で必要な情報を入力し、数回のクリックで目的が達成できます。

#### メリット

IaaSとSaaSの中間に位置するのがPaaSです。
あなたがデータベースを用いたアプリケーションをネットワークで実行したい時、SaaSではそもそも目的の達成が難しく、IaaSではデータベースとは別にハードウェアやOSから用意しなければなりません。
PaaSでは、データベースやプログラムの実行環境がすでに用意されていて、サービスの管理下に入っています。そのため、更新や脆弱性対策などはほぼ必要ありません。

#### デメリット

利用するデータベースの設定や、プログラムの実行環境には制限があり、あなたが完全に満足できない可能性があります。その場合は、PaaSではなくIaaSを使う必要が出てくるかもしれません。


前述の例に当てはめると、PaaSは家を借りることに分類されます。
自分の目的にあった家を借りることで、土地やガスや水道、電気などの環境のことを考えずに目的を達成することができます。しかし、改築工事は容易ではありません。借りた家であなたのわがままを解決するのは難しいかもしれません。

**OSやDBソフトウェアのことを考えずに自分自身のプログラムをネットワーク上で実行したい時、PaaSは最良の選択肢と言えるでしょう。**

### SaaS - Software as a Service

***目的のものがここに揃っています。登録をすればあなたは目的を達成することができます。***
日本語に訳すと"サービスとしてのソフトウェア"、つまり、ソフトウェアをサービスとして提供しますよ、というものです。
SaaSでは、目的と目的の達成がサービスとして提供されます。

各種Mailサービス(Gmail,Yahoo Mail,Outlook等)を始め、クラウドストレージサービスからブログサービスもSaaSの内に入ります。

#### メリット

あなたがWeb上で簡単な目的、例えばメールの送信や受信をしたいと思った時、SaaSを利用すればすぐに目的が達成できます。

#### デメリット

少しでも型から外れたことをしたい時、SaaSの制限はあなたを悩ませます。例えば、自前のプログラムを用いたメールの分類などです。SaaSには自由がないので、PaaS、またはIaaSを使う必要があります。

前述の例に当てはめると、SaaSは部屋を借りることに分類されます。
目的にあったシンプルな部屋が提供されます。部屋は限られた広さで、あなたは少し物足りないかもしれません。それでも、難しい知識は必要なしに目的を達成することができます。

**簡単な目的を短時間で確実に達成するために、SaaSは最良の選択肢と言えるでしょう。**

## IaaSとVPSの違い

ここからは、VPSとIaaSの違いを解説していきます。

### IaaSは柔軟である。

**IaaSは柔軟であり、VPSに比べ必要なリソースの確保が容易です。**
IaaSは仮想サーバのリソースを細かく決めることができる他、構築後のリソースの増減も手軽に、数分でできるようになっています。
それにくらべ、VPSは一度契約をすると、プロバイダの用意する契約変更の手順を踏まなければならず、変更に対するレスポンスも、一般的にIaaSよりも遅いと言われています。

なぜ、IaaSはVPSよりも柔軟なのでしょう？その答えは、料金形態にあります。
IaaSは**従量課金制**、つまり**"使った分だけ"**払ってもらいますよという料金形態を採用しています。この、**"使った分だけ"**と言うのは、CPUの数やストレージ、メモリ等のことを指しています。そして、多くの場合、課金は一時間が最小単位となっています。
その反対に、VPSでは契約は月極制で、契約内でリソースをいくら使おうが支払う額は変わりません。

このことから、IaaSは契約内で**使用するリソースにより利用料金を変えることができる**ため容易な変更が可能であり、VPSは**リソースの変更と同時に契約自体を変えなければならない**ため頑固であると言えます。

### IaaSは仮想コンピュータが全てではない

IaaSは、仮想コンピュータの手前の部分、例えば**ファイアウォールやロードバランサ、VPNを操作することが可能**です。VPSのみでネットワークを構築しようとすると、機器分の契約が必要になったり、一台で複数の役割を担当しなければいけません。

これは、前述の柔軟性にも関連してきます。
今まで一台の仮想コンピュータで実行されていたアプリケーションサーバをクローンし、ロードバランサを設置しアクセスの増大に備えるといったような変更がものの数分で可能になっています。
これを実際の物理サーバで同じことをやろうとすると、部品の調達だけで数日かかってしまいます。

## まとめ

本記事を見ても、よくわからない部分があると思います。
疑問点や改善点がありましたら、Twitterやコメント欄にお気軽にどうぞ。


[Twitter - @kznr_luk](https://twitter.com/kznr_luk)

## ステマ

筆者が所属しているMicrosoft Student Partnerでは、学生のためのイベントや勉強会を各地域で行っています。
https://mspjp.connpass.com/
Azureは学生無料で一部のPaaSが使えます。Azureに関するイベントも行っていますので、ぜひ参加してみてください！