GCPで仮想マシン(Compute Engine)を動かしたり、データベースを構築したりする際、それらのリソースがお互いに通信したり、インターネットに接続したりするためには「ネットワーク」が必要です。GCPでは、このネットワーク環境を「VPC(Virtual Private Cloud)ネットワーク」*という形で提供しています。
例えるなら、VPCネットワークは、あなた専用の「プライベートな仮想的な敷地」です。そして、その敷地をさらに区切るための「区画」が「サブネット」です。
1. VPCネットワーク:GCP上の「あなた専用の仮想的な敷地」
VPCネットワークは、GCP上に構築される論理的に隔離された、あなた専用のプライベートネットワークです。物理的にはGoogleの広大なネットワークインフラの一部ですが、論理的にはあなただけの独立したネットワーク空間として機能します。
イメージしてみてください:
あなたが新しい家を建てるとします。まず、大きな土地(Googleのデータセンター)の中から、あなた専用の「敷地」を確保します。この敷地がVPCネットワークです。この敷地内には、あなたが必要とする様々な建物(仮想マシン、データベースなど)を自由に建てることができます。
- VPCネットワークの主な特徴:
- グローバルな範囲: VPCネットワークは、特定のリージョンやゾーンに限定されず、グローバルな範囲を持ちます。これは、一つのVPCネットワークを世界中のリージョンにまたがって利用できるということです。
- 論理的な隔離: あなたのVPCネットワークは、他のGCPユーザーのVPCネットワークから完全に隔離されています。これにより、セキュリティとプライバシーが確保されます。
- 自由なルーティング: VPCネットワーク内では、あなたが定義したルールに基づいて、リソース間の通信を自由にルーティングできます。
- デフォルトVPCとカスタムVPC:
- GCPプロジェクトを作成すると、あらかじめ
default
というVPCネットワークが自動的に作成されます。これはすぐに使い始められるようにするためのものです。 - しかし、より複雑な要件やセキュリティ要件がある場合は、自分で新しくVPCネットワークを作成する「カスタムVPC」を使うことが一般的です。
- GCPプロジェクトを作成すると、あらかじめ
2. サブネット:VPCネットワーク内の「区画」
VPCネットワークという大きな敷地の中に、さらに細かく区切られた「区画」がある、それが「サブネット(Subnetwork)」です。各サブネットには、それぞれ固有のIPアドレス範囲(CIDRブロック)が割り当てられます。
イメージしてみてください:
先ほどのあなたの「敷地(VPCネットワーク)」の中に、さらに「リビングエリア」「寝室エリア」「ガレージ」のように、それぞれの目的ごとに部屋を区切るようなものです。それぞれの部屋(サブネット)には、そこに属する家具や家電(仮想マシン、データベースなど)が配置されます。
- サブネットの主な特徴:
- リージョンに紐付く: サブネットは、必ず特定のリージョンに紐付けられます。例えば、「東京リージョン用のサブネット」「大阪リージョン用のサブネット」という形です。
- IPアドレス範囲の定義: 各サブネットには、
10.128.0.0/20
のような形でIPアドレスの範囲が割り当てられます。この範囲内のIPアドレスが、そのサブネット内に作成されるリソース(仮想マシンなど)に割り当てられます。 - 通信の分離: サブネットを分けることで、アプリケーションサーバーとデータベースサーバーを異なるサブネットに配置し、それぞれの通信ルールをより細かく制御するといったことが可能になります。これはセキュリティと管理のしやすさにつながります。
- デフォルトサブネット:
default
VPCネットワークには、主要な各リージョンにデフォルトでサブネットが作成されています。
VPCネットワークとサブネットの関係性
- VPCネットワークが全体: まずVPCネットワークという大きなネットワーク空間を作成します。
- サブネットが部分: そのVPCネットワークの中に、必要な数のサブネットを作成します。各サブネットは異なるリージョンに配置できます。
- リソースはサブネット内に配置: 仮想マシンなどのリソースは、必ずいずれかのサブネット内に配置されます。そして、そのサブネットのIPアドレス範囲から内部IPアドレスが割り当てられます。
例で考えてみましょう:
- あなたはまず「
my-production-vpc
」というVPCネットワークを作成しました。(敷地を確保) - 次に、このVPCネットワーク内に以下のサブネットを作成します。
- 「
asia-northeast1-subnet-app
」(東京リージョン): ウェブアプリケーションのサーバー用(リビングエリア) - 「
asia-northeast1-subnet-db
」(東京リージョン): データベースサーバー用(寝室エリア) - 「
asia-northeast2-subnet-app
」(大阪リージョン): 大阪ユーザー向けのアプリケーションサーバー用(別荘)
- 「
- これで、東京のアプリケーションサーバーは
asia-northeast1-subnet-app
に、データベースはasia-northeast1-subnet-db
に、といった形で配置し、それぞれのサブネットのIPアドレス範囲内で内部通信が行われます。
まとめ:ネットワーク設計の基礎
VPCネットワークとサブネットは、GCPでシステムを構築する際の、ネットワーク設計の最も基本的な部分です。
- VPCネットワーク: あなた専用の仮想的なプライベートネットワーク空間。グローバルに広がる。
- サブネット: VPCネットワーク内の「区画」。特定のリージョンに紐付き、IPアドレス範囲を持つ。リソースはサブネット内に配置される。
これらを適切に設計することで、セキュリティが高く、効率的で、将来の拡張にも対応しやすいネットワーク環境をGCP上に構築できるようになります。最初は少し難しく感じるかもしれませんが、VPCネットワークとサブネットの概念をしっかり理解することが、GCPのネットワークを使いこなすための第一歩です!