クラウドサービスの普及により、従来のオンプレミス環境とは異なるネットワーク設計の考え方が求められるようになりました。VPC(Virtual Private Cloud)を中心としたクラウドネットワーク設計では、論理的に分離された仮想ネットワーク上でサブネット、ロードバランサー、セキュリティグループなどを組み合わせて、スケーラブルかつセキュアな構成を実現します。
本記事では、クラウド時代のネットワーク設計パターンについて以下の内容を解説します。
- VPC(Virtual Private Cloud)の基本概念とアーキテクチャ
- パブリック/プライベートサブネットを活用したネットワーク分離
- ロードバランサーによる負荷分散とトラフィック制御
- CDN(Content Delivery Network)を活用したコンテンツ配信
- マルチリージョン・マルチAZ構成による高可用性設計
- AWS・Azure・GCPの共通概念と用語の対応
この記事を読むことで、クラウド環境でのネットワーク設計の基礎を理解し、適切な構成を選択できるようになります。
前提条件
本記事を理解するために、以下の知識があることを前提としています。
- IPアドレスとサブネットの基本概念を理解している(IPアドレスとサブネットマスクの基礎を理解するを参照)
- ルーティングの基礎知識がある(ルーティングの基礎とデフォルトゲートウェイを理解するを参照)
- NATの仕組みを理解している(NATとプライベートネットワークの仕組みを理解するを参照)
- ファイアウォールの基本概念を理解している(ファイアウォールの仕組みと設定の基礎を理解するを参照)
実行環境
本記事で解説する内容は、以下のクラウドサービスで共通して適用できます。
| クラウドプロバイダ | 主な関連サービス |
|---|---|
| AWS | VPC、EC2、ALB/NLB、CloudFront、Route 53 |
| Microsoft Azure | Virtual Network、Virtual Machines、Azure Load Balancer、Azure Front Door |
| Google Cloud | VPC、Compute Engine、Cloud Load Balancing、Cloud CDN |
各クラウドプロバイダの無料枠やハンズオン環境があれば、実際に構築を試すことができます。
期待される学習成果
本記事を読み終えると、以下のことができるようになります。
- VPCの構成要素と役割を説明できる
- パブリック/プライベートサブネットの使い分けを理解できる
- ロードバランサーの種類と適切な選択ができる
- CDNの仕組みと導入メリットを理解できる
- 高可用性を実現するためのマルチAZ構成を設計できる
VPC(Virtual Private Cloud)の基本概念
VPC(Virtual Private Cloud)は、クラウド上に構築される論理的に分離された仮想ネットワークです。オンプレミス環境での物理ネットワークと同様に、IPアドレス範囲の定義、サブネットの作成、ルーティングテーブルの設定、セキュリティポリシーの適用が可能です。
VPCの主要構成要素
クラウドネットワーク設計において、VPCは以下の構成要素で成り立っています。
graph TB
subgraph VPC["VPC (10.0.0.0/16)"]
subgraph AZ1["アベイラビリティゾーン A"]
PublicSubnet1["パブリックサブネット<br/>10.0.1.0/24"]
PrivateSubnet1["プライベートサブネット<br/>10.0.10.0/24"]
end
subgraph AZ2["アベイラビリティゾーン B"]
PublicSubnet2["パブリックサブネット<br/>10.0.2.0/24"]
PrivateSubnet2["プライベートサブネット<br/>10.0.20.0/24"]
end
IGW["インターネット<br/>ゲートウェイ"]
NAT["NAT<br/>ゲートウェイ"]
end
Internet["インターネット"]
Internet <--> IGW
IGW <--> PublicSubnet1
IGW <--> PublicSubnet2
PublicSubnet1 --> NAT
NAT --> PrivateSubnet1
NAT --> PrivateSubnet2
style VPC fill:#e3f2fd
style PublicSubnet1 fill:#c8e6c9
style PublicSubnet2 fill:#c8e6c9
style PrivateSubnet1 fill:#fff3e0
style PrivateSubnet2 fill:#fff3e0VPCを構成する主要な要素は以下のとおりです。
| 構成要素 | 説明 | 対応するオンプレミス概念 |
|---|---|---|
| VPC | 論理的に分離された仮想ネットワーク | データセンター内のネットワーク |
| サブネット | VPC内のIPアドレス範囲の分割単位 | VLAN |
| インターネットゲートウェイ | VPCとインターネット間の通信を可能にする | ルータ(インターネット接続用) |
| NATゲートウェイ | プライベートサブネットからインターネットへの一方向通信 | NATルータ |
| ルートテーブル | トラフィックの経路を定義 | ルーティングテーブル |
| セキュリティグループ | インスタンスレベルのファイアウォール | ホストベースファイアウォール |
| ネットワークACL | サブネットレベルのファイアウォール | ネットワークファイアウォール |
VPCのCIDR設計
VPCを作成する際、最初にIPアドレス範囲(CIDRブロック)を決定する必要があります。この設計は後から変更が難しいため、将来の拡張性を考慮して慎重に決定します。
RFC 1918 プライベートIPアドレス範囲:
- 10.0.0.0/8 (10.0.0.0 - 10.255.255.255) 約1677万アドレス
- 172.16.0.0/12 (172.16.0.0 - 172.31.255.255) 約104万アドレス
- 192.168.0.0/16 (192.168.0.0 - 192.168.255.255) 約6.5万アドレス
VPCのCIDR設計における推奨事項は以下のとおりです。
- 十分な拡張性の確保:
/16(約65,000アドレス)程度のCIDRを確保 - VPC間の重複回避: 将来のVPCピアリングやVPN接続を考慮し、重複しないアドレス範囲を使用
- オンプレミスとの重複回避: ハイブリッドクラウド構成時に既存ネットワークと重複しない範囲を選択
良い設計例:
- 本番VPC: 10.1.0.0/16
- 開発VPC: 10.2.0.0/16
- ステージングVPC: 10.3.0.0/16
- オンプレミス: 192.168.0.0/16
悪い設計例:
- 全環境で 10.0.0.0/16 を使用 → VPC間の接続が不可能に
パブリック/プライベートサブネット設計
クラウドネットワーク設計の基本は、パブリックサブネットとプライベートサブネットを適切に使い分けることです。この分離により、セキュリティを確保しつつ、必要な通信を実現します。
パブリックサブネットとプライベートサブネットの違い
両者の違いは、インターネットへの直接アクセス可否にあります。
| 項目 | パブリックサブネット | プライベートサブネット |
|---|---|---|
| インターネットへの直接通信 | 可能(双方向) | 不可 |
| デフォルトルート | インターネットゲートウェイ | NATゲートウェイまたはなし |
| パブリックIPの割り当て | 可能 | 通常は不要 |
| 配置するリソース例 | ロードバランサー、踏み台サーバー | アプリケーションサーバー、DB |
| セキュリティレベル | 外部からの攻撃対象になりやすい | インターネットから隔離されて安全 |
3層アーキテクチャのサブネット設計
Webアプリケーションでよく採用される3層アーキテクチャをクラウドで実現する場合、以下のようなサブネット設計が推奨されます。
graph TB
Internet["インターネット"]
subgraph VPC["VPC (10.0.0.0/16)"]
subgraph PublicTier["パブリック層"]
ALB["Application<br/>Load Balancer"]
Bastion["踏み台サーバー"]
end
subgraph AppTier["アプリケーション層<br/>(プライベート)"]
App1["App Server 1"]
App2["App Server 2"]
end
subgraph DataTier["データ層<br/>(プライベート)"]
DB1[("Primary DB")]
DB2[("Standby DB")]
end
NAT["NAT Gateway"]
end
Internet --> ALB
Internet -.->|SSH| Bastion
ALB --> App1
ALB --> App2
App1 --> DB1
App2 --> DB1
DB1 -.->|レプリケーション| DB2
App1 -.-> NAT
App2 -.-> NAT
NAT -.-> Internet
Bastion --> App1
Bastion --> App2
style PublicTier fill:#c8e6c9
style AppTier fill:#fff3e0
style DataTier fill:#ffcdd2サブネットのCIDR設計例を以下に示します。
VPC CIDR: 10.0.0.0/16
アベイラビリティゾーン A:
パブリックサブネット: 10.0.1.0/24 (ロードバランサー、踏み台)
アプリケーションサブネット: 10.0.10.0/24 (Webサーバー)
データベースサブネット: 10.0.100.0/24 (RDS、ElastiCache)
アベイラビリティゾーン B:
パブリックサブネット: 10.0.2.0/24
アプリケーションサブネット: 10.0.20.0/24
データベースサブネット: 10.0.200.0/24
NATゲートウェイの役割と配置
プライベートサブネット内のリソースがインターネットにアクセスする必要がある場合(OSアップデート、外部APIとの通信など)、NATゲートウェイを使用します。
NATゲートウェイの特徴は以下のとおりです。
- パブリックサブネットに配置し、Elastic IP(固定のパブリックIP)を付与
- プライベートサブネットからの送信トラフィックのみを許可(外部からの受信は不可)
- 高可用性のため、各アベイラビリティゾーンにNATゲートウェイを配置
ルートテーブル設定例(プライベートサブネット用):
| 宛先 | ターゲット |
|---------------|-------------------|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | nat-gateway-xxxx |
セキュリティグループとネットワークACL
クラウドネットワーク設計において、トラフィック制御は多層防御の考え方で実装します。セキュリティグループとネットワークACLを組み合わせることで、きめ細かなアクセス制御を実現します。
セキュリティグループ
セキュリティグループは、インスタンス(仮想マシン)レベルで動作するステートフルファイアウォールです。
graph LR
subgraph SG["セキュリティグループの特徴"]
A["ステートフル"]
B["インスタンスレベル"]
C["許可ルールのみ"]
D["他のSGを参照可能"]
end
style SG fill:#e8f5e9セキュリティグループの主な特徴は以下のとおりです。
| 特徴 | 説明 |
|---|---|
| ステートフル | 戻りのトラフィックは自動的に許可される |
| 許可ルールのみ | 明示的な拒否ルールは設定できない |
| デフォルト動作 | すべての受信を拒否、すべての送信を許可 |
| 評価順序 | すべてのルールが評価され、いずれかにマッチすれば許可 |
| 参照機能 | IPアドレスの代わりに他のセキュリティグループを参照可能 |
Webサーバー用セキュリティグループの設定例を以下に示します。
インバウンドルール:
| タイプ | プロトコル | ポート | ソース |
|--------|----------|-------|------------------------|
| HTTP | TCP | 80 | ALBのセキュリティグループ |
| HTTPS | TCP | 443 | ALBのセキュリティグループ |
| SSH | TCP | 22 | 踏み台のセキュリティグループ |
アウトバウンドルール:
| タイプ | プロトコル | ポート | 宛先 |
|-----------|----------|-------|-----------|
| すべて | すべて | すべて | 0.0.0.0/0 |
ネットワークACL
ネットワークACL(Access Control List)は、サブネットレベルで動作するステートレスファイアウォールです。
| 特徴 | 説明 |
|---|---|
| ステートレス | インバウンドとアウトバウンドの両方のルールが必要 |
| 許可/拒否 | 許可と拒否の両方のルールを設定可能 |
| デフォルト動作 | すべてのトラフィックを許可(デフォルトACL) |
| 評価順序 | ルール番号の小さい順に評価、最初にマッチしたルールを適用 |
| 適用範囲 | サブネット内のすべてのリソースに適用 |
ネットワークACL設定例:
インバウンドルール:
| ルール番号 | タイプ | プロトコル | ポート | ソース | 許可/拒否 |
|-----------|--------|----------|------------|--------------|----------|
| 100 | HTTP | TCP | 80 | 0.0.0.0/0 | 許可 |
| 110 | HTTPS | TCP | 443 | 0.0.0.0/0 | 許可 |
| 120 | カスタム | TCP | 1024-65535 | 0.0.0.0/0 | 許可 |
| * | すべて | すべて | すべて | 0.0.0.0/0 | 拒否 |
アウトバウンドルール:
| ルール番号 | タイプ | プロトコル | ポート | 宛先 | 許可/拒否 |
|-----------|---------|----------|------------|-------------|----------|
| 100 | HTTP | TCP | 80 | 0.0.0.0/0 | 許可 |
| 110 | HTTPS | TCP | 443 | 0.0.0.0/0 | 許可 |
| 120 | カスタム | TCP | 1024-65535 | 0.0.0.0/0 | 許可 |
| * | すべて | すべて | すべて | 0.0.0.0/0 | 拒否 |
セキュリティグループとネットワークACLの使い分け
両者を組み合わせた多層防御が推奨されます。
| 観点 | セキュリティグループ | ネットワークACL |
|---|---|---|
| 主な用途 | アプリケーション固有のルール | サブネット全体のベースラインポリシー |
| 推奨される使い方 | メインのファイアウォール | 追加の防御層、特定IPのブロック |
| 管理しやすさ | 柔軟で管理しやすい | ステートレスのため複雑になりやすい |
ロードバランサーによる負荷分散
クラウドネットワーク設計において、ロードバランサーはトラフィックを複数のサーバーに分散し、スケーラビリティと可用性を向上させる重要なコンポーネントです。
ロードバランサーの種類
クラウドプロバイダが提供するロードバランサーは、OSI参照モデルの動作レイヤーに応じて分類されます。
graph TB
subgraph L7["L7ロードバランサー(アプリケーション層)"]
ALB["Application Load Balancer<br/>AWS: ALB / Azure: App Gateway / GCP: HTTP(S) LB"]
L7Feature["特徴: URL、ヘッダー、Cookie等で振り分け"]
end
subgraph L4["L4ロードバランサー(トランスポート層)"]
NLB["Network Load Balancer<br/>AWS: NLB / Azure: Load Balancer / GCP: TCP/UDP LB"]
L4Feature["特徴: IPアドレス、ポート番号で振り分け"]
end
style L7 fill:#e3f2fd
style L4 fill:#fff3e0| 種類 | レイヤー | ユースケース | 特徴 |
|---|---|---|---|
| L7(アプリケーション)LB | HTTP/HTTPS | Webアプリケーション | URLパスやホストヘッダーで振り分け可能、SSL終端対応 |
| L4(ネットワーク)LB | TCP/UDP | 高パフォーマンス要求、非HTTP通信 | 低レイテンシ、固定IPアドレス、プロトコル透過 |
| ゲートウェイLB | L3 | サードパーティ仮想アプライアンス | ファイアウォール、IDS/IPSとの統合 |
L7ロードバランサーの構成例
L7ロードバランサー(Application Load Balancer)を使用したWebアプリケーションの構成を以下に示します。
graph TB
Client["クライアント"]
subgraph VPC
ALB["Application Load Balancer"]
subgraph TG1["ターゲットグループ: API"]
API1["API Server 1"]
API2["API Server 2"]
end
subgraph TG2["ターゲットグループ: Web"]
Web1["Web Server 1"]
Web2["Web Server 2"]
end
end
Client -->|"example.com/api/*"| ALB
Client -->|"example.com/*"| ALB
ALB -->|"/api/* → API"| TG1
ALB -->|"/* → Web"| TG2
style ALB fill:#4fc3f7L7ロードバランサーで実現できる主な機能は以下のとおりです。
| 機能 | 説明 |
|---|---|
| パスベースルーティング | URLパスに応じて異なるターゲットに振り分け(/api → API、/static → S3) |
| ホストベースルーティング | ホストヘッダーで振り分け(api.example.com → API、www.example.com → Web) |
| SSL/TLS終端 | ロードバランサーで暗号化を終端し、バックエンドはHTTPで通信 |
| ヘルスチェック | 定期的にバックエンドの正常性を確認し、異常なインスタンスを除外 |
| スティッキーセッション | 同一クライアントのリクエストを同じインスタンスに振り分け |
ヘルスチェックの設計
ロードバランサーのヘルスチェックは、バックエンドインスタンスの正常性を監視し、障害発生時に自動的にトラフィックを迂回させます。
ヘルスチェック設定例:
| 項目 | 設定値 |
|------------------------|-------------------|
| プロトコル | HTTP |
| ポート | 80 |
| パス | /health |
| 正常判定しきい値 | 2回連続成功 |
| 異常判定しきい値 | 3回連続失敗 |
| チェック間隔 | 30秒 |
| タイムアウト | 5秒 |
ヘルスチェックエンドポイントの実装例(Node.js)を以下に示します。
|
|
CDN(Content Delivery Network)の活用
CDN(Content Delivery Network)は、世界中に分散配置されたエッジサーバーを利用して、コンテンツを高速に配信するネットワークサービスです。クラウドネットワーク設計において、静的コンテンツの配信やAPIレスポンスのキャッシュに活用されます。
CDNの仕組み
graph TB
subgraph Users["ユーザー"]
User1["東京のユーザー"]
User2["ロンドンのユーザー"]
User3["ニューヨークのユーザー"]
end
subgraph CDN["CDNエッジロケーション"]
Edge1["東京エッジ"]
Edge2["ロンドンエッジ"]
Edge3["ニューヨークエッジ"]
end
Origin["オリジンサーバー<br/>(東京リージョン)"]
User1 -->|近い| Edge1
User2 -->|近い| Edge2
User3 -->|近い| Edge3
Edge1 -->|キャッシュミス時| Origin
Edge2 -->|キャッシュミス時| Origin
Edge3 -->|キャッシュミス時| Origin
style CDN fill:#e8f5e9
style Origin fill:#fff3e0CDNの主なメリットは以下のとおりです。
| メリット | 説明 |
|---|---|
| レイテンシ低減 | ユーザーに近いエッジサーバーからコンテンツを配信 |
| オリジン負荷軽減 | キャッシュによりオリジンサーバーへのリクエストを削減 |
| DDoS対策 | 大規模な分散インフラにより攻撃を吸収 |
| 帯域幅コスト削減 | エッジからの配信によりオリジンの転送コストを削減 |
| 可用性向上 | エッジサーバーの冗長構成により高可用性を実現 |
CDNのキャッシュ戦略
CDNでは、Cache-Controlヘッダーを使用してキャッシュの動作を制御します。
Cache-Control ヘッダーの主なディレクティブ:
| ディレクティブ | 説明 |
|-------------------|----------------------------------------|
| max-age=秒数 | キャッシュの有効期間を秒単位で指定 |
| s-maxage=秒数 | CDN(共有キャッシュ)専用の有効期間 |
| no-cache | キャッシュ前に必ずオリジンに再検証 |
| no-store | キャッシュを一切禁止 |
| private | CDNでのキャッシュを禁止(ブラウザのみ) |
| public | CDNでのキャッシュを許可 |
コンテンツタイプ別のキャッシュ設定例を以下に示します。
静的アセット(CSS/JS/画像):
Cache-Control: public, max-age=31536000
→ 1年間キャッシュ(ファイル名にハッシュを含める前提)
HTMLページ:
Cache-Control: public, max-age=0, must-revalidate
→ 常に再検証(ETagで差分チェック)
APIレスポンス(ユーザー固有データ):
Cache-Control: private, no-store
→ キャッシュ禁止
APIレスポンス(共有データ):
Cache-Control: public, s-maxage=60
→ CDNで60秒キャッシュ
各クラウドプロバイダのCDNサービス
| プロバイダ | サービス名 | 特徴 |
|---|---|---|
| AWS | CloudFront | S3やALBと緊密に統合、Lambda@Edgeでエッジ処理 |
| Azure | Azure Front Door | グローバルロードバランサー機能を統合 |
| Google Cloud | Cloud CDN | Cloud Load Balancingと統合、キャッシュ無効化が高速 |
マルチAZ・マルチリージョン構成
クラウドネットワーク設計において、高可用性と災害対策を実現するためには、複数のアベイラビリティゾーン(AZ)やリージョンにリソースを分散配置することが重要です。
アベイラビリティゾーン(AZ)とリージョン
クラウドプロバイダのインフラストラクチャは、階層的に構成されています。
graph TB
subgraph Region["リージョン(例: 東京)"]
subgraph AZ1["AZ-a<br/>(データセンター群A)"]
DC1["サーバー群"]
end
subgraph AZ2["AZ-b<br/>(データセンター群B)"]
DC2["サーバー群"]
end
subgraph AZ3["AZ-c<br/>(データセンター群C)"]
DC3["サーバー群"]
end
end
AZ1 <-->|低レイテンシ接続| AZ2
AZ2 <-->|低レイテンシ接続| AZ3
AZ1 <-->|低レイテンシ接続| AZ3
style Region fill:#e3f2fd| 概念 | 説明 | 障害範囲 |
|---|---|---|
| リージョン | 地理的に離れた独立したデータセンター群(東京、大阪、バージニアなど) | 大規模災害(地震、台風など) |
| アベイラビリティゾーン | リージョン内の独立したデータセンター群 | 電源障害、ネットワーク障害、施設障害 |
| ローカルゾーン | ユーザーに近い小規模なインフラ(低レイテンシ向け) | 個別の施設障害 |
マルチAZ構成のパターン
単一リージョン内でマルチAZ構成を実現するパターンを以下に示します。
graph TB
Internet["インターネット"]
subgraph Region["東京リージョン"]
ALB["Application Load Balancer<br/>(マルチAZ)"]
subgraph AZ1["AZ-a"]
Web1["Web Server"]
DB1[("Primary DB")]
end
subgraph AZ2["AZ-b"]
Web2["Web Server"]
DB2[("Standby DB")]
end
end
Internet --> ALB
ALB --> Web1
ALB --> Web2
Web1 --> DB1
Web2 --> DB1
DB1 -.->|同期レプリケーション| DB2
style ALB fill:#4fc3f7マルチAZ構成の設計ポイントは以下のとおりです。
| コンポーネント | 設計方針 |
|---|---|
| ロードバランサー | マネージドサービスは自動的にマルチAZ対応 |
| Webサーバー | 各AZに同数のインスタンスを配置 |
| データベース | マルチAZ配置(同期レプリケーション)を有効化 |
| キャッシュ | レプリカを複数AZに分散配置 |
| ストレージ | S3/Blobは自動的にマルチAZ冗長化 |
マルチリージョン構成(DR対策)
災害対策(Disaster Recovery)を考慮したマルチリージョン構成を以下に示します。
graph TB
DNS["Route 53 / Azure Traffic Manager<br/>/ Cloud DNS"]
subgraph Primary["プライマリリージョン(東京)"]
ALB1["Load Balancer"]
App1["App Servers"]
DB1[("Primary DB")]
end
subgraph Secondary["セカンダリリージョン(大阪)"]
ALB2["Load Balancer"]
App2["App Servers"]
DB2[("Replica DB")]
end
DNS -->|"通常時: 100%"| ALB1
DNS -.->|"フェイルオーバー時"| ALB2
ALB1 --> App1
ALB2 --> App2
App1 --> DB1
App2 --> DB2
DB1 -.->|非同期レプリケーション| DB2
style Primary fill:#c8e6c9
style Secondary fill:#fff3e0DR戦略は、目標復旧時間(RTO)と目標復旧時点(RPO)に応じて選択します。
| 戦略 | RTO | RPO | コスト | 説明 |
|---|---|---|---|---|
| バックアップ&リストア | 数時間〜数日 | 数時間 | 低 | バックアップからリストア |
| パイロットライト | 数十分〜数時間 | 分単位 | 中 | 最小構成を待機、障害時にスケールアップ |
| ウォームスタンバイ | 数分〜数十分 | 秒〜分単位 | 高 | 縮小構成でセカンダリを常時稼働 |
| アクティブ/アクティブ | 秒単位 | ほぼゼロ | 最高 | 両リージョンで同時稼働 |
VPC間接続とハイブリッドクラウド
複数のVPCやオンプレミス環境を接続する場合、適切な接続方式を選択する必要があります。
VPCピアリング
VPCピアリングは、2つのVPC間でプライベートIPアドレスを使用して通信する機能です。
graph LR
subgraph VPC1["VPC A (10.1.0.0/16)"]
EC2A["EC2 Instance<br/>10.1.1.10"]
end
subgraph VPC2["VPC B (10.2.0.0/16)"]
EC2B["EC2 Instance<br/>10.2.1.20"]
end
VPC1 <-->|"VPCピアリング接続"| VPC2
style VPC1 fill:#e3f2fd
style VPC2 fill:#fff3e0VPCピアリングの特徴は以下のとおりです。
| 項目 | 説明 |
|---|---|
| 通信方式 | プライベートIPアドレスを使用 |
| 制限事項 | CIDRが重複するVPC間では接続不可 |
| 推移的ルーティング | 不可(A-B、B-Cを接続してもA-Cは通信不可) |
| クロスリージョン | 対応(リージョン間ピアリング) |
| コスト | データ転送量に応じた課金 |
Transit Gateway(ハブ&スポーク構成)
多数のVPCやオンプレミス環境を接続する場合、Transit Gateway(ハブ型アーキテクチャ)が推奨されます。
graph TB
subgraph Cloud["クラウド環境"]
TGW["Transit Gateway<br/>(ハブ)"]
VPC1["VPC 1<br/>本番環境"]
VPC2["VPC 2<br/>開発環境"]
VPC3["VPC 3<br/>共有サービス"]
end
OnPrem["オンプレミス<br/>データセンター"]
TGW <--> VPC1
TGW <--> VPC2
TGW <--> VPC3
TGW <-->|VPN / Direct Connect| OnPrem
style TGW fill:#4fc3f7オンプレミスとの接続方式
オンプレミス環境とクラウドを接続する方式は、要件に応じて選択します。
| 方式 | 帯域幅 | レイテンシ | コスト | ユースケース |
|---|---|---|---|---|
| インターネットVPN | 数百Mbps程度 | 変動あり | 低 | 開発環境、小規模接続 |
| 専用線(Direct Connect等) | 1〜100 Gbps | 安定・低遅延 | 高 | 本番環境、大量データ転送 |
| SD-WAN | 可変 | 中程度 | 中 | 複数拠点の統合管理 |
AWS・Azure・GCPの用語対応表
3大クラウドプロバイダで使用される用語は異なりますが、概念としては共通しています。以下に主要な用語の対応表を示します。
| 概念 | AWS | Azure | Google Cloud |
|---|---|---|---|
| 仮想ネットワーク | VPC | Virtual Network (VNet) | VPC |
| サブネット | Subnet | Subnet | Subnet |
| インターネットゲートウェイ | Internet Gateway | - (暗黙的) | - (暗黙的) |
| NATゲートウェイ | NAT Gateway | NAT Gateway | Cloud NAT |
| ルートテーブル | Route Table | Route Table | Routes |
| インスタンスレベルFW | Security Group | Network Security Group | Firewall Rules |
| サブネットレベルFW | Network ACL | - | - |
| L7ロードバランサー | ALB | Application Gateway | HTTP(S) Load Balancer |
| L4ロードバランサー | NLB | Azure Load Balancer | TCP/UDP Load Balancer |
| CDN | CloudFront | Azure Front Door/CDN | Cloud CDN |
| DNS | Route 53 | Azure DNS | Cloud DNS |
| VPC間接続 | VPC Peering | VNet Peering | VPC Network Peering |
| ハブ接続 | Transit Gateway | Virtual WAN | Cloud Interconnect |
| 専用線接続 | Direct Connect | ExpressRoute | Cloud Interconnect |
| プライベート接続 | PrivateLink | Private Link | Private Service Connect |
ベストプラクティスとチェックリスト
クラウドネットワーク設計を行う際のベストプラクティスをチェックリスト形式でまとめます。
VPC設計のチェックリスト
[ ] 将来の拡張を考慮した十分なCIDRブロックを確保している
[ ] 他のVPCやオンプレミスとCIDRが重複していない
[ ] パブリック/プライベートサブネットを適切に分離している
[ ] 各アベイラビリティゾーンにサブネットを作成している
[ ] サブネットのCIDRは将来の拡張を考慮して設計している
セキュリティ設計のチェックリスト
[ ] 最小権限の原則に基づいてセキュリティグループを設計している
[ ] プライベートサブネット内のリソースにパブリックIPを付与していない
[ ] 踏み台サーバーまたはSystems Manager Session Managerを使用している
[ ] 不要なポートを開放していない
[ ] セキュリティグループでIPアドレスではなくセキュリティグループを参照している
可用性設計のチェックリスト
[ ] 重要なワークロードをマルチAZ構成にしている
[ ] ロードバランサーのヘルスチェックを適切に設定している
[ ] データベースのマルチAZ配置を有効化している
[ ] 災害対策の要件(RTO/RPO)を定義している
[ ] 自動スケーリングを設定している
コスト最適化のチェックリスト
[ ] 不要なNATゲートウェイを削除している
[ ] リージョン間データ転送を最小化している
[ ] CDNを活用してオリジンへのトラフィックを削減している
[ ] 不要なElastic IPを解放している
[ ] VPCエンドポイントを使用してAWSサービスへの通信を最適化している
まとめ
本記事では、クラウド時代のネットワーク設計パターンについて解説しました。
学習した主なポイントは以下のとおりです。
- VPCの基本概念: 論理的に分離された仮想ネットワークで、サブネット、ルートテーブル、セキュリティグループなどを組み合わせて構成する
- サブネット設計: パブリック/プライベートサブネットを適切に分離し、NATゲートウェイでプライベートリソースのインターネットアクセスを実現する
- セキュリティ: セキュリティグループとネットワークACLによる多層防御を実装する
- ロードバランサー: L7/L4ロードバランサーを用途に応じて使い分け、ヘルスチェックで自動復旧を実現する
- CDN: エッジサーバーからのコンテンツ配信により、レイテンシ低減とオリジン負荷軽減を実現する
- 高可用性: マルチAZ・マルチリージョン構成により、障害に強いアーキテクチャを実現する
- ハイブリッドクラウド: VPCピアリング、Transit Gateway、専用線接続などを用途に応じて選択する
クラウドネットワーク設計の知識は、現代のインフラエンジニアやアプリケーション開発者にとって必須のスキルです。本記事の内容を理解したうえで、実際のクラウド環境でハンズオンを行い、理解を深めることをお勧めします。
シリーズの振り返り
本記事は「ネットワーク基礎」シリーズの最終回です。シリーズ全体を通じて、以下の内容を学習しました。
- OSI参照モデルとTCP/IPモデルを図解で理解する - ネットワークの階層構造
- IPアドレスとサブネットマスクの基礎を理解する - アドレッシングの基礎
- ルーティングの基礎とデフォルトゲートウェイを理解する - パケットの経路制御
- DNSの仕組みを基礎から理解する - 名前解決の仕組み
- DNSキャッシュとTTLの仕組みを理解する - DNSの高度な動作
- TCPとUDPの違いを理解する - トランスポート層プロトコル
- ポート番号とソケット通信を理解する - アプリケーション識別
- ファイアウォールの仕組みと設定の基礎を理解する - ネットワークセキュリティ
- NATとプライベートネットワークの仕組みを理解する - アドレス変換
- ネットワークトラブルシューティングに役立つコマンド集 - 実践的なスキル
- クラウド時代のネットワーク設計パターンを理解する(本記事)- クラウドアーキテクチャ
これらの知識を土台として、実際のシステム設計や運用に活かしていただければ幸いです。