【初心者向け】今さらだけどAWSの用語を整理してみた

何か新しいことを覚えようとする時、たいていの場合最初にぶつかるのが<strong>用語の壁</strong>だと思います。
知らない言葉のオンパレードは最初は苦痛ですが、「聞いたことない」がやがて「聞いたことある」「言葉の意味を知っている」に変わり、そして日常の会話の中でそういった専門的な用語を無意識に交わせるようになっていきます。

私たちが幼い頃、記憶にはなくともママ・パパといった身近な存在の呼び名から始まり、ひらがな・カタカナ・漢字を順番に覚え、今や当たり前のように様々な言葉を使いこなしています。<strong>そう、難しく思えるのはほんの最初だけ</strong>（大袈裟）

初心者の方が学習初期に目にするであろうサービス名や用語に絞って、その用語の意味や読み方を整理してみました。

# 共通
## AWS
<strong>A</strong>mazon <strong>W</strong>eb <strong>S</strong>ervices の略。みんな大好き「えーだぶりゅえす」ですね。
Amazonにより提供されているクラウドコンピューティングサービスです。
Service<strong>s </strong>と複数形になっている点は覚えておきましょう。テストに出ます。

## リージョン
私は最初「国」の単位だと思っていましたが、正確には「地域」を意味する言葉です。日本の場合、東京と大阪に分類されていて、このリージョン内に複数のデータセンターが存在しています。

- 東京リージョン ap-northeast-1
- 大阪リージョン ap-northeast-3

ap は アジアパシフィックの略です。
アジアパシフィックのエリアのうち、northeast（北東）に位置するからなんだと思いますが、個人的には

northwestないんかーい！
japaneast/japanwestがわかりやすくて良かったのになぁ。。

と、心の中でツッコミをいれていました。笑
まあ、すぐに慣れましたけど。

2021年9月現在、リージョンの数は「25」になっていますが、「スペイン」や「ジャカルタ」など近日公開予定のリージョンもあり、どんどん拡大されています。
<a href="https://aws.amazon.com/jp/about-aws/global-infrastructure/"><img src="https://i.gyazo.com/028e504e77efb39c33c5648d5e955833.png" alt="Image from Gyazo" width="1365" height="912" class="alignnone" /></a>


ちなみに、大阪リージョンはもともと「ローカルリージョン」という扱いで、審査を承認された一部のユーザーしか利用できない特殊なリージョンでしたが、2021年3月に正式にスタンダードなリージョンとして開設されました。

## アベイラビリティゾーン
データセンターのことです。<strong>A</strong>vailability <strong>Z</strong>oneを略して「AZ」と呼びます。
あべいらびりてぃぞーん は長くて噛みそうなので、AZと呼ぶことのほうが多いです。

東京リージョン、大阪リージョンともそれぞれリージョン内に3つのAZがあり、リージョン名の末尾に1文字のアルファベットを振って呼びます。私はよく「AZ-1a」とか「AZ-1c」と略して呼びます。

- 東京リージョン ap-northeast-1
    - ap-northeast-1a
    - ap-northeast-1c
    - ap-northeast-1d
    
- 大阪リージョン ap-northeast-3
    - ap-northeast-3a
    - ap-northeast-3b
    - ap-northeast-3c

アベイラビリティゾーンは、その名前の長さ？から最初は理解しずらい概念のような気がしますが、<span class="marker2"><strong>データセンター用の物理的な建物を表す言葉</strong>で、以下の図のように東西それぞれ3つずつ、ある程度距離を離して建てられているもの</span>、というくらいの理解で良いと思います。（1AZあたり建物が1つとは限りませんが意識する場面はほぼないです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402286/9944a88c-8b0a-573d-448f-5edb10e0f05c.png)

アイコンを置いてある場所は適当です。AZ間は<span>100 km (60 マイル) 以内に配置されるよう設計されています。</span>データセンターの実際の住所は非公開ですが、AWSを利用する上ではあまり重要ではありません。

このAZは日本語読みすると「可用性ゾーン」です。
<span class="marker2"><strong>1つのデータセンターが障害・災害などでダウンしてもサービスを継続できるようにするために、複数のAZに跨いでサーバを用意しておくのが一般的です。</strong></span>その名の通り、可用性設計の観点で非常に重要な概念です。

# ネットワーキング
## VPC
<span><strong>V</strong>irtual <strong>P</strong>rivate <strong>C</strong>loudの略。普通に ぶいぴーしー ですね。
VPC作成時、「10.0.0.0/16」などのアドレス範囲を指定しますが、
これを <strong>CIDRブロック</strong> と呼びます。CIDR = </span><span>さいだー です。

## インターネットゲートウェイ
その名の通り、<strong>インターネットに接続するための窓口の役割</strong>を持ちます。略して IGW と表記されることが多いですが、呼ぶときは いんたーねっとげーとうぇい です。私は略して呼びませんが、一般的にどうなんでしょう。

インターネットゲートウェイは家庭用のネットワークに例えると、デフォルトゲートウェイになっているルータをイメージすればいいのではないでしょうか。（BUFFALOとか。うちのWiFiルータはTP-LINKです）

## サブネット
VPCのCIDRブロックを用途ごとにさらに細かく分けたネットワーク範囲のことをサブネットといいます。AWSの場合、<span class="marker2"><strong>インターネットゲートウェイへのルート有無により呼び名が変わります。</strong></span>

- パブリックサブネット：インターネットゲートウェイへのルートあり
- プライベートサブネット：インターネットゲートウェイへのルートなし

システム構成図でよく見けけますが、
緑色のサブネットが「パブリックサブネット」で
水色のサブネットが「プライベートサブネット」です。
それぞれAZを跨いで2つずつ、計4つのサブネットに分けるパターンをまずは覚えるのが良いでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402286/dd690558-9cfb-251d-93e0-3f2ac464e182.png)

## ルートテーブル
通信したい宛先ごとの経路情報のことをAWSではルートテーブルと呼びます。一般的に「ルーター」の機能といえば <strong>"たどり着きたい場所へのルートを教えてくれるガイド"</strong> の役割を指すことが多いです。

<span class="marker2"><strong>サブネットには1つのルートテーブルを関連付けることができます。（複数は×）</strong></span>
たとえば、前述の4つのサブネットに別々のルートテーブルを関連付けることもできますが、同じルートテーブルを関連付けることもできます。

オーソドックスな形としては、パブリックサブネット用、プライベート用と2つのルートテーブルをそれぞれ関連付けます。先に触れたとおり、パブリックサブネットとしたい場合はインターネットゲートウェイ宛のルート (0.0.0.0/0 → IGW) を追加したルートテーブルを関連付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402286/4cd14038-d279-ec8a-65ff-0ace4f64cce8.png)

## セキュリティグループ
いわゆるファイアウォールです。SGと略して呼ぶこともあります。
<span class="marker2"><strong>プロトコル、ポート番号、送信元/宛先IPアドレスの組み合わせで通信を許可するために使う重要なサービスです。</strong></span>

## Route 53
DNSサーバのサービスです。るーとふぃふてぃすりー と呼びます。
DNSの通信で使われるポート番号が 53 なので Route 53 です。
<span class="marker2"><strong>Route と 53 の間にスペースが入ってる点に注意しましょう。Route53ではないです。</strong></span>

ちょっとだけ言いづらいので るーとごじゅうさん と呼ぶこともありますが、基本的に英語読みしたほうが "こなれてる感" が出ます。笑
DNSサーバというと名前解決を担ってるサービスですが、Route 53 は<strong>権威サーバ</strong>です。ドメインとIPアドレスの紐づけなどDNSレコードを管理します。

[フルサービスリゾルバー（キャッシュDNSサーバー）](https://jprs.jp/glossary/index.php?ID=0158)

一方で、VPC内の名前解決を担う<strong>フルサービスリゾルバ</strong>も暗黙的に存在します。これを <strong>Route 53 resolver</strong> (※)と呼び、VPCのCIDRブロックに +2 したIPアドレスが割り当てられます。</span>
※昔はAmazon Provided DNS と呼ばれていました。こちらのほうがピンとくる。

たとえば、VPCのCIDRブロックが「10.0.0.0/16」であれば、「10.0.0.2」がリゾルバのアドレスになります。AWSうんぬんの前にDNSは用語がややこしいので混乱しがちですが、DNSサーバには大きく2種類の役割を持つサーバがある点を意識しておきましょう。

# コンピューティング
## EC2
<span><strong>E</strong>lastic <strong>C</strong>ompute <strong>C</strong>loudの略。いーしーつー です。
頭文字を取っているのですが、Cが2つ続くので ECC → EC2 です。
仮想サーバのサービスですね。<strong>サーバ = インスタンス</strong>と呼ぶこともよくあります。</span>

elastic という単語はAWSのサービスの中でたびたび登場するのですが、直訳すると「弾性」となり、伸縮自在な性質を表す言葉です。簡単に台数を増減させたり、性能を上げ下げできるクラウドならではの「拡張性」を表現する狙いでしょうか。知らんけど。

なお、台数増減、性能上げ下げを表す<strong>「スケール」</strong>という言葉はクラウドを学ぶ上で頻出します。

- スケールアウト ・・・ 台数を増やす
- スケールイン ・・・ 台数を減らす
- スケールアップ ・・・ 性能を上げる
- スケールダウン ・・・ 性能を下げる

## AMI
<strong>A</strong>mazon <strong>M</strong>achine <strong>I</strong>mageの略。えーえむあい です。
あみ と呼ぶ人もたまにいるようですが、私は普通に えーえむあい と呼んでいます。

LinuxやWindowsなどEC2のOSイメージを指す言葉です。
AWSによって初めから様々な種類のAMIが用意されていますし、<span class="marker2"><strong>そのAMIをベースにしてミドルウェアインストールなど自分で初期設定を済ませたものを「カスタムイメージ」としてAMIを作成することもできます。</strong></span>

## EBS
<span><strong>E</strong>lastic <strong>B</strong>lock <strong>S</strong>toreの略。いーびーえす です。
EC2のディスクのことです。一般的には「汎用SSD」というSSDのディスクを利用しますが、性能要件に応じて<strong>IOPS</strong> (Input Output per second) や<strong>スループット</strong>に特化したディスクも選択できます。このあたりの用語もまとめて覚えてしまいましょう。</span>

- IOPS ・・・ 1秒あたりに処理できる読み書きの数
- スループット ・・・ 1秒あたりのデータ転送量

## ENI
<strong>E</strong>lastic <strong>N</strong>etwork <strong>I</strong>nterfaceの略。いーえぬあい です。
EC2などに接続するネットワークインターフェイスカード(NIC)のことです。
EC2以外にも、プライベートIPアドレスが割り当てられるリソースはENIが作成されます。<span class="marker2"><strong>セキュリティグループが関連付けられるのもこのENIになります。</strong></span>

## EIP
<strong>E</strong>lastic <strong>IP</strong>の略。いーあいぴー と呼びたいところですが、私は普通に えらすてぃっくあいぴー と呼んでいます。
グローバルIPアドレスのことで、EIPを取得（予約）してEC2などに割り当てることで、<strong>IPアドレスを固定</strong>することができます。

## キーペア
秘密鍵/公開鍵のペアのことです。
秘密鍵は作成時に利用者がダウンロードして厳重に保管し、公開鍵はAWS上に保管されます。（コンソール画面で見れるのは公開鍵のほう）
LinuxではSSH接続する時に秘密鍵を指定して認証し、WindowsではRDP接続に必要なAdministratorの初期パスワードを復号する時に秘密鍵が必要になります。

## ELB
<strong>E</strong>lastic <strong>L</strong>oad <strong>B</strong>alancingの略。いーえるびー です。
通信の負荷を分散するための「ロードバランサ」のサービスです。

ELBには2021年9月現在、4つの種類が存在しますが
最初に覚えるのは <strong>Application Load Balancer (ALB)</strong> と <strong>Network Load Balancer (NLB)</strong> の2種類で十分だと思います。

- ALB ・・・ アプリケーションレイヤー(L7)で負荷分散
- NLB ・・・ ネットワーク/トランスポートレイヤー(L4)で負荷分散


L7 とか L4 は通信プロトコルをレイヤー(層)で表現する時の呼び方で、<strong>OSI参照モデル</strong>が元になっています。
<img src="https://i.gyazo.com/40292eeafc1ab82d7284e8a925e5ba02.png" alt="Image from Gyazo" width="943" height="364" class="alignnone" />
<p style="text-align: right;">出典：<a href="https://www.itmanage.co.jp/column/osi-reference-model/" target="_blank" rel="noopener">OSI参照モデルとは？TCP/IPとの違いを図解で解説</a></p>

ALBはHTTP/HTTPSの負荷分散に特化したサービスで、パケットの中身を詳細にチェックできるので、URLのパスやCookieに従って振り分け先を決定するなど、高度なルーティングを実現できます。

いっぽう、NLBはIPアドレス、プロトコル、ポート番号の組み合わせから求めるハッシュ値（ランダム文字列）から振り分け先を決定します。遅延が少ないのが特徴です。

細かな違いは色々とありますが、<span class="marker2"><strong>ざっくりいうとパケットの中身をどこまでチェックしているか、それによりどんなルーティングができるのかが異なっており</strong></span>、選択する上での判断は公式ドキュメントのFAQが参考になります。
<blockquote><b>Q:アプリケーションに最適なロードバランサーは、どのように決めればよいですか?</b>

A: Elastic Load Balancing では、3 種類のロードバランサーをサポートしています。アプリケーションのニーズに応じて、適切なロードバランサーを選択できます。HTTP リクエストの負荷分散を行う必要がある場合は、Application Load Balancer を使用することをお勧めします。ネットワーク/トランスポートプロトコル (レイヤー 4 - TCP、UDP) の負荷分散および非常に高いパフォーマンス/低レイテンシーのアプリケーションには、Network Load Balancer を使用することをお勧めします。<span>アプリケーションが EC2 Classic ネットワーク内に構築されている場合は、Classic Load Balancer を使用する必要があります。
</span></blockquote>
<p style="text-align: right;">出典：<a href="https://aws.amazon.com/jp/elasticloadbalancing/faqs/" target="_blank" rel="noopener">Elastic Load Balancing のよくある質問</a></p>

個人的には、<span class="marker2"><strong>NLBにはセキュリティグループを割り当てられない点は見逃しがちだと思います。</strong></span>DevelopersIOの以下の記事も参考になります。

https://dev.classmethod.jp/articles/describe-elb-types/

この記事書くまで、ELB = Elastic Load Balanc<strong>er </strong>だと思っていた。。恥

# ストレージ
## S3
<strong>S</strong>imple <strong>S</strong>torage <strong>S</strong>erviceの略。えすすりー です。
Sが3つ続くので SSS → S3 です。SSS のほうが強そうとも思ったりします。
えすさん と呼ぶ人もいますが、基本的に英語読みしたほうが（略

データを保存するための<strong>オブジェクトストレージサービス</strong>です。
オブジェクトストレージという言葉に馴染みがないかもしれませんが（私も初めは全然知りませんでしたが）、<span class="marker2"><strong>階層構造を持たないため拡張性に優れているなどの特徴があります。</strong></span>

https://atmarkit.itmedia.co.jp/ait/articles/1705/29/news014_3.html

## EFS
<strong>E</strong>lastic <strong>F</strong>ile <strong>S</strong>ystemの略。いーえふえす です。
こちらは一般的なファイルサーバの代替となるサービスですが、2021年9月現在、<span class="marker2"><strong>LinuxのみサポートされておりWindowsはサポートされていません。</strong></span>

※Windows向けには FSx for Windows File Server というサービスが提供されています。えふえすえっくす です。

# データベース
## RDS
<strong>R</strong>elational <strong>D</strong>atabase <strong>S</strong>erviceの略。あーるでぃーえす です。
MySQL、Oracle、SQLServerなどのリレーショナルデータベースを構築するためのサービスです。

自動バックアップ、自動フェールオーバーなど便利な機能が盛り込まれています。
<span class="marker2"><strong>停止しておくと課金は止まりますが、7日が経過すると自動的に起動してくる点は要注意です。</strong></span>

## ElastiCache
えらすてぃきゃっしゅ と呼びます。
<span class="marker2"><strong>えらすてぃっくきゃっしゅ ではないので注意！</strong></span>
Elastic の c と Cache の c を重ねているのか・・・？

インメモリのデータストアサービスです。
インメモリとは、データをすべてメモリに保存する方式のことです。
RDSの場合、データベースのデータはディスクに保存しますが、ElastiCacheはメモリに保存するため、<span class="marker2"><strong>読み書きの速度が非常に高速という特徴があります。</strong></span>

RDSではマスタデータやトランザクションなど、比較的、長期間データ保存する用途で利用されますが、<span class="marker2"><strong>ElastiCacheはセッション情報やRDSへのクエリ結果など、一時的にキャッシュする用途で利用されます。</strong></span>

エンジンとして、<strong>Redis</strong> (れでぃす) と <strong>Memcached</strong> (めむきゃっしゅでぃー) の2種類が選択できます。
あまり詳しくないので詳細はこれまたDevelopersIOの記事にお譲りします。笑

https://dev.classmethod.jp/articles/elasticache-is-very-good-lets-review/

<h2>まとめ</h2>
今回はAWSの基本的なサービス名、用語について整理してみました。
言葉を知り、文章や会話でコミュニケーションができるようになるのが最初の一歩だと思います。全く知らないのと、少しは見たことがある・聞いたことがあるのでは気の持ちようも違ってくると思います。

AWS入門者の皆さんの前に立ちはだかる <strong>用語の壁 </strong>を軽やかに飛び越えるための参考になれば幸いです。