IaaS・PaaS・SaaSの違いを理解する【AZ-900】
はじめに
こんにちは。
Azure Fundamentals(AZ-900)の学習を進めていると、IaaS・PaaS・SaaSという3つのクラウドサービスモデルが登場します。
(それもわかりにくすぎる期間翻訳のドキュメントで)
最初に見たときは、
- 名前が似ていて覚えにくい…
- 何が違うのか分からない…
- どれがどれやねん!
という状態でした。
Microsoft Learnを読み進めてみると、「誰がどこまで管理するのか」が違うだけだと分かり、一気に整理しやすくなりました。
今回はMicrosoft Learnで学習した内容をもとに、自分なりに理解した内容をまとめてみます。
AZ-900では頻出のテーマなので、試験での見分け方もあわせて整理していきます。
クラウドサービスモデルとは
クラウドサービスには、大きく分けて3つの提供形態があります。
- IaaS(Infrastructure as a Service)
- PaaS(Platform as a Service)
- SaaS(Software as a Service)
名前は難しく感じますが、私としては
「どこまでクラウド事業者が管理してくれるか」
の違いだと考えると理解しやすくなりました。
あとは言葉の意味を覚えてイメージとむずびつけました。
インフラ → プラットフォーム → サービス
最小限の基礎だけ → サービスの土台つき → サービス使うだけ
という感じです。
左に行くほど自由度は高くなりますが、その分自分で管理する範囲も増えます。
逆に右へ行くほど、クラウド事業者が管理してくれる範囲が増えるため、利用者は運用の手間を減らすことができます。
IaaS(Infrastructure as a Service)
IaaSとは?
IaaS(Infrastructure as a Service)は、日本語では**「サービスとしてのインフラストラクチャ」**と呼ばれます。
Microsoft Learnでは、
必要なインフラだけをクラウドから借りるサービス
として説明されています。
私は、
クラウド上にサーバーを借りるイメージ
を持つと理解しやすかったです。
利用者が管理する範囲
IaaSでは、
クラウド事業者が管理するのは、
- データセンター
- サーバー
- ストレージ
- ネットワーク
などの物理的なインフラです。
一方で利用者は、
- OS
- ミドルウェア
- ランタイム
- アプリケーション
- データ
などを自分で管理します。
つまり、
自由度が高い代わりに、管理する範囲も最も広いサービスモデル
ということになります。
Azureでいうと?
Azureでは代表的なサービスとして
- Azure Virtual Machines(Azure VM)
があります。
これはクラウド上に仮想マシンを作成し、
WindowsやLinuxを自由にインストールして利用できます。
私は最初、
「クラウドなのにOSまで自分で管理するの?」
と思いました。
ですが、オンプレミスのサーバーをそのままクラウドへ持ってきたようなイメージだと考えると納得できました。
どんな場面で使われる?
Microsoft Learnでは、
- オンプレミスからの移行(リフト&シフト)
- 開発環境・テスト環境
などが例として紹介されています。
例えば、
社内で動いているWindows Serverを、そのままAzureへ移行したい場合はIaaSが向いています。
OSも含めて自由に設定できるため、既存システムを大きく変更せずにクラウドへ移行しやすいからです。
PaaS(Platform as a Service)
PaaSとは?
PaaS(Platform as a Service)は、日本語では**「サービスとしてのプラットフォーム」**と呼ばれます。
Microsoft Learnでは、
アプリケーションを開発・実行するための環境を提供するサービス
と説明されています。
私は、
サーバー管理を気にせず、アプリ開発だけに集中できるサービス
というイメージで理解しました。
IaaSとの大きな違いは、
利用者がOSを管理する必要がないことです。
OSの更新やパッチ適用などはクラウド事業者が行ってくれるため、
開発者はアプリケーションの開発に集中できます。
Azureでいうと?
代表的なのが
- Azure App Service
です。
GitHubと連携して、
コードをデプロイするだけでWebアプリを公開できます。
サーバーのセットアップやOS更新を意識する必要がないため、
Webアプリ開発では非常に便利なサービスだと感じました。
VercelもPaaS?
これはMicrosoft Learnには直接書かれていませんが、
私はAzure App Serviceを学習していて、
「これってVercelと考え方が似ているな」
と思いました。
実際、
私が個人開発で利用しているVercelも、
GitHubへPushすると自動でデプロイされます。
サーバーを準備したりOSを更新したりする必要はなく、
コードを書くことに集中できます。
そのため、
厳密にはAzureのサービスではありませんが、
VercelもPaaSの考え方に近いサービスとして理解するとイメージしやすいと思いました。
SaaS(Software as a Service)
SaaSとは?
SaaS(Software as a Service)は、日本語では**「サービスとしてのソフトウェア」**と呼ばれます。
Microsoft Learnでは、完成したアプリケーションをインターネット経由で利用するサービスとして紹介されています。
私は最初、「クラウドサービスって全部SaaSじゃないの?」と思っていました。
ですが学習を進めるうちに、
利用者はサービスを使うだけで、システムの管理はほとんど必要ないもの
がSaaSだと理解しました。
利用者が管理する範囲
SaaSでは、
クラウド事業者が
- インフラ
- OS
- ミドルウェア
- ランタイム
- アプリケーション
まで管理してくれます。
利用者が管理するのは、
- データ
- ユーザー
- アクセス権限
などになります。
つまり、
3つのサービスモデルの中で、最も管理する範囲が少ない
のがSaaSです。
身近な例
Microsoft Learnでも紹介されていますが、
SaaSには次のようなサービスがあります。
- Microsoft 365
- Outlook
- Teams
- Gmail
- Slack
- 会計ソフト
- 経費精算システム
例えばGmailを利用するとき、
OSの更新やサーバー管理を意識することはありません。
アカウントを作成してログインすれば、すぐにメールを利用できます。
Microsoft 365も同じです。
WordやExcelを利用するためにサーバーを構築する必要はなく、サービスを契約するだけで利用できます。
このように、
「完成したアプリケーションを利用する」
というのがSaaSの特徴です。
責任共有モデル
Microsoft Learnで一番重要だと感じたのが、責任共有モデルです。
最初は図を見るだけでは少し分かりにくかったのですが、
「誰がどこまで管理するか」
を表していると理解すると整理しやすくなりました。
責任の違い
| 管理対象 | IaaS | PaaS | SaaS |
|---|---|---|---|
| データ | 利用者 | 利用者 | 利用者 |
| アプリケーション | 利用者 | 利用者 | クラウド事業者 |
| ランタイム | 利用者 | クラウド事業者 | クラウド事業者 |
| ミドルウェア | 利用者 | クラウド事業者 | クラウド事業者 |
| OS | 利用者 | クラウド事業者 | クラウド事業者 |
| 仮想化 | クラウド事業者 | クラウド事業者 | クラウド事業者 |
| サーバー | クラウド事業者 | クラウド事業者 | クラウド事業者 |
| ストレージ | クラウド事業者 | クラウド事業者 | クラウド事業者 |
| ネットワーク | クラウド事業者 | クラウド事業者 | クラウド事業者 |
私はこの表を見て、
右へ行くほど管理を任せられる
と考えるようにしました。
イメージ図
つまり、
- IaaSは自由度が高い
- SaaSは運用が楽
- PaaSはその中間
という関係になります。
自由度と管理負荷は反比例すると考えると覚えやすかったです。
IaaS・PaaS・SaaSを比較してみる
ここまで学習した内容を、自分なりに表で整理してみました。
| 項目 | IaaS | PaaS | SaaS |
|---|---|---|---|
| 自由度 | 高い | 普通 | 低い |
| 管理する範囲 | 多い | 中くらい | 少ない |
| OS管理 | 必要 | 不要 | 不要 |
| 開発のしやすさ | △ | ◎ | ー |
| 利用目的 | インフラ構築 | アプリ開発 | サービス利用 |
| 代表例 | Azure VM | Azure App Service | Microsoft 365 |
この表を作ってみると、
PaaSがちょうどIaaSとSaaSの中間に位置していることがよく分かりました。
どれを選べばいいの?
Microsoft Learnでは、それぞれ適した利用シーンが紹介されています。
私なりに整理すると、次のようになります。
IaaSが向いている
- OSを自由に設定したい
- 既存サーバーをそのまま移行したい
- 細かい設定まで管理したい
PaaSが向いている
- Webアプリを開発したい
- サーバー管理をしたくない
- アプリ開発に集中したい
SaaSが向いている
- 完成したサービスをすぐ利用したい
- メールやチャットを使いたい
- 管理の手間をできるだけ減らしたい
Microsoft Learnを読む前は、
「どれが一番優れているんだろう?」
と思っていました。
ですが学習してみると、
優劣ではなく、目的によって選ぶサービスが変わる
ということが分かりました。
AZ-900試験ではどう見分ける?
IaaS・PaaS・SaaSは、AZ-900でもよく出題されるテーマの一つです。
私も最初は名前だけ覚えようとしていたのですが、それだと問題になると迷ってしまいました。
Microsoft Learnを読みながら学習してみると、
「問題文の中で誰が何を管理しているか」を考える
ことがポイントだと感じました。
IaaSを選ぶ問題
問題文に次のような内容が書かれていたら、IaaSを疑うようにしています。
- OSを管理したい
- Windows Serverを構築したい
- Linuxを自由に設定したい
- サーバー設定を自由に変更したい
- オンプレミスのサーバーをそのまま移行したい
つまり、
サーバーそのものを自由に扱いたい
という内容ならIaaSです。
PaaSを選ぶ問題
PaaSは、開発者向けのサービスというイメージを持つと分かりやすかったです。
例えば、
- Webアプリを公開したい
- コードを書くだけで公開したい
- サーバー管理はしたくない
- 開発に集中したい
このようなキーワードがあれば、PaaSである可能性が高いと思います。
Azureであれば Azure App Service が代表的なサービスです。
私自身も個人開発ではVercelを利用していますが、
GitHubへPushするだけで自動的にデプロイされるため、
「サーバーを管理しないでアプリ開発だけに集中する」
というPaaSの考え方がイメージしやすくなりました。
SaaSを選ぶ問題
SaaSは比較的判断しやすい印象があります。
問題文で、
- メールサービス
- チャットツール
- Officeソフト
- 会計ソフト
- 経費精算システム
などが登場したら、
完成したサービスを利用するSaaSであることが多いです。
利用者はアカウントを作成して使うだけで、
システムの運用やアップデートはクラウド事業者が行ってくれます。
私はこう覚えることにしました
学習していて一番覚えやすかったのは、次の考え方です。
| サービス | 一言で表すと |
|---|---|
| IaaS | サーバーを借りる |
| PaaS | 開発環境を借りる |
| SaaS | 完成したソフトを使う |
この3つだけでも覚えておくと、
問題文を読んだときに判断しやすくなりました。
(模擬試験しか受けてないけど、機械翻訳の日本語がむずすぎてこれに当てはめるのが大変でしたが)
実務ではどのように使われる?
学習を進めながら、
「実際の現場ではどう使い分けるんだろう?」
という疑問もありました。
例えばWebサービスを開発・運用する会社では、次のような組み合わせになることがありそうです。
開発者はGitHubへコードをPushし、
Vercelが自動でデプロイを行います。
開発者はサーバー管理ではなく、
アプリケーションの開発に集中できます。
一方、社内では
- Microsoft 365
- Teams
- Outlook
などのSaaSを利用し、
社員同士のやり取りや文書作成を行うことも多いと思います。
さらに、
社内システムをクラウドへ移行する場合には、
Azure Virtual Machines(IaaS)を利用して、
既存のWindows ServerをそのままAzureへ移行するケースもあります。
このように、
一つの企業でも
- IaaS
- PaaS
- SaaS
を組み合わせて利用していることが多いようです。
まとめ
今回は、Microsoft Learnで学習したIaaS・PaaS・SaaSについて、自分なりに整理してみました。
最初は3つとも似たようなサービスに見えていましたが、
学習を進める中で、
「誰がどこまで管理するのか」
という視点で見ると違いが分かりやすくなりました。
私なりには、
- IaaS:サーバーを借りる
- PaaS:開発環境を借りる
- SaaS:完成したサービスを利用する
というイメージで整理すると覚えやすかったです。
AZ-900でも頻繁に出題されるテーマなので、
サービス名を暗記するだけではなく、
「どのような場面で利用されるのか」までイメージできるようにしておきたいと思います。
次回は、Azureの主要サービスについて学習していきます。
おわりに
本記事は、Microsoft Learnを読みながら理解した内容を、自分なりに整理したものです。
理解不足や誤りがありましたら、ぜひコメントで教えていただけると嬉しいです。
また、最新情報や詳細については Microsoft Learn の公式ドキュメントもあわせてご確認ください。