【初心者向け】インフラの基礎からAWSを学ぶ①

# 前提
・Udemy動画でAWSの勉強をしているのですが、そのメモ書きとなります。

# インフラの基礎知識
エンジニアの現場では当たり前のように使われるワードの定義を、改めて学び直しました。
何となく知っているつもりになっていたけれど、人に説明してと言われると難しかったりする。。

#### インフラとは？
・システムやサービスの土台となるもの。
・主にサーバーとネットワークで構成される。

#### サーバーとは？
・ユーザー（クライアント）に対してサービスを提供する側のコンピュータのこと。
・Webサーバー、DBサーバーなど、役割によって名前が変わってくる。

#### クライアントとは？
・サーバーにサービスを依頼し、情報を受け取る側のコンピュータのこと。
・クライアントと言われたら、個人が扱うパソコンやスマホをイメージすれば、大体意味が通じると思う（文脈によっては変わるかも？）

<strong>※サーバーもクライアントも、全てコンピュータ。コンピュータは与えられる役割によって呼び名が変わる。文脈によって微妙に意味が変わってくる厄介な言葉なので、注意しましょう</strong>


#### ネットワークとは？
・複数のコンピュータを繋いで、データのやり取りを行えるようにする仕組み

#### サブネットとは？
・ネットワークをいくつかに分割したもの。ネットワークの中にある、小さなネットワーク。
・サブネットごとで、役割を分けたりすることができる。
・（例）サブネットAは、インターネットからアクセスできるよう設定し、Webサーバーを置く。サブネットBは、インターネットからはアクセスできず、ユーザーからデータを直接見れないように設定し、DBサーバーを設置する。このように、サブネットは、ユーザーに見せたいものを見せて、見せたくないものを隠すなど、セキュリティの設定などで使える。

#### クラウドとは？
・ネットワークを通してコンピューターリソースを利用する仕組みのこと。
・個人的には、クラウドと言われたら雲の中にある場所とか物（要するにサービス）を、ネットワークという紐でひっぱてきて使うイメージでいる。
・AWSはクラウドを利用したサービス。
・メリット：手早く準備できて、初期コストが低い。
・デメリット：クラウドを提供するサービス側の影響が強く、時にその都合に降り回れされる。最終的にかかるコストが予想しづらい。

#### オンプレミスとは？
・インフラを１から自分で用意して、自分で管理・運用すること。（例）サーバーとなる物理的なパソコン（据え置き型の）を用意し、そのパソコンにOSとか必要なソフトをインストールし、ネットワークと繋げられるように設定し、、、など、１から準備すること。
・メリット：自由度が高く、外部からの影響も最小限に済む。
・デメリット：準備が面倒で、初期コストがかかる。

#### ビットとバイト
・ビットとは、コンピュータで扱う数値の最小単位。0と１の２進数で表現される。
・8ビット=1バイト

#### IPアドレスとは？
・ネットワーク上でコンピュータを識別するためするための、インターネット上の住所となる数値。
・ネットワーク上では重複しない数値。
・32ビットの整数値（２進数）
・0と1で表現する２進数のままだと人間には分かりにくいので、8ビット区切りで４つに分け、10進数に変換している。
・IPアドレスの範囲は「0.0.0.0」〜「255.255.255.255」。どうして255が最大なのかは、8ビットの２進数で表現できる最大値が「11111111」で、これを１０進数に変換すると255になるから。
・例）2進数「10101100 00010100 00000001 00000010」→10進数「172.20.1.10」
　参照：[2進数、8進数、10進数、16進数相互変換ツール](https://hogehoge.tk/tool/number.html)

#### パブリックIPアドレスとプライベートIPアドレスの違いは？
・パブリックIPアドレスは、インターネットに接続する際に使うIPアドレス。
・ICANNというアメリカの非営利団体が管理している（IPが重複していると接続できなくなるから）
・一般のユーザーは、プロバイダーやサーバー事業者経由でIPを借りる（AWSからも借りられる）

・プライベートIPアドレスは、インターネット上で使わないIPアドレス。
・社内のネットワークなどで使われる。




# AWSについて
#### AWSとは？
・Amazon社が提供するクラウドサービス。インターネット上でいろいろできるサービスを、無料〜有料で提供している（本当に色々）。１００以上のサービスが存在する。

#### ルートユーザーとIAMユーザーとは？
・ルートユーザーとは、AWSアカウントに紐づく権限の一種。AWSの各サービスと、そのAWSアカウントで作られた全てのリソース・情報に対して、全アクセス権を持つ。要は全部見れるし、全部更新・削除ができる。
・何でもできるからこそ、企業などチームの場合は、あまり使わないようにするのが一般的。アカウントの変更や解約、サポートプランの変更の時などに使うくらい。

・IAMユーザーとは、AWSでの作業用のユーザー。
・IAMユーザーは、作業者ごとに個別に作成することができる。
・IAMユーザーは、ユーザーごとに権限を変えることができる。
・（例）企業であるWebサービスを運営する際、その会社でAWSアカウントを一つ作ったとします。チームメンバーが３人いたとして、AさんBさんCさんに、それぞれIAMユーザーを作成して渡す。AさんのIAMユーザーは、更新・削除・閲覧を全てできる。BさんのIAMユーザーは、更新と閲覧ができる。Cさんのものは、閲覧しかできない。こんな風に、社員の役割ごとに与える権限を変えることができる。

#### EC2とは？
・Elastic Compute Cloudの略で、AWSが提供するクラウド上の仮想サーバーを提供するサービス。
・特徴としては①すぐに起動でき秒単位の従量課金　②サーバーの追加・削除、マシン性能の変更もすぐできる 　③多種多様なOSやソフトウェアの組み合わせが用意されている
など。

#### EC2インスタンスとは？
・EC2でインターネット上に作成するサーバー。

#### AMIとは？
・Amazon Machine Imageの略。
・サーバーの雛形のようなもので、一つのAMIから同じEC2インスタンスをいくつも作成が可能。
・AMIを使うことで、同じような設定のインスタンスを作成する際に、１から設定する必要がなくなる。

#### リージョンとは？
・AWSがサービスを提供する地域のこと。東京リージョン、米国東部（バージニア北部）リージョンなど。
・日本には、東京リージョンと大阪リージョンの二つがある。
・リージョンによって、使えるサービスと使えないサービスがある。
・リージョンによって、同じサービスでも値段が違ったりする。

#### アベイラビリティゾーン
・複数のデータセンターがまとまった所のこと。
・一つのリージョンの中に、２つ以上のアベイラビリティゾーンがある（らしい）。
・２つ以上あることで、災害などで一方のデータセンターが機能停止しても、もう一方の物でサービスを稼働し続けることができる。

#### SSHとは？
・自分のパソコンとサーバーを安全に繋ぐシステムのこと。
・通信内容が暗号化される、ログイン方法の一種。
・SSHは、クライアント側（自分のPC）とサーバー側、両方に入れる。それぞれSSHクライアント、SSHサーバーと呼ぶ。
・（例）SSHを使ってEC2にログインする流れ。
　自分のPC側から「ログインさせて！」とログインしたいサーバーにリクエストを送ると、SSHサーバーがリクエストを送ってきた人が誰かなのかを確認して、問題がなければログインさせてくれます。
このクライアントとサーバーのやり取りは暗号化された通信で行われるから、第三者が盗聴しようとしても中身が確認ができず、安全。
要するに、SSHサーバーは、サーバーの前に立つ警備員。SSHクライアントは、ユーザーが持つ身分証明証のようなもの。


#### 公開鍵認証とは？
・サーバーを用意した人だけが、そのサーバーにアクセスできるようにするセキュリティの仕組み。
・EC２では、SSHログインをする際、この公開鍵認証を使う。
※公開鍵認証の説明をすると長くなるので、今度別の記事に記載します。

#### EC2インスタンスのストレージ（EBSとインスタンスストア）
・ストレージとは、データを保管する場所のこと。
・EC2インスタンスには、主に２種類のストレージがある。

・１つはEBS（Elastic Block Store）。EBSは、あるインタンスから別のインスタンスに付け替えることができる。
・EBSは、インスタンスを（一時）停止・削除しても、残しておくことができる。なので、長期保存したいデータなどはEBSで保管する。
・EBSは別途料金がかかる。

・もう１つはインスタンスストア。
・インスタンスに紐づく、一時的なデータの保管場所。
・インスタンを停止・削除すると、一緒に消えてしまう。なので、長期保存したいデータなどは入れないようにする。
・無料で使える。


# まとめ
AWSの公式ドキュメントは、専門用語を説明するのに、容赦無く別の専門用語を多用するので、
私のような初学者がAWS公式に行くと、調べる前より分からないことが増える、という事態になりがち。
一つずつ、ワードの整理したいと思います。

※※前述した通り、噛み砕いた言葉に直したゆえ、厳密な定義とはずれている可能性はございます。
もしこの記事見て、「この説明は間違っているよ」と気づいた方が入れば、ご指摘いただけますと助かりますm(__)m

# 参照
[AWS：ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得](https://www.udemy.com/course/aws-and-infra/)
↑「サーバーとは？」「ネットワークとは？」など、本当に基本的なIT用語の解説から、AWSの基本サービスを説明してくれる動画です。僕みたいにインフラの知識に不安のある人でも、AWSを腹落ちして使い方を覚えられます。素晴らしく分かりやすい。
2020年に初公開の動画ですが、今見たら（2022/05/21）最終更新日が「5/2022」と最近なので、アップデートし続けている様子。AWSは画面が頻繁に変わるので、教材探しに苦労します。。