AWS研修体験記：迷子にならない！新卒エンジニアが図解で掴んだAWS VPCの全貌

# はじめに
「VPCって何？サブネットってどういう意味？」 クラウドの世界に足を踏み入れたばかりの私が、最初に直面した壁がこれでした。 本記事は、AWS研修でVPCの概念に四苦八苦した新入社員が、ようやく「腑に落ちた！」と感じた理解のプロセスを共有します。 図解と実践から学んだVPCの「なるほど！」ポイントを、同じく雲の上を彷徨っている新人エンジニアのあなたにお届けします。
# VPCとは
VPC（Virtual Private Cloud）は、AWSクラウド内でユーザーが定義する仮想ネットワークです。AWS上に論理的に隔離されたプライベートな環境を構築でき、ネットワーク構成を細かくコントロールすることができます。重要なのは「プライベート」という点で、VPCはパブリッククラウド上にありながら、他のユーザーやインターネットから完全に分離された独自のネットワーク空間を提供します。これにより、オンプレミス環境と同様のセキュリティと制御を保ちながら、クラウドの柔軟性と拡張性を活用できるのです。

### 研修前のVPCの理解度
研修でEC2を立ち上げてみようということになり、手順を確認したところ、まずはVPCの設定をしましょう。という流れで、”VPCの設定はしなくてはいけないもの、だから設定をする”というくらいの認識でした。

### VPCで設定できること
実際に研修で行ったVPC設定について記載します。

#### 1. サブネット
- VPC内の特定のアベイラビリティーゾーン（AZ）に位置するIPアドレスの範囲
- パブリックサブネット（インターネットへの直接アクセス可能）とプライベートサブネット（直接アクセス不可）に分類
- プライベートサブネットは、データベースや内部APサーバーなど、直接インターネットからアクセスされる必要がない重要なリソースを配置する安全な領域です。外部からの不正アクセスから保護しつつ、必要な場合はNATゲートウェイを通じて外部と通信できます。
#### 2. ルートテーブル
- サブネット内のトラフィックの経路を決定するルールの集合
- サブネットとルートテーブルは1対1の関係（1つのサブネットには1つのルートテーブルのみが関連付けられる）
#### 3. インターネットゲートウェイ
- VPCとインターネット間の通信を可能にするコンポーネント
- パブリックサブネット内のリソースがインターネットにアクセスするために必要
#### 4. NATゲートウェイ/NATインスタンス
- プライベートサブネット内のリソースがインターネットにアクセスするための仕組み
- 内部からの通信はインターネットに出られるが、外部からの直接アクセスは遮断する
- プライベート環境を維持しながら、ソフトウェアのアップデートや外部APIとの連携を可能にする重要な役割を果たします
#### 5. セキュリティグループ
- インスタンスレベルのファイアウォール（ステートフル）
- 許可ルールのみ設定可能（明示的な拒否設定はできない）
#### 6. ネットワークACL
- サブネットレベルのファイアウォール（ステートレス）
- 許可と拒否の両方のルールを設定可能

### VPC設定の利点と設計時の考慮点
#### VPC設定の利点
- セキュリティの向上：リソースをプライベートネットワーク内に配置し、アクセス制御を細かく設定
- ネットワーク設計の柔軟性：企業のニーズに合わせたIP範囲、サブネット、ルーティングテーブルの設計
- 接続オプションの多様性：インターネット接続、VPN接続、Direct Connect接続など様々な接続方法
- コスト効率：オンプレミスのネットワークインフラ構築に比べて低コスト
- スケーラビリティ：ニーズに応じて拡張可能
- プライベート通信の実現：インターネットを経由せずに安全にリソース間で通信できる環境を構築可能
- コンプライアンス対応：業界規制や法令に準拠した隔離されたネットワーク環境の構築
#### 設計時の考慮点
- IPアドレス範囲の計画：将来の拡張を考慮したCIDRブロックの選定
- サブネットの分割：アプリケーション層、デプロイ環境、セキュリティ要件に基づく適切な分割
- アベイラビリティーゾーンの利用：障害対策としての複数AZ配置
- セキュリティ層の設計：多層防御の考え方を取り入れたセキュリティ設計
- パブリック/プライベート構成：業務要件に基づいて、どのシステムをパブリックに公開し、どのシステムをプライベートに保護するかの決定

# 私なりのVPCの理解
VPCについて、初めに設定しなくてはいけないもの、いろいろことを設定できるもの、という理解だった人が私を含めていると思います。私は、実際VPCはどのような役割をしているのかを身近なもので例えて解釈しました。

### VPCをわかりやすく例えると「私有地」です
どういうことかというと

- VPC：一つの「私有地」や「大きな住宅地」全体
- サブネット：住宅地内を区画分けした「エリア」や「区画」
  - パブリックサブネット：住宅地の表通りに面した「商業区画」（お店や受付など、外部の人も訪問可能）
  - プライベートサブネット：住宅地の奥にある「居住区画」（部外者が簡単には入れない、セキュリティが厳しいエリア）
- EC2インスタンス：各区画に建てる「建物」や「家」
- セキュリティグループ：各建物の「鍵」や「セキュリティシステム」
- ネットワークACL：区画の「入口ゲート」や「フェンス」
- インターネットゲートウェイ：住宅地と外部（公道）を繋ぐ「正門」
- NATゲートウェイ：居住区画から表通りに出るための「裏門」（内部から出ることはできるが、外部から入ることはできない）
- ルートテーブル：住宅地内の「道路標識」や「交通ルール」

わかりやすくイラストで表現したいので、生成AIに作ってもらいましょう！

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073229/a055eec9-7cea-41cc-b8d0-d622d9b2f52a.png">

分かりやすいですね！このイラストだとVPCが大きな私有地のように見えると思います。
また、パブリックとプライベートの違いも分かりやすいですね！

## プライベート環境の重要性とユースケース
VPCのプライベート環境は、以下のようなシーンで特に価値を発揮します

- データベースのセキュリティ確保：顧客情報や機密データを扱うデータベースサーバーをプライベートサブネットに配置し、直接外部からアクセスできないようにします。

- 多層アプリケーション構築：Webサーバーはパブリックサブネットに、アプリケーションサーバーやデータベースサーバーはプライベートサブネットに配置する「多層設計」により、セキュリティを高めます。

- 内部システムの運用：社内向けシステムや管理ツールを外部から隔離し、VPN経由でのみアクセス可能にします。

- 規制対応：金融業や医療業など、厳格なコンプライアンス要件がある業界で、データを安全に管理するための環境を構築できます。

# まとめ
VPCは、クラウド上に自分専用の「私有地」を作るようなものです。 その中で区画（サブネット）を分け、家（EC2やRDS）を建て、鍵（セキュリティグループ）や門（ネットワークACL）で安全を守りながら、正門（インターネットゲートウェイ）を通じて外部とつながることができます。

特に重要なのは、表に面した区画（パブリックサブネット）と奥まった区画（プライベートサブネット）を適切に使い分けること。大切なものは奥まったエリアに置き、訪問者の対応は表の区画で行うというシンプルな発想が、クラウド上でも強固なセキュリティを実現するのです。

このようなたとえを使うことで、VPCの仕組みや役割がイメージしやすくなったのではないでしょうか。 クラウドのネットワーク設計に迷ったときは、ぜひ「私有地」のイメージを思い出してみてください。