クラウドを実現する技術

出展：[イラスト図解式 この一冊で全部わかるクラウドの基本 第2版](https://www.amazon.co.jp/gp/product/4797399996?pf_rd_p=3d322af3-60ce-4778-b834-9b7ade73f617&pf_rd_r=KPDB9JZDVG3WD3YJFAHX)

# サーバの仮想化技術
・１台の物理サーバのCPUやメモリ、ストレージなどのハードウェアを論理的に分割して、複数の仮想サーバに割り当てる技術
・個々の仮想サーバで、物理サーバと同様にOSやアプリケーションを動かすことができる
・仮想サーバの1台がウィルスなどによる脅威にさらされた場合でも、それ以外の仮想サーバが影響を受けることはない
・3種類のサーバ仮想化技術
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/e9e5a1ad-23b6-8d66-ab57-85639a49dd8f.png)

#コンテナ技術
・1つのOS環境でアプリケーションを実行するための領域（ユーザー空間）を複数に分割して利用するもの
・1つのホストOS上でマルチOS環境が実現できる
・仮想化にともなうオーバーヘッドが少ないため高速で起動や停止ができ、性能が劣化することもほぼありえない
・ハイパーバイザー型とコンテナ型のちがい
【ハイパーバイザー型】
　・OS環境を丸ごと仮想化する
　＜メリット＞
　・仮想サーバごとにOSが選択できる
　・仮想サーバごとに完全に分離されていて、ある仮想サーバがサイバー攻撃を受けても
　　他の仮想サーバには被害が及ばない
　＜デメリット＞
　・仮想サーバごとにOSが必要なので、CPU、メモリ、ストレージなどのハードウェアの消費量が多い
　・仮想サーバの起動に時間がかかる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/6a503661-9959-26db-804b-2d3707687524.png)
　【コンテナ型】
　・1つのOSの環境のうえでアプリケーションを実行するための領域を複数に分割して利用する
　＜メリット＞
　・1つのホストOS上で、複数のOSを同時に利用できる
　・他のコンテナへの複製性や移植性にすぐれている
　・仮想化環境のうえでさらにOSを動かすといった必要がないため、個々のコンテナが必要とするハードウェアリソースが少なくて済み、起動も高速
　＜デメリット＞
　・ホストOSとコンテナはカーネルを共有するため、LinuxカーネルのうえでWindowsコンテナを動かすようなことはできない
　・1つのホストOS上で複数のコンテナが起動しているため、あるコンテナがサイバー攻撃を受けると、他のコンテナも危険にさらされる可能性がある
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/3c155018-6f5c-1416-b316-79008c6ac25c.png)

#分散処理技術
・データを複数のサーバに分散して並列で処理する
・クラスタリング：
　　複数のサーバを組み合わせて1つのコンピュータのようにみせる

#データベース技術
・RDB（Relational Database）：
　　複数のデータを行と列の表形式で表現し、複雑なデータの関係性を処理できるようにしたデータベース
・NoSQL：
　　RDBのようなリレーショナルデータベースではないデータベース
　　大量のデータを分散させて高速に処理する分散データベース
　　キーバリュー型／カラム志向型／ドキュメント指向型／グラフ型

#ストレージ技術
・ストレージ：
　　データやプログラムを保存する記憶装置のこと
・ブロックストレージ：
　　ストレージの論理ボリュームを決まったサイズに分割した、ブロック単位でアクセスできるストレージ
　　高速なデータ転送が可能
　　低遅延が求められるデータベースなどで利用される
・ファイルストレージ：
　　ファイル単位でのストレージアクセスが可能なファイル共有の機能を備えたストレージ
　　NAS（Network Attached Storage）もファイルストレージに該当する
　　主にファイルサーバで使用されており、アクセス制御や属性情報の管理がしやすい
・オブジェクトストレージ：
　　データをオブジェクト単位であつかう
　　OSやファイルシステムに依存することなく、データの格納やオブジェクトへのアクセスができる
　　オブジェクトストレージへのアクセスには、HTTPプロトコルをベースとしたREST（REpresentational State Transfer）形式のAPIを利用する
　　更新頻度が少ないデータや大量のデータの保管、長期保存などで利用される

#ネットワークの仮想化技術
・VLAN（Virtual LAN）：
　　1つの物理的なネットワークを、複数の論理的なネットワークに分割する技術
　　論理的に分割したネットワーク同士はルーターを介さなくてはやり取りできなくなる
　　⇒組織単位でネットワークを分割すれば、組織内に限定したデータのやり取りを行うことができる
　　クラウドサービスやデータセンター間でVLANを利用することで、プライベートな環境を構築することができる
・VPN（Virtual Private Network）：
　　インターネットのような不特定多数が利用するネットワークの上で、仮想的に専用線のようなプライベートネットワーク接続を行う技術
　　IPsecというプロトコルを用いてクラウドとユーザ企業のオンプレミスシステム間をインターネットを介して接続する
　　IPsecの使用により、通信する拠点の認証、通信データの暗号化が行われ、拠点間の安全な通信が実現する
・NVF（Network Functions Virtualization）
　　ネットワーク機能をソフトウェアで実現し、仮想サーバ上で構築する技術
　　ルータやゲートウェイ、ファイアウォール、ロードバランサーなどのネットワーク機器の機能を、仮想サーバ上にアプリケーションソフトとして実装する

#SDN（Software Defined Networking）
・従来はネットワークごとに持っていた通信の転送機能（データブレーン）と制御機能（コントロールブレーン）を切り離し、制御機能をコントローラに論理的に集中させて、データの流れをソフトウェアで定義する
・物理ネットワークは抽象化され、1つの物理ネットワークのうえに、コントローラごとに複数の仮想ネットワークを構築することができる
・スイッチやルータなどのネットワーク機器は、OS、ミドルウェア、アプリケーションが統合された垂直統合型のアーキテクチャから、各機能レイヤーを分離してオープンなインターフェースでつなぐアーキテクチャーへとシフトする
・ネットワークの稼働状況や運用に合わせて、ソフトウェアによって柔軟にデータの転送経路の変更が行えるようになる

#エッジコンピューティング
・クラウド側ではなくスマートフォンなど末端のデバイスに近いエリア（エッジ側）にサーバを分散配置し、そのサーバで末端のデータを処理するコンピューティングモデル
・末端で分散処理を行う
・クラウドサービスの障害やネットワーク遅延などの影響を回避し、エッジ側での低遅延によるリアルタイムなデータ処理や高信頼性が要求されるケースに効果を発揮する

#ハイパーコンバージドインフラ
・ソフトウェアベースのサーバやネットワーク、ストレージなどのコンポーネントを統合した製品
・サーバやネットワーク、ストレージをモジュール単位で構成し、ソフトウェアで全体のシステム構成の設定や構成方法を変更できるなど、運用効率にすぐれる
・共有ストレージは持たずに、複数のサーバを統合して、サーバ内蔵のストレージで仮想的な共有ストレージを構築できる

#GPU（Graphics Processing Unit）
・画像処理を高速に行うために開発された
・数十個～数千個ものコアを持ち、同じ処理を複数のコアに割り当てて並列処理を行うことができるため、大量の単純な計算を処理するのを得意とする
　　cf）CPUはOSのような複雑なプログラムの処理に適する
・大量の単純な計算が要求されるディープラーニングに適する

#サーバレスアーキテクチャ
・ユーザ（開発者）がマイクロサービスによって構成されたフルマネージドのクラウドサービスの各コンポーネントを組み合わせ、かつAPIを経由して連携することで、独自のアプリケーションやサービスの開発、システム構築をサーバの存在を意識することなくおこなうこと（FaaS（Function as a Service））
　　cf）1つのアプリケーションを小さなサービスの集合体として構築する手法