クラウドとIaaS、PaaS、SaaS

## IaaS、PaaS、SaaSって何さ
#### ざっくり言うと...
- クラウドサービスの利用形態の分類
    - IaaS: Infrastructure as a Service
    - PaaS: Platform as a Service
    - SaaS: Software as a Service

- IaaSはハードウェアの保守管理を中心に行い、PaaSは開発環境を提供する為のミドルウェア、サーバOSまでを運用管理し、SaaSはエンドユーザが利用するアプリケーションまで運用管理をする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765079/3d3bfb56-f5fc-d3a6-94fa-b63cec731d4a.png)

#### そもそもクラウドって何
クラウドを話す前に知っておく必要があるのが「オンプレミス」というもの。
オンプレミスって？
>オンプレミスとは、サーバーなどのハードウェアやIT機器、ファイルソフトなどのソフトウェアを自社で保有し、構築・管理する形態です。略して「オンプレ」または「自社運用型」などと呼ばれます。従来、大半の企業はこの方法でシステム構築・運用を行っていましたが...（略）

参考：[オンプレミスとクラウドの比較][ntt]

要するにサーバーを利用したいひと(企業でも個人でも)が自分でサーバーを用意していたってことだね。

じゃあクラウドって？
>クラウドとは、外部のクラウド事業者が提供するITサービスをインターネット経由で利用するシステム運用方法です。オンプレミスとは異なり、システム構築用の各種リソースを自社で用意する必要はありません。サーバー設備をはじめ、システム構築に必要なハードウェアやソフトウェアはすべて事業者側から提供されます。
基本的には、自社で利用している各種データもクラウド上に保存されます。したがって従業員はインターネット環境さえあれば、どこからでも自社システムへアクセスし作業可能です。

要するにサーバーを自前で用意しなくてもインターネットのサービスから使えるよ。というもの。

それぞれのメリット・デメリット
- オンプレミス
    - メリット
        - セキュリティが担保される。(自社ネットワークに閉じることができるから)
        - カスタマイズ性に長けている
    - デメリット
        - 初期費用が高い
        - サーバーのパフォーマンスをあげたいときに時間と手間がかかる
- クラウド
    - メリット
        - 必要最低限の用意で済むので費用が抑えられる
        - 拡張したい際も設定が楽(時間もかからない)
    - デメリット
        - 事業者側から提供されたサービスに依存するのでカスタマイズには不向き
        - インターネットを介すのでセキュリティの対策は必要

#### 話を〇aaSに戻す。
IaaS、PaaS、SaaSについてひとつひとつ確認していく。

##### IaaS（Infrastructure as a Service）

>「IaaS」とはクラウドにある、ネットワークやサーバ（CPU・メモリ・ストレージ）などのコンピューティングリソースを利用するサービスです。従来ならば自社で情報システムのインフラ部門が購入、構築し、運用する必要があったITシステムをクラウドサービスを利用することで必要なときに必要なだけ利用できます。

ほぼ上にあったクラウドの説明と一緒。メリットデメリットも同じようなもの。
サーバーなどのハードウェアの管理はクラウドサービスを提供する側が行うので経年劣化などの心配も自身の関心事ではなくなる。

代表的なサービスにはAWSやAzureなどがある。
AWSやAzureで提供されるIaaSには以下のようなものがある。
- コンピューティング
    - 仮想サーバ、コンテナなど
        - Amazon EC2（仮想サーバ）
        - Amazon Elastic Container Service（Dockerコンテナを実行・管理）
        - Virtual Machines（仮想サーバ）
        - Azure Container Service（コンテナ(Docker)）
- ネットワーキング
    - 仮想ネットワーク、DNSなど
        - Amazon VPC
        - Elastic Load Balancing
        - Virtual Network（Azure内の仮想プライベートネットワーク）
        - Azure DNS
- ストレージ
    - オブジェクトストレージ、ファイルストレージなど
        - Amazon S3（オブジェクトストレージ）
        - Amazon Elastic File System
        - Azure Blob Storage（オブジェクトストレージ）
        - Azure NetApp Files（ファイルストレージ）

##### PaaS（Platform as a Service）

>PaaS（Platform as a Service）とはクラウドにあるプラットフォームが利用できるサービスです。大規模なデータセンターに、アプリケーションを稼動するためのネットワーク、サーバシステム、OSやミドルウェアなどのプラットフォームが用意され、企業ユーザがそのプラットフォーム上で開発を行うことができます。

IaaSよりもデフォルトで提供されるサービスが多い。

*PaaSとIaaS*

>PaaSとIaaSの違いは階層を見ると理解がしやすいです。図（PaaSの利用と提供例）で、「ミドルウェア」「OS」「データベース」などの部分がPaaSです。エンジニアやプログラマ以外の人には区別はつきにくい部分ですが、実際にアプリケーション開発の業務に携わっている人や関係している人であれば、API（Application Programming Interface）や、開発環境にインストールされているデータベース機能やオブジェクトストレージなどのミドルウェアはサービス提供側が用意しているため、利用側はインストールしたり、ゼロベースで機能開発をすること無く利用できます。従って自社サービスで利用するための、機能開発に注力できる点で開発工数削減のメリットがあり、利用している人たちが多いことが特徴です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765079/11106fe6-3b92-0081-4387-5dbf1778da1f.png)


[SaaS,PaaS,IaaSとは？クラウドサービス定義の違いを比較し読み方や意味などを解説][SaaS,PaaS,IaaSとは]

以上のことからPaaSではクラウド利用者が自身でミドルウェアなどの設定をする必要がない(AWSやAzureの備わっている機能を使える)といった特徴がある。

PaaSも代表的なサービスにはAWSやAzureなどがある。
AWSやAzureで提供されるPaaSには以下のようなものがある。(1例に過ぎない)

- AWS
    - ビジネスアプリケーション
        - Alexa
        - オンライン会議
    - データベース
        - RDB
        - NoSQL DB
    - 開発者ツール
        - Gitリポジトリ
        - コードとデプロイ自動化
- Azure
    - 開発者向けサービス
        - Visual Studio
        - アプリケーション監視
    - データ
        - SQL Server互換データベース
        - NoSQLデータベース
    - インテリジェンス
        - チャットボット構築
        - コルタナ

##### SaaS（Software as a Service）

SaaSとWebサービス

>Webサービスとは、ソフトウェアの提供する機能やデータをWeb技術であるプログラムを通じて提供するサービスです。例えばプログラムAPIなど、アプリケーション開発のときに利用するサービスなどのことを示します。Webアプリケーションはインターネット経由でWebブラウザでWebサイトを閲覧するように利用するサービスのことです。ECサイトやオンラインバンキング、SNSやゲーム、ASPサービスなども含まれます。一方でSaaSは、基本的にWebを通じてソフトウェアやアプリケーションを利用することをクラウドサービスとして提供されていることから総称となっています。


|SaaSで提供されている名称|説明|提供例|
|:--|:--|:--|
|Webアプリケーション|Webを介して「人」が利用するサービスを提供|ECサイト、オンラインバンキングなど|
|Webサービス|Webを介して「プログラム」が利用するサービスを提供|API、GitHub（ソースコード管理共有ツール）など|
|Webシステム|Webサービスを提供するための仕組み|Webサーバ、APサーバ、DBサーバなど|
|Webページ|Web上にある文書|Google検索で探したときに見ているページ単体|
|Webサイト|特定のドメイン配下にあるWebページの集まり|企業のコーポレートサイト|

[SaaS,PaaS,IaaSとは？クラウドサービス定義の違いを比較し読み方や意味などを解説][SaaS,PaaS,IaaSとは]

上記のようにSaaSの概念は広いが、基本的にハードウェアからアプリケーションまでをクラウドサービスを提供する側が用意しているものとなる。
ユーザー(アプリケーションを使用する人や開発者)はSaaSを通してアプリケーションやサービスを利用することができる。






#### 参考まとめ
- [SaaS,PaaS,IaaSとは？クラウドサービス定義の違いを比較し読み方や意味などを解説][SaaS,PaaS,IaaSとは]
- [オンプレミスとクラウドの比較][ntt]


[SaaS,PaaS,IaaSとは]: https://www.itmanage.co.jp/column/saas-paas-iaas/

[ntt]: https://www.ntt.com/business/sdpf/knowledge/archive_67.html#:~:text=%E5%88%87%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82-,%E3%82%AA%E3%83%B3%E3%83%97%E3%83%AC%E3%83%9F%E3%82%B9%E3%81%A8%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%81%AE%E9%81%95%E3%81%84,%E4%B8%8A%E3%81%A7%E5%88%A9%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82