【初心者向け】AWSは怖くない！これだけ読めばAWSのアーキテクチャ図がわかるようになる〜後編〜

こちらはシリーズ記事の後編です。

前編はこちらからどうぞ。
[【初心者向け】AWSは怖くない！これだけ読めばAWSのアーキテクチャ図がわかるようになる〜前編〜](https://qiita.com/morihagi/items/620b5714892511cce595)

# 前回の続き
ここでちょっと図を整理します。
　・3層アーキテクチャの各層の名称を削除
　・仮想サーバー（インスタンス）の領域を明確化
![スクリーンショット 2023-07-05 2.32.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348836/5ee73c74-725a-f077-5ee6-007ea5f769c4.png)

# 世界中にあるAWSのサーバーの中で、どこにあるサーバーを使いたいですか？
AWSは世界各地にの主要な都市（`リージョン`）ごとに、複数のデータセンター群（`アベイラビリティゾーン`）（[イメージ図](https://www.google.com/search?q=%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjO3P2o2fb_AhWvI0QIHScCBpUQ_AUoA3oECAIQBQ&biw=1161&bih=858&dpr=1)）があり、それぞれに固有のIDが振られています。

現在、日本を例にとると…
　・東京リージョン（ap-northeast-1）
　　　4つのアベイラビリティゾーン（ap-northeast-1a ~ ap-northeast-1d）
　・大阪リージョン（ap-northeast-3）
　　　3つのアベイラビリティゾーン（ap-northeast-3a ~ ap-northeast-3c）
※ちなみにap-northeast-2はソウル（韓国）です。
![スクリーンショット 2023-07-05 2.33.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348836/ab6a4a88-3032-d7c1-4fd0-8c9837981a70.png)

ユーザーがアクセスする場所からサーバーが物理的に近いと、Webアプリのレスポンスの遅延を最小限に抑えられます。そのため、AWSを使う際には、ターゲットユーザーの把握が大事です。

:::note
`リージョン`
・リージョンによって利用料が異なる
・リージョンごとに提供されているサービスが異なる
:::
:::note
`マルチリージョン`
・障害対策やアクセスの分散化のため、複数のリージョンを利用してシステムを構築する構成
:::
:::note
`アベイラビリティゾーン`
・AZと略されることもある
:::
:::note
`マルチAZ`
・早速「AZ」がでてきましたね！
・障害対策やアクセスの分散化のため、冗長化のため、複数のAZを利用してシステムを構築する構成のこと
・AWSが推奨する構成
:::
:::note
`スケーラブル`
・「アクセスが増えたときに、大規模な変更なしにサーバーを増やせます」を一言で言うとこうなる
・AWSのサービスを象徴するような言葉
:::

図にリージョンと、マルチAZ構成のAZを追加します。
![スクリーンショット 2023-07-05 2.33.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348836/b2db22e7-fa43-5ba9-4f35-bc37615aa4f6.png)

# 都市とエリアが決まったなら、土地を決める
都市（`リージョン`）とエリア（`AZ`）を決めた後は、土地（[`VPC`](https://aws.amazon.com/jp/vpc/)）を決めましょう。

`VPC`とは、プライベート仮想ネットワークのことで、この中でインスタンスが稼働します。AWSが所持する広大な土地の中で、自分の土地を手に入れられるイメージです。

:::note
`VPC`
・Virtual Private Cloudの略
・プライベートな仮想ネットワーク
・「プライベート」=「外部からのアクセスを遮断」今の状態だとユーザーはWebアプリにアクセスできない
・VPCを構築するためにはネットワークで使用するIPアドレスの範囲をCDIR表記で決めなければならない
:::

`リージョン`、`アベイラビリティゾーン`、`VPC`を図に追加するとこんなかんじ。
![スクリーンショット 2023-07-05 2.34.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348836/c7a41e3a-b1d1-550b-a411-111b028207aa.png)

# 自分の土地に家を建てる
`VPC`という土地に家を建てたいと思いますが、部屋割り（`サブネット`）はどうしましょうか？
　
まずは居間や客間などのパブリックスペース（`パブリックサブネット`）と、寝室や浴室などのプライベートスペース（`プライベートサブネット`）に分かれますね。

このようにVPC内でも、インターネットから直接アクセス可能な部分（WebサーバーやAPサーバーにあたる）は`パブリックサブネット`、インターネットから直接アクセスできない（DBサーバーにあたる）は`プライベートサブネット`に設定にします。

:::note
`サブネット`
・VPCという大きなネットワークを分割したネットワーク
・利用する目的に応じて、VPC内のIPアドレス範囲をCDIR表記で分けて取得できる
・それぞれのサブネットは独立しており、干渉しない
:::

パブリックサブネットとプライベートサブネットをAZごとに図に追加します。
![スクリーンショット 2023-07-05 2.41.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348836/f1b801ff-3a2d-8e0c-29b8-21e66cc5f5ad.png)

 (例)ダミーでVPCとサブネットのIPアドレスの範囲を書くとこんなかんじ（飛ばしてもOK）
|     リソース名     |     サブネットID     |      IPアドレスの範囲      |     ゾーン     | 
|------------------|----------------------|-------------------------|----------------| 
|      VPC         |          -           |       10.0.0.0/16       |       -        |     
| パブリックサブネット_1 |   subnet-12345678   |       10.0.0.0/24       |  us-east-1a   |   
| パブリックサブネット_2 |   subnet-abcdefgh   |       10.0.1.0/24       |  us-east-1b   |   
| プライベートサブネット_1 |   subnet-1a2b3c4d   |       10.0.2.0/24       |  us-east-1a   |   
| プライベートサブネット_2 |   subnet-abcd1234   |       10.0.3.0/24       |  us-east-1b   |   

※各サブネットは同VPC内にする必要があり、'10.0'まで同じであれば同VPCとみなされる

:::note warn
IPアドレスやCDIR表記については説明が足りないので、後で記事を書きたいと思います。

今は`VPN`の中に、`サブネット`という小部屋があって、それぞれ独立しており、干渉しないということをおさえてもらっていればOKです！
:::

## 家の中に廊下・ドアをつける
つい先ほど`サブネット`はそれぞれ干渉しないと言いましたが、`EC2`から`RDB`にアクセスができないとWebアプリとして使えません。

そのため、小部屋(`サブネット`)しかない家に廊下・ドア（`ルートテーブル`）をつけて、小部屋をつなげましょう。

:::note
`ルートテーブル`
・ネットワークの経路を設定する
::: 

## あ！玄関がない！
VPCとは、プライベートな仮想ネットワークのことでした。「プライベート」=「外部からのアクセスを遮断」ということです。今の状態だとユーザーがWebアプリにアクセスできません。

家に玄関（`インターネットゲートウェイ`）をつけることで、外部のユーザーがVPC内のパブリックサブネットにアクセスすることができます。

:::note
`インターネットゲートウェイ`
・パブリックサブネットへの入り口、これがないとWebアプリにユーザーがアクセスできない
:::

`ルートテーブル`と`インターネットゲートウェイ`を図に追加します。実は、ここでやっとリクエストの処理を表す線を書けます。BeforeとAfterの対比をわかりやすくするため、Before図では線を消しています。
![スクリーンショット 2023-07-05 10.48.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348836/62dd23d0-4f8f-2fd4-80a8-4023782329e1.png)

ちなみに`ルートテーブル`や`インターネットゲートウェイ`の紫のアイコンはネットワーク関係のサービスを表します。このような情報は[ここ](https://aws.amazon.com/jp/architecture/icons/)からわかります。

基本的な流れはここで終わりです。

# 最後にオプションを決めよう
最後にもうちょっとサービスを足したいと思います。
※RDSはプライマルとサブに分け、サブにはプライマルのデータをコピーして保存するとします。
![スクリーンショット 2023-07-05 2.35.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348836/5b7b2321-e06c-a372-cfcf-0f7f62aff475.png)

ここで追加したサービスは以下です。

:::note
`Elastic Load Balancing`
・負荷分散サービス
・大量のアクセスがあった時、複数のサーバーにアクセスを振り分ける
:::
:::note
`Amazon S3`
・データのストレージサービス
:::

# まとめ
ここでもう一度、前回の記事の最初のアーキテクチャ図を見てみましょう。記事を読む前よりちょっとは怖くなくなったという人がいたら嬉しいです。
<img width="500" src="//d1.awsstatic.com/Developer%20Marketing/jp/magazine/2022/img_way-to-draw-architecture_03.08e1366ebaecaf76a333002acbe1e2bd363acd4b.png" alt="AWS archtecture diagram">
[引用元「AWS のアーキテクチャ図を描きたい ! でもどうすれば良いの ?」](https://aws.amazon.com/jp/builders-flash/202204/way-to-draw-architecture/?awsf.filter-name=*all)[^1]

:::note
`Route 53`
・DNS (ドメインネームサービス)
・好きなドメイン名を取得できる
:::
:::note
`Cloud Front`
・静的/動的ウェブコンテンツの配信速度を高速化させることができるサービス
:::
:::note
`VPN gateway`
・外部ネットワークからAWSのVPN内に安全に接続できるサービス
:::
今までの図は[こちら](https://drive.google.com/file/d/1F3myS5rKQvocmfRSrm--CDiUhxJ3gn3C/view?usp=sharing)から見れます。

前編はこちらからどうぞ。
[【初心者向け】AWSは怖くない！これだけ読めばAWSのアーキテクチャ図がわかるようになる〜前編〜](https://qiita.com/morihagi/items/620b5714892511cce595)

# 次のステップには何がある？
[AWSアカウントを作成してから1年間はほとんどのサービスが無料](https://aws.amazon.com/jp/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all)で使えますので、気軽に取り組んでみてください〜

▼記事を読んでもAWSのことがいまいち分からなかった人はこちら
[はじめに押さえておきたい！初学者向け AWS キーワード Top 10※資料は概要欄より取得いただけます](https://www.youtube.com/watch?v=VIpulFnarKQ&ab_channel=AmazonWebServicesJapan%E5%85%AC%E5%BC%8F)
私の推し、AWSの中の人[ゆっきーこと高橋敏行](https://twitter.com/YukkiTakahashi)氏の解説動画です。このシリーズ記事を書いたのも、この方の動画を見て触発されたからだったりします。この人が宣伝する商品なんでも買ってしまいそうになるくらい説明がうまい。声の抑揚のコントロールが完璧。[早すぎたtiktoker](https://www.youtube.com/watch?v=5WZN0vrgyos&ab_channel=OracleJapanMarketingVideoChannel)でもあります。そりゃあ説明がうまいわけよ。

▼AWSの公式の資料を使って勉強したい人はこちら
[AWS ハンズオン資料](https://aws.amazon.com/jp/events/aws-event-resource/hands-on/)

▼実際にAWSを使って、システム構築をしてみたい人はこちら
[スケーラブルウェブサイト構築 ハンズオン](https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP)

▼アーキテクチャ図を書きたい人はこちら
[AWS アーキテクチャアイコン アーキテクチャダイアグラムを構築するための AWS 公式アイコンセット
](https://aws.amazon.com/jp/architecture/icons/)アイコンの色の意味やアーキテクチャ図を作成するときのルールがわかるのでおすすめ。

# 余談
アーキテクチャ図は本当は最新のアイコンで作らないといけなんですけど、draw.ioに最新のものがなかったので、古いもので作っています。この記事、参考になるので、おすすめです！

[新 AWS アーキテクチャアイコンで構成図を書いてみた（2023/4/28 にリリースされた新アイコン）
](https://dev.classmethod.jp/articles/new-aws-architecture-icon-20230428/)


[^1]: [AWS のアーキテクチャ図を描きたい ! でもどうすれば良いの ?](https://aws.amazon.com/jp/builders-flash/202204/way-to-draw-architecture/?awsf.filter-name=*all)