VPC の基本設計

VPC(Virtual Private Cloud)は AWS 上の論理的なネットワーク分離単位だ。 オンプレの VLAN 分離やネットワークゾーン設計に相当する。

VPC 設計の基本原則:

  • パブリックサブネット:インターネットから直接アクセスされる層(ALB/NLB、NAT Gateway 等)
  • プライベートサブネット:EC2/ECS/RDS などのアプリ・DB 層。インターネットから直接アクセス不可
  • マルチ AZ 構成:同一 VPC 内の複数 AZ にサブネットを配置し、可用性を確保

💡 CIDR 設計の注意

VPC の CIDR(IP アドレス範囲)はオンプレ環境と重複しないように設計する。将来のハイブリッド接続(Direct Connect / VPN)を見越して、オンプレの IP レンジと重ならない CIDR(例: 10.100.0.0/16)を割り当てよう。後から変えることは非常に困難だ。

推奨サブネット構成例(3層アーキテクチャ):

サブネット種別配置するもの
フロントパブリック(AZ-a / AZ-c)ALB / NAT Gateway / Bastion Host
アプリプライベート(AZ-a / AZ-c)EC2 / ECS / Lambda
DBプライベート(AZ-a / AZ-c)RDS / Aurora / ElastiCache

ロードバランサーの判断フロー

Q1. トラフィックは HTTP / HTTPS か?
 ├─ Yes(Webアプリ・API)→ ALB(Application Load Balancer)
 └─ No(TCP / UDP / TLS)→ Q2 へ

Q2. 固定 IP が必要か / 超低レイテンシが必要か?
 ├─ Yes → NLB(Network Load Balancer)
 └─ 内部 AWS サービス間のルーティングのみ → GLB(Gateway Load Balancer)またはサービスメッシュ

ALB(Application Load Balancer)

ALB は L7(アプリケーション層)のロードバランサーで、HTTP/HTTPS トラフィックを パスやホストヘッダーで振り分けできる。 オンプレの F5 BIG-IP や HAProxy の多くのユースケースに対応する。

ALB の主な機能:

  • パスベースルーティング/api/* は ECS、/static/* は S3 など URL パスで振り分け
  • ホストベースルーティングapi.example.comapp.example.com を1つの ALB で捌く
  • ヘルスチェック:バックエンドの HTTP ステータスコードでヘルスを判定
  • SSL/TLS ターミネーション:証明書は ACM(AWS Certificate Manager)で無料管理
  • WAF 統合:AWS WAF と連携してリクエストフィルタリング
  • gRPC / WebSocket 対応:モダンなプロトコルもサポート

NLB(Network Load Balancer)

NLB は L4(ネットワーク層)のロードバランサーで、TCP/UDP/TLS トラフィックを超低レイテンシで処理する。 ALB と異なり、リクエスト内容を見ずに送信元/宛先ポートで転送する。

NLB を選ぶケース:

  • 固定 IP が必要(NLB は Elastic IP を割り当てられる)
  • ゲームサーバー・金融取引など超低レイテンシが必要な TCP 通信
  • SMTP / FTP など非 HTTP プロトコル
  • PrivateLink でサービスを公開する

オンプレとのハイブリッド接続

移行期間中はオンプレと AWS が共存するハイブリッド構成になる。 また「Retain」戦略で一部システムをオンプレに残す場合も、オンプレ-AWS 間の接続が必要になる。

オンプレ ↔ AWS の接続をどうするか?
 ├─ 本番・常時接続・高帯域・低遅延 → AWS Direct Connect
 └─ 開発環境・コスト重視・一時的な接続 → AWS Site-to-Site VPN

Direct Connect vs Site-to-Site VPN

観点Direct ConnectSite-to-Site VPN
接続方式専用線(1〜100Gbps)インターネット上の IPSec 暗号化トンネル
帯域安定・高帯域(SLA保証)インターネット品質に依存
レイテンシ低・安定変動あり
セキュリティ閉域(暗号化なしでも物理的に分離)IPSec 暗号化(インターネット経由)
コスト高い(ポート料金 + データ転送)低い(時間課金)
開通リードタイム数週間〜数ヶ月数時間〜数日
向いているケース本番移行・基幹系ハイブリッド移行前テスト・開発環境・小規模

💡 Direct Connect + VPN のバックアップ構成

Direct Connect は単一障害点になるリスクがある。本番環境では Direct Connect + Site-to-Site VPN(バックアップ) の冗長構成を推奨する。Direct Connect が落ちた際に自動で VPN にフェイルオーバーするよう BGP ルーティングを設定する。

セキュリティグループの設計方針

セキュリティグループは EC2 / RDS / ECS タスクなどに付与する仮想ファイアウォールだ。 オンプレのホストベース FW(firewalld / iptables)に相当する。

設計の基本原則:

  • 最小権限原則:必要なポートのみ開放。「全ポート開放(0.0.0.0/0)」は NG
  • セキュリティグループ参照:IP アドレスではなく、送信元のセキュリティグループ ID で指定(動的な IP 変更に強い)
  • 層ごとに分ける:ALB 用・EC2 用・RDS 用でセキュリティグループを分割し、ALB → EC2 → RDS の一方向接続のみ許可

⚠️ NACLとセキュリティグループの違い

NACL(ネットワークACL)はサブネット単位のステートレスなファイアウォール。セキュリティグループはリソース単位のステートフルなファイアウォールだ。基本はセキュリティグループで制御し、NACL は追加の防御層として必要な場合のみ設定する。

実務での判断ポイント

  • ALB のアクセスログ:ALB のアクセスログを S3 に出力する設定を最初から入れておく。トラブルシューティングで後から有効化しようとすると過去ログが取れない
  • VPC フローログ:VPC フローログを CloudWatch Logs に出力し、予期しない通信を検出できるようにする。セキュリティ監査でも必要になることが多い
  • NAT Gateway のコスト:プライベートサブネットからインターネットへのアクセスには NAT Gateway が必要だが、データ転送量に応じたコストが発生する。S3 / DynamoDB へのアクセスは VPC Endpoint 経由にすることで NAT Gateway を経由せず(コスト削減&セキュリティ強化)

次の章では…

PART 06 では非同期処理・ジョブの選び方を解説する。SQS / SNS / EventBridge / Step Functions の使い分けを判断フローで整理する。

→ PART 06 — 非同期処理・ジョブの選び方へ