文系SEが考えるクラウドとは

[文系SEが考える仮想化とは](https://qiita.com/ok2/items/e57a6a7bfb4293c516fb)までで、既存の物理環境から仮想環境を作る技術の説明をしました。

今回紹介するクラウドとは物理的な制約がなくなった仮想環境を提供する仕組みについて説明していきます。

#お約束
以下の注意書きをよく読み、用法用量を守って正しくお使いくださいmm

- 文系SEが新入社員やIT業界初心者向けに執筆した記事です。
- 記載されている情報が必ずしも正しいとは限らないので、必ず自分でも調べ直してください。
- 日本生まれ日本育ちですが、日本語が怪しい箇所が多々あります。見つけた場合は、優しくご指摘いただければ幸いです。


#クラウドってなに？
>クラウドは、ネットワーク上でスケーラブルなリソースを抽象化、プール、共有する IT 環境です。
通常は、クラウド・コンピューティングを行う、つまりそのようなシステム内でワークロードを実行するために作成されます。
クラウドもクラウド・コンピューティングも、それ自体はテクノロジーではありません。
出典：https://www.redhat.com/ja/topics/cloud

『**クラウド**』とは『クラウド・コンピューティング』を行うIT環境です。

**『クラウド・コンピューティング』とは『インターネット』などの『ネットワーク』を経由して、
『コンピュータ（ハードやソフト）』『ストレージ』を提供するサービスです。**

そして、『クラウド・コンピューティング』で提供する『コンピュータ』『ストレージ』は、
物理的に離れた場所にあっても『**仮想化**』を用いて統合することができます。

つまり、『クラウド・コンピューティング』を実現させるためのIT環境である『クラウド』は『仮想化』技術で構築されます。

##仮想化とクラウドの違い
『仮想化』と『クラウド』は技術と環境という違いがありますが、より違いを明確にすることができます。

||仮想化|クラウド|
|:--|:--|:--|
|定義|技術|環境|
|目的|1つの物理ハードから<br>複数の仮想リソースを作成します|顧客からのよ要求により仮想リソースを集め（プール）、<br>自動で割り当て・提供します|
|ライフスパン|数年（長期間）|数時間〜数ヶ月（短期間）|
|コスト|CAPEX：高い、OPEX：低い<br>※CAPEX：資本コスト<br>※OPEX：運用コスト|プライベートクラウド<br>　CAPEX：高い、OPEX：低い<br>パブリッククラウド<br>　CAPEX：低い、OPEX：高い|
|スケーラビリティ|スケールアップ<br>※物理ハードのスペックをあげること|スケールアウト<br>※集める仮想リソースを増やすこと|
|ワークロード<br>※仮想マシン上のソフト|ステートフル<br>※環境がセッション情報を保持すること|ステートレス<br>※環境がセッション情報を保持しないこと|
|テナンシー|シングルテナント<br>※物理ハードの持ち主のみが使用すること|マルチテナント<br>※複数の顧客が共有・利用すること|

出典：https://www.redhat.com/ja/topics/cloud-computing/cloud-vs-virtualization

**『仮想化』と『クラウド』は、技術か、技術を元に構築した環境かの違いがあります。**

既に『仮想化』を実施している場合、仮想リソースをまとめてプールし、
管理および自動化ソフトウェアを使用してこれらをオーケストレーション（まとめて管理）し、
顧客向けのサイト、ないしアプリを展開することで、クラウドを作成することができます。

まとめると以下のITシステムを準備できれば、クラウドを作成したことになります。

- ネットワークを介して他のコンピュータがアクセスできる
- ITリソースのリポジトリ(一元管理できる保管庫)を含む
- プロビジョニング(環境の提供)とスケーリング(環境の処理能力の増減)をすばやく実行できる

##クラウドの種類
『クラウド』は環境であり、アプリケーションが実行される場所です。

環境の種類としては以下の4種類が挙げられます。

|パブリック|プライベート|ハイブリッド|マルチ|
|:--|:--|:--|:--|
|エンドユーザーが所有していないリソースから作成されたクラウド環境。他のテナントに分配できます。|主にエンドユーザー専用に定義されたクラウド環境。通常はユーザーのファイアウォール内部にあり、オンプレミスの場合もあります。|複数のクラウド環境。環境間での一定レベルのワークロードの移植性、オーケストレーション、管理機能を備えています。|複数のクラウド (パブリックまたはプライベート) を持つ IT システム。ネットワークで接続されていることも接続されていないこともあります。|

詳細については別途説明します。
クラウドは利用用途に応じて複数のプランが用意されている、と覚えておいてもらえれば幸いです。

###クラウドプロバイダー
『クラウドプロバイダー』は世界に数多く存在しますが、中でも有名なのは以下のプロバイダーです。
<img width="703" alt="スクリーンショット 2020-05-15 15.29.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635116/b6680fe1-fca0-2527-07f5-b2bf0a125c9d.png">

これらのプロバイダーは、裏で多くの物理リソースを保有しており、
それらを『仮想化』、統合することで『クラウド』という環境を提供しています。

##クラウドサービス
クラウド環境は以下の要素から成り立っています。

|要素名|提供サービス|ウェア分類|
|:--|:--|:--|
|アプリケーション|目的別のアプリケーション|(アプリ)ソフト|
|データ|アプリケーションに必要なデータ群|(アプリ)ソフト|
|ランタイム|アプリケーションの実行に必要なプログラム|(アプリ)ソフト|
|OS|システム全体を管理するソフト|(システム)ソフト|
|仮想化|仮想化技術に用いられるソフト|(システム)ソフト|
|物理サーバ|仮想マシン|ハード(仮想化)|
|ストレージ|ストレージプール|ハード(仮想化)|
|ネットワーク|VLAN|ハード(仮想化)|

これらを段階別に分け提供することを『**クラウドサービス**』といいます。
<img width="1082" alt="スクリーンショット 2020-05-19 22.39.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635116/4e1e7142-6e5b-f76e-1be1-20a10c39d2d9.png">

###SaaS: Software as a Service（サービスとしてのソフトウェア）
今までPCやスマホなどにインストールしていたアプリケーションを、
端末にインストールすることなくインターネット経由で利用できるようになります。
アプリケーションは『クラウド』にインストールされるため、
ユーザ側での管理を含めた運用が不要なこともメリットの1つです。
（例）Office製品　→　Office365 ...etc

###PaaS: Platform as a Service（サービスとしてのプラットフォーム）
そもそも『Platform』とはアプリケーションソフトが稼働するためのデータベースやプログラム実行環境など土台となる環境のことです。
『**PaaS**』はその土台となる環境を提供することで、構築の手間を省くことに貢献します。
『**SaaS**』との大きな違いは、アプリケーションを自前で用意する点です。
『**PaaS**』では自前のアプリケーションを『クラウド』に載せる事で、
インフラ周りの保守・運用を『クラウド』提供者に一任できることもメリットの１つです。
（例）Amazon Web Service、Microsoft Azure ...etc

###IaaS: Infrastructure as a Service（サービスとしてのインフラ）
物理リソースなどを自前で用意することができない、すぐに環境を構築したいなどの要望に合わせ、
プールしている仮想化リソースを提供するサービスです。
『**SaaS**』や『**PaaS**』などと違い、『OS』から決める必要があります。

コスト面については、既に用意されている『SaaS』に分がありますが、
構築や機能の自由度については『IaaS』に分があります。

上記3つのサービスのイメージをまとめる以下のようになります。
<img width="774" alt="スクリーンショット 2020-05-15 15.55.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635116/a476106b-30bf-40c9-5390-71505dd9a911.png">
『IaaS』はハードまで、『PaaS』はシステムソフト、『SaaS』はアプリケーションソフトまでが提供範囲です。
上でも記載したように、用途に合わせて各システムをどの『クラウドサービス』を使用するか選べることも『クラウド』の強みと言えます。

#まとめ

- 『クラウド・コンピューティング』とは『インターネット』などを経由して、仮想リソースを提供するサービスです。
- 『クラウド』とは『クラウド・コンピューティング』を実現させるための環境を指します。
- 『クラウド』は物理リソースを利用者が持っているかどうかで種類が分かれます。
- 『クラウドサービス』は『クラウド』の要素をどこまで利用するかで種類が分かれます。

#最後に
クラウドといっても人それぞれイメージが違うと思います。

クラウドについて話し合う場合は事前に認識を合わせておくとスムーズに事が進むかと思います。


#参考
[クラウドを理解する](https://www.redhat.com/ja/topics/cloud)
[《図解》いまさら聞けないクラウド用語： SaaS、PaaS、IaaSってどういう意味？そしてその違いとは？](https://data.wingarc.com/saas-paas-iaas-11087)