分かっているようで分かっていないインフラ、AWS

# インフラの主な形態
## 種類について
クラウド、オンプレミス（オンプレ）の2つに分けられる。

## クラウドとは
クラウドサービスプラットフォームからインターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソースをオンデマンドで利用することができるサービスの総称で、必要なときに必要な量のリソース(メモリなど)へ簡単にアクセスできるようになっている。
クラウドの代表的なものとして、 `SaaS` （Software as a Service） / `PaaS` （Platform as a Service）/ `IaaS` （Infrastructure as a Service）等があげられる。
これらに関しては後述する。


### クラウドのメリット
- 導入コストがかからない
- 導入が早い
- ランニングコストが安い
- ストレージの拡張性が高い
- スマホデバイスから簡単にアクセスできる
- オンライン環境さえあればどこでも使える


### クラウドのデメリット
- セキュリティに不安がある
- システム環境をベンダーに依存する
- 場合によってはコストメリットの逆転もありえる
- カスタマイズ性が低い
- 他システムとの統合性が低い
- オンライン環境がなければ利用できない

### クラウドのまとめ
コストが比較的小さいこと、どこでも利用できる使い勝手のいい環境である。
が、デメリットももちろんあるため、多方面に目を向けるべき。

## オンプレミスとは？
ITシステムを構築する際にサーバー、ネットワーク、ソフトウェアなどの設備を自社で導入・運用するという意味。


### オンプレのメリット
- カスタマイズが自由
- セキュリティが安心
- 社内システムとの連携・統合がしやすい


### オンプレのデメリット

- 初期コストが必要
- 構築までに時間がかかる
- 自力で障害に対応する必要がある

### オンプレのまとめ
自由度は高いので、方法が変わっても対応しやすいが、コストがかかり、やるべきことは多い。


## 比較
| | オンプレミス | クラウド |
|:-----------|:------------:|:------------:|
| コスト形態 | 資産 | 経費 |
| コスト | サーバーやソフトウェアライセンス、ネットワーク機器の購入など初期費用が高額。数年後の使用量を想定して初期投資が必要。 | 初期費用無料が一般的。低コストでスタートでき、必要な時に必要なだけサーバー増減が可能なため、コストを最適化しやすい。 |
| インフラ調達期間 |機器調達に、数週間から数ヵ月かかる。 | アカウント登録後すぐに利用できる。Web上から、サーバー台数の増減やスペック変更などが行える。|
| カスタマイズ | 自前で構築するため、要望にあわせて自由にカスタマイズ可能。 | IaaS型クラウドの場合、比較的自由度高く使える。 |
| ネットワークセキュリティ | 自社内の閉じたネットワーク環境下でシステム構築・運用できるため安心。 | 他のユーザーと物理的に分かれたプライベートネットワーク(VLAN)環境を利用できるため安全。 |
| 既存システムとの連携 | 同一ネットワーク内にある社内システムとの連携や統合などの自由度は高い。 | インターネット利用を前提とした場合、連携不可のケースもある。閉域網接続などインターネットを経由せずに、自社システムと連携するハイブリッド利用も増えている。 |
| 障害対応 | 自社で復旧作業を行う。場合によって現地へ駆けつける。|クラウド事業者が復旧作業を行うため、インターネット越しに復旧を確認できる。 |
（参照：https://www.idcf.jp/cloud/column/onpre_to_cloud.html）

## ハイブリッドクラウドとは
クラウドサービスとオンプレを選択して組み合わせ、柔軟で最適なインフラ環境を構築・運用するという考え方のこと。

# XaaSとは
`as a Service` という点が共通する各サービス（SaaS、PaaS、IaaS、HaaS）のこと。

## Infrastructure as a Service (IaaS)
サーバー（インフラ）を提供するクラウドサービス。インフラだけを担うサービスのこと。
サーバー、ネットワークなどインフラ部分を提供してくれるので、 その上に御社の必要なOSやミドルウェア、アプリケーションをインストールして利用する。

ex) Microsoft Azure


## Platform as a Service (PaaS)
開発環境を提供するクラウドサービス。ミドルウェアまでを担う。
サーバーなどのインフラ設備に加え、OSやミドルウェアまで提供する。
データベース環境やアプリケーション実行環境などを形成することができるため、スムーズにソフトウェア開発やアプリケーション開発を行うことができる。

ex) heroku, Google App Engineなど


## Software as a Service (SaaS)
ソフトウェアを提供するクラウドサービス。アプリケーションまでを担う。
なんの準備もなく使用することができる。

ex) Circle-CI, Salesforce, Gmail, Hotmailなど

# AWSについて
## AWSとは
クラウドサービスの筆頭と言えるサービス。
サーバは `EC2` 、ネットワークは `VPC` といったサービスで構築することが可能。
`Amazon Web Service` の略。

## EC2とは
仮想サーバを用意するためのサービス。
ブラウザ上で何回かクリックするだけで、簡単にインスタンスが立ち上がる。
用途によって最適化されたインスタンスタイプが用意されている。
例えば、計算に特化したC系や汎用タイプのM系がある。
`EC2` は`ECC` (Elastic Compute Cloud)の略。

## RDSとは
リレーショナルデータベース。
`Amazon Aurora` 、 `Oracle` 、 `Microsoft SQL Server` 、 `PostgreSQL` 、 `MySQL` 、　`MariaDB` などからデータベースエンジンを選択できる。
`RDS` は `Relational Database Service` の略。


## サブネットとは
大きなネットワークの中にある小さなネットワーク。
これにより、インターネットからのアクセス制限をかける。
サブネットはリージョン内でAZ(アベイラビリティゾーン)をまたげない


## リージョンとは
地域に紐づくデータセンターのこと。
AWSにはリージョンと呼ばれるAWSの拠点があり、EC2とVPCを利用するときにはリージョンを選ぶ必要がある。
距離が離れているほど通信に時間がかかるため、サービスを提供する地域に合わせてリージョンを決定する。
選ぶリージョンによって利用料金は変わる。



## AZ(Availability Zone)とは
リージョン内にある物理的に離れた個々のデータセンターのこと。
1つのリージョンに複数のそれぞれ独立したデータセンターがあり、このデータセンターを `アベイラビリティーゾーン` という。
またAZのことをロケーションとも呼ぶ。

## VPCとは

AWS専用の仮想ネットワークのこと。仮想プライベートクラウド。
ルータやゲートウェイなどのネットワーク機器を仮想的に用意し利用者が占有可能な仮想プライベートネットワークを構築するためのサービス。
VPCは他の仮想ネットワークから遮断されていて、VPC内にIPサブネットを作成し、その中に仮想サーバーの `EC2` やデータベースサーバーの `RDS` といったAWSのリソースを配置することができる。
VPCはリージョン内でAZ(アベイラビリティゾーン)をまたぐことができる。
`Virtual Private Cloud` の略。


## 基本的な構成
VPCには様々なコンポーネントが含まれていて、それらを組み合わせることで、自由にネットワーク環境を構築できる。 



### `IGW(Internet GateWay)`

 
VPCをインターネットに接続できるようにするコンポーネント  
###  `Subnet`  

VPCという大きなネットワークの中に小さいネットワーク(サブネット)の集まりを作ることができるコンポーネント  
### `Route table `

ネットワークの経路を設定するコンポーネント。サブネット内の通信がどの宛先のネットワークに対して、どのコンポーネント（IGWとかEC2とか）に転送されて欲しいかを設定する  

### `Elastic IP`  
サーバーを再起動しても同じIPアドレスを割り当てることができる。
EC2のインスタンスに対して固定IPを割り当てるコンポーネント。

### `NGW(NAT GateWay)`  

`NAT` (Network Address Translation) とはプライベートIPをグローバルIPに変換するもので、この変換を行うためのコンポーネント。