初学者なりにAWS構築を図で解説してみた

## はじめに

AWSを利用してインフラを構築する際、基本的なネットワーク設計や各サービスの役割を理解することが重要です。本記事では、実際に業務で構築したインフラの構成をもとに、VPCや各コンポーネントの役割を初心者向けに解説します。

## インフラ構成の全体像
以下の図は、今回構築したAWSインフラの構成図です。

初めてこのインフラの構成を見たとき、正直さっぱり分かりませんでした。しかし、各コンポーネントの役割や関係性を一つずつ理解していくことで、どのようにシステムが動いているのかが見えてきました。

以下の図は、今回構築したAWSインフラの構成図です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012370/895122b5-42ed-1fb4-c9f2-5adc3bb74bd7.png" width=80%>

## 各コンポーネントの説明

### 1. VPC（Virtual Private Cloud）

VPCはAWS内に独自のネットワーク環境を構築できるサービスです。イメージとしては、VPCはAWS内に作られた“自分専用のオフィスビル”のようなものです。このビルの中には、公開エリア（パブリックサブネット）と、許可された人しか入れないエリア（プライベートサブネット）があり、それぞれのエリアが異なる役割を持っています。外部ネットワークから隔離された空間を作ることで、安全なインフラ環境を提供します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012370/d6010a7a-aea1-4df9-c07f-38e96e223741.png" width=25%>



#### **VPCの主な構成要素**

- **サブネット（Subnet）**: VPC内のIPアドレス範囲を細分化したもの。イメージとしては、サブネットはオフィスビルのフロア分けのようなものです。パブリックサブネットは来客が自由に出入りできるロビーのようなもので、プライベートサブネットは社員専用のエリアで外部の人は自由に入れません。
  - **パブリックサブネット（Public Subnet）**: インターネットに接続可能なサブネット。
  - **プライベートサブネット（Private Subnet）**: 外部と直接通信しないサブネット。DBなど外部からアクセスされたくない情報を配置する。
- **インターネットゲートウェイ（Internet Gateway）**: パブリックサブネットのリソースをインターネットに接続。これは、オフィスビルの正面玄関のようなもので、外部と自由に出入りできる通路を提供します。

- **NATゲートウェイ（NAT Gateway）**: プライベートサブネットからインターネットに出る際に使用。これは、オフィスのセキュリティゲートを通じて外部の情報にアクセスする仕組みに似ています。例えば、社員が外部のWebサイトを見るためには、専用のゲートを経由しなければならないのと同じです。また、NATゲートウェイはプライベートIPアドレスをグローバルIPアドレスに変換する役割を持ち、プライベートサブネット内のリソースがインターネットと通信できるようにします。
- **グローバルIPアドレス**: インターネット上で一意に割り当てられるIPアドレス。
- **プライベートIPアドレス**: AWS内部のネットワーク内でのみ使われるIPアドレス。社内の電話番号のように、外部からは直接アクセスできません。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012370/785e22e5-8737-e11f-61fa-bef0fe1ec652.png" width=60%>

### 2. **Application Load Balancer（ALB）**

ALBは、複数のECSコンテナインスタンスに負荷を分散し、スケーラブルで耐障害性の高い構成を実現します。

例えば、飲食店で注文を受けるカウンターが1つだけだと混雑してしまいます。しかし、複数のカウンターがあるとスムーズに注文をさばけるようになります。ALBは、この「注文カウンター」の役割を果たし、リクエストを適切なサーバーへ分配することでシステムのパフォーマンスを向上させます。

ALBは、複数のECSコンテナインスタンスに負荷を分散し、スケーラブルで耐障害性の高い構成を実現します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012370/40516214-43c0-ee39-bcad-cfdc4bdb80af.png" width=60%>

### 3. **Amazon ECS（Elastic Container Service）**
ECSは、コンテナ化されたアプリケーションをAWS上で効率的に運用するためのサービスです。
※[【AWS初学者向け・図解】Amazon ECSとは？現役エンジニアがわかりやすく解説](https://o2mamiblog.com/aws-ecs-beginner/)より画像引用
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012370/aed5c401-fb3a-6f85-9acc-2456bef9340c.jpeg" width=80%>

**ECSの特徴**

- **スケーラブルなコンテナ管理**: トラフィックの増減に応じて、自動的にコンテナをスケールアウト・スケールインできます。

- **マネージドサービス**: EC2やFargateを利用して、コンテナの実行環境を自動管理。

- **ロードバランシング**: ALBと連携して、リクエストを適切なコンテナに分配。

**ECSのイメージ（例え）**

ECSを「フードデリバリーのキッチン」に例えると分かりやすいでしょう。
- 注文が少ない時間帯はシェフ（コンテナ）の数を減らして省エネ。
- ピーク時には追加のシェフを増やして効率よく料理（リクエスト処理）を提供。
- 料理（データ）をお客様（ユーザー）へ届ける役割を果たす。

このように、ECSは需要に応じて柔軟に対応し、負荷の変動に強い仕組みです。



### 4. **Amazon RDS（Relational Database Service）**
Amazon RDSは、クラウド上でリレーショナルデータベースを簡単にセットアップ、運用、スケールできるフルマネージドなデータベースサービスです。これにより、データベースの運用負担を軽減し、パフォーマンスやセキュリティを向上させることができます。

今回の構成では、マルチAZ構成を採用し、可用性と耐障害性を向上させています。

**RDSの特徴**

- **マネージドデータベースサービス**: データベースのバックアップ、パッチ適用、スケーリングなどを自動で管理。
- **マルチAZ構成**: もし1つのデータセンターが故障しても、別のデータセンターでデータを維持し続ける仕組み。これにより、サービスが止まるリスクを減らせます。
- **スケーラビリティ**: 需要に応じてストレージやインスタンスのサイズを変更可能。
- **セキュリティ強化**: データはVPC内で管理され、特定のユーザーやシステムだけがアクセスできるように制限されます。さらに、暗号化を利用してデータを安全に保管できます。

このように、Amazon RDSを活用することで、データベース運用を効率化し、可用性の高いシステムを構築することができます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012370/3ab1afe8-a7c8-30bc-2cd4-972cca72bbc5.png" width=60%>

### 5. **Amazon Route 53**

Route 53は、AWSのDNSサービスです。ユーザーが独自ドメインを使用してアプリケーションにアクセスできるようにするために利用されています。

※[【図解AWS】Route53とは？初心者にもわかりやすく解説！
](https://o2mamiblog.com/aws-ecs-beginner/)より画像引用

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012370/f14fde26-511c-dafb-3619-6868c329a24c.jpeg" width=80%>

## **設計の意図と考慮点**

### **1. セキュリティの確保**

- パブリックサブネットには **NAT Gateway と ALB のみ** を配置し、外部からの不要なアクセスを防止。
- プライベートサブネットに **ECS と RDS を配置** することで、データベースへの直接的なインターネットアクセスを遮断。

### **2. 可用性とスケーラビリティの向上**

- **ALB を使用して ECS の負荷分散** を行い、障害発生時もリクエストを処理可能に。
- **ECS Auto Scaling を活用** し、トラフィックの増減に応じてスケールアウト/スケールインを自動化。
- **Amazon RDS のマルチAZ構成** を採用し、耐障害性を強化。



## **まとめ**

本記事では、AWSの基本的なインフラ構成について、初心者向けに解説しました。VPCの役割や各コンポーネントの重要性を理解することで、より堅牢でスケーラブルなインフラを構築できます。

これからAWSを学ぶ方にとって、少しでも役に立てば幸いです！

---

### **次のステップ**

- AWSの実際の構築手順について詳しく解説する記事を作成予定。
- Terraformで自動化する方法も紹介予定。


## 参考文献
https://www.amazon.co.jp/AWS%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E6%A7%8B%E7%AF%89%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E5%AE%89%E5%85%A8%E3%81%A7%E5%A0%85%E7%89%A2%E3%81%AA%E6%9C%AC%E7%95%AA%E7%92%B0%E5%A2%83%E3%81%AE%E3%81%A4%E3%81%8F%E3%82%8A%E6%96%B9-%E4%B8%AD%E5%9E%A3-%E5%81%A5%E5%BF%97/dp/4798178004/ref=sr_1_11_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=277VKCHOURYC7&dib=eyJ2IjoiMSJ9.oGUxO3qT5uN46DntqG_NW33rI5Kp4kDMCjjz2c5vM4w80WRzNktQ6Q23n5vQft-z2qek79JPejZCDffHvmq5hkI7bORH7qI42vWA68_c4KGL4Uqk5DDwd3gxvF07QVb-Va4qRDC84Xsyuld0o_y7dEdENaFANffdAR0nhYtD9-lx0iXpTUIUQq9Apk7Dhy4zFIwj5s91RD4fmYQjYfjbzob8g_xUQPXoadpwfcu8cw_NlbRjKHQ2Y78k3colVY6onJaPQGGDNZrKhc0nlBaannJ1a29v9_5xtRDb-t64SWE.y0915WLHmhicez8FdpAUZ_bVgV-4KxgfDUzKqyC3-Ww&dib_tag=se&keywords=aws&qid=1738463886&sprefix=aws%2Caps%2C191&sr=8-11-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9tdGY&psc=1


https://docs.aws.amazon.com/