どうも、フリーランスエンジニアのMakotoです。
今回は、クラウドのサービスモデルの違いについて解説します。
仮想マシンなどAzureのサービスを利用する時に「どのサービスモデルに該当するのか」を理解することはそのサービスの責任範囲を理解することにも繋がります。
AZ-900試験でも問われやすい内容ですがその特徴と違いを理解すれば点数を稼ぎやすい分野だと思いますので、ぜひ最後までお読みください。
サービスモデルとは
私たちユーザーが利用するアプリケーション、例えば、Amazonのようなショッピングサイト、X (Twitter) やFacebookなどのSNSなどでは普段はあまり意識しませんがその裏側にはサービスを支える基盤(インフラストラクチャ)やソフトウェア群があります。
- サーバ
- ストレージ
- ネットワーク
- OS
- データベース など
クラウドを利用する場合、これらアプリケーションを動かすための基盤のうち「何をサービスとして提供するのか」はサービスモデルとして次の3つに分類されています。
- IaaS
- PaaS
- SaaS
それぞれの単語にあるaaSは「as a Service」の略で「サービスとして」という意味です。また、頭文字が何をサービスとして提供するのかを表しており
- I:インフラストラクチャー
- P:プラットフォーム
- S:ソフトウェア
を表しています。
FaaSなどうしろにaaSがついた言葉が他にもいくつかありますが、アメリカ国立標準技術研究所(NIST)が定義しているサービスモデルはIaaS/PaaS/SaaSの3つです。AZ-900でもこの3つが試験範囲として明示されています。
サービスモデルの違い(図解)
まず、次の図を見てください。
オンプレミス/IaaS/PaaS/SaaSごとにどこまでがクラウド事業者から提供され、どの部分を利用者が管理すべきかを表しています。
WindowsServerやLinuxなどOSを動かすための仮想マシン、ネットワーク、ストレージなど基本的な基盤部分に加えて、ミドルウェア、ランタイム、アプリケーション、データなどレイヤー構造(層)で表現される点をイメージしておくと読み進めやすいと思います。
IaaSとは?(Infrastructure as a Service)
IaaSは、イアース/アイアースと読みます。(私はイアース派です)
サーバやストレージ、ネットワークなどの物理的なハードウェア資源や仮想化を提供するサービスです。
例えば、仮想サーバなどのコンピューティング機能、ディスクや共有サーバなどのストレージ機能、ルータやファイアウォールなどのネットワーク機能が提供されます。
また、仮想サーバではWindowsまたはLinuxのどちらかのOSを選択することができます。利用者がOSをインストールするのは煩わしいため、OSイメージもクラウド事業者から提供されます。
Azureには次のようなIaaSのサービスがあります。
- Virtual Machines(仮想マシン)
- Virtual Machine Scale Sets(仮想マシンスケールセット)
- Azure Storage(仮想マシンのディスク)
- ロードバランサ
PaaSとは?(Platform as a Service)
PaaSは、パースと読みます。
IaaSで提供されるインフラ部分に加えて、アプリケーションを動かすためのプラットフォーム一式を提供するサービスです。
例えば、ブラウザからのHTTPリクエストに応答するIISなどのWebサーバ機能、構造化されたデータを保存するSQLServerなどのデータベース機能、Javaなどのプログラムを動かすソフトウェア機能が提供されます。
これらアプリケーションを動かすために必要でOSの機能にないものを「OSとアプリケーションの中間」という意味でミドルウェアと呼びます。(補助的なソフトウェアをランタイムと呼ぶこともあります)
アプリケーションを動かすために必要でOSの機能にないもの
Webサーバやデータベースなどのソフトウェアを指す
プラットフォームと聞くと初めはなんだかよくわからないかもしれませんが、OS、ミドルウェア、ランタイムなどアプリケーションの土台となっている部分をひっくるめてプラットフォームと呼んでいる、という理解で問題ないと思います。
PaaSのメリットについて考えてみましょう。
例えば、PHPとSQLServer、IISを使ったWebアプリの構築を考えた場合、オンプレミスやIaaSの場合は、OSの各種設定をした後にPHP、SQLServer、IISをそれぞれ改めてインストールする必要があります。これら開発に必要な環境が予め用意されているので、開発者は煩わしいインストールや設定作業から解放され、開発に専念できるというメリットあります。
PaaSを利用するとOSやミドルウェアの管理から解放されて開発に専念できる
Azureには次のようなPaaSのサービスがあります。
- App Service
- SQL Database
- Cosmos DB
- Azure Backup
SaaSとは?(Software as a Service)
SaaSは、サース/サーズと読みます。(私はサース派です)
アプリケーションそのものを提供するサービスです。
新たにアプリケーションを開発することなく、契約すれば使いたい機能をすぐに使い始めることができる点がメリットです。
身近なものだと、SaaSには次のようなサービスがあります。
AzureブランドとしてのSaaSの提供はありませんが、特徴についてはAZ-900試験で問われます。
- Microsoft 365 (旧 Office 365)
- Gmail
- Dropbox
サービスモデルの選び方
冒頭に示した図解を再掲します。
従来のオンプレミスの形態では下のレイヤーから上まですべてを利用者が調達・設定・管理する必要がありました。そのうち、いくつかの部分をクラウド事業者が提供・管理してくれるので、この図でいうと右に行くに連れて利用者側の負担が減りメリットが大きくなります。
一方で、IaaSを選択した場合はOSより上のレイヤーを利用者が設定・管理する必要がありますが、OSの設定やインストールするソフトウェアなど利用者が自由にカスタマイズできるというメリットもあります。(左に行くに連れてカスタマイズ性が高い)
つまり、管理負荷軽減とカスタマイズ性はトレードオフの関係にあり、どちらか一方を優先すればもう片方のメリットは享受しにくくなります。
一般的には、オンプレミスにある既存システムをクラウドに移行する場合、既存の構成や設定をそのまま移行しやすいIaaSが選択される傾向にあります。ただ、アプリケーションを動かすサーバをIaaSに移行する場合であっても、バックアップや監視など運用に関するサービスはPaaSに移行しやすいので積極的に検討すべきです。
新規で何かしらの機能を使いたい、システムを構築する場合はSaaS/PaaSを検討します。世の中にすでにあるサービスで要件が満たせるのであればSaaSを利用するのが手っ取り早いですし、アプリケーションを新規開発する場合でもPaaSを組み合わせて利用すれば運用負担は大きく軽減できるでしょう。
共同責任モデル
AZ-900試験では利用者とクラウド事業者間での責任境界についても問われます。クラウド事業者はAzureの場合はMicrosoftですね。
利用者とクラウド事業者とで誰がどの部分の責任を持つのか定めたものを「共同責任モデル」と呼びます。「責任共有モデル」と呼ぶこともあります。
下3つの物理的なレイヤーはわかりやすいですね。
例えば、故障した物理サーバの交換、データセンターのセキュリティ対策などはMicrosoftの責任のもと行われます。利用者が責任を負うことはありませんが、物理サーバの故障により影響を受けることはあるので冗長化など可用性を担保するための設計観点は重要です。
上3つのレイヤーもイメージしやすいかと思います。
ID/PWやアクセス権、PCやスマホなどのデバイス、データの管理など「それぞれのユーザーがアプリケーションを利用するために必要なもの」はすべて利用者側の責任となります。
ややこしいのは中間層の「共同責任」の部分です。
例えば「アプリケーション」では、プラットフォームの仕組みはMicrosoftが責任を持ちますが、暗号化など設定の部分は利用者側の責任です。
AZ-900の試験では中間層の「共同責任」の部分は問いにくいと思いますので、利用者側の責任となる箇所、クラウド事業者側の責任となる箇所の2点をしっかり理解していれば問題ないと思われます。
まとめ
今回はサービスモデルの違いと共同責任モデルについて解説しました。サービスモデルの比較をまとめると次の表のような形になります。
サービスモデル | カスタマイズ性 | 構築・運用の容易性 |
---|---|---|
IaaS | ◎ | △ |
PaaS | 〇 | 〇 |
SaaS | △ | ◎ |
試験ではどのサービスがIaaS/PaaSのどれに該当するか問われる場合があります。それぞれのサービスモデルの特徴と合わせてIaaS/PaaSの代表的なサービス名を覚えておきましょう。
- 利用者に提供される機能が「サービスモデル」で定義されている
- クラウドには3つのサービスモデルがある
- IaaS(仮想マシン、ストレージ、ロードバランサなど)
- PaaS(App Service、SQL Databaseなど)
- SaaS
- 誰がどの部分の責任を持つのか「共同責任モデル」で定義されている