【初学者向け】GCP(Google Cloud)を学び始めるときに知っておきたかったこと(後半)

目次

クラウド基盤チームのリーダーをしているS.R.です。
非常に期間が空いてしまいましたが、以下の記事の続きです。

GCP(Google Cloud)の公式ドキュメントを読みこなすための「これを知っていれば、学習効率が上がったなぁ」と思えるポイントを、前後半に分けて解説しています。
前半記事では、Google Cloudの地理的ロケーションの概要とリソースがホストされるロケーションの分類及びその特徴について触れました。

本記事では、VPCネットワークの全体像と具体的な機能について解説します。
リソースがホストされるロケーションとネットワークの対応、そしてそれらの機能の関係がより具体的にイメージできることを目的に記事を書きました。
これによって、一見難解に見える公式ドキュメントでも一貫性を持った形で理解できるようになると考えています。

記事内で耳慣れない言葉がいくつか出てくるかと思いますので、記事の末尾に用語集を用意しました。
記事中の(※番号)がついている単語がわからなかった際に、ぜひご活用ください。

VPCネットワークの構成要素

構成要素におけるグローバルリソース

・VPCネットワーク(※1)
・ファイアウォールルール(※2)
・ルート(※3)

などが、グローバルリソースに当たります。

VPCネットワークについて

Google Cloudの大きな特徴に、このVPCネットワークがグローバルに配置される点が挙げられます。
これは、AWSなどのパブリッククラウドではVPCがリージョンに限定されることと比べると、大きな違いです。

 ▼構成要素におけるリージョンリソース

・サブネット(※4)
・CloudRouter(※5)
・CloudNAT(※6)
・予約済み外部IP(※7)

などがリージョンリソースに当たります。

前述したVPCはIPアドレスレンジ(※8)を持たず、VPCネットワークの配下に作成されるサブネットがIPアドレスレンジを持ちます。
サブネットはリージョンリソースであり、Compute EngineのVMインスタンス(※9)などのゾーンリソースを配置するネットワーク単位になります。

Google Cloudでは単一のグローバルVPC内の複数のリージョンにサブネットを配置できます。
これらのサブネットに配置されたリソースは、追加の接続設定なしに、内部IPアドレス(※10)を介して通信することが可能です。

ゾーンリソースについて

ネットワークの構成要素からは外れますが、

・VMインスタンス
・永続ディスク(※11)

などがゾーンリソースにあたります。

これらは必ず特定のゾーン内(例えば、東京リージョンのゾーンBであれば、asia-northeast1-b)に作成されます。
VMインスタンスであれば、そのVMインスタンスが存在するリージョンに属するサブネットからIPアドレスが割り当てられます。

これによって単一のVPC内で複数のゾーンにまたがってVMインスタンスを分散配置することが可能になります。

サブネット作成モードについて

VPCネットワークを作成する際には、

・自動モード
・カスタムモード

の2つの選択肢があります。

自動モードではGoogle Cloudが提供するすべてのリージョンにサブネットが自動的に作成されます。
一方、カスタムモードでは、リージョンとIPアドレスレンジを自由に指定してサブネットを作成できます。
 本番環境ではカスタムモードでの作成が推奨されています。
公式ドキュメントには、作成モードによる考慮事項がより詳細に記されています。

https://cloud.google.com/vpc/docs/vpc?hl=ja#auto-mode-considerations

(ここまでこの記事を読んだ方なら結構スッと頭に入ってくるんじゃないかと・・・!)

複数プロジェクトをまたぐユースケースについて

単一のプロジェクト内にとどまらないシステムを構築する場合には、複数のVPCネットワークやプロジェクトを接続するアーキテクチャが必要になります。

複数のVPCネットワークを接続する場合には、VPCネットワークピアリング(※12)
複数のプロジェクトをまたいで接続する場合には、共有VPC(※13)の機能が利用できます。

VPCネットワークピアリング

VPCネットワークピアリングは、異なるプロジェクトに属するVPCネットワークを、内部IPアドレスで直接接続するための機能です。
この機能には制限事項があり、ピアリングされたVPC間では、同じもしくは重複するIPアドレスレンジを持つサブネットは設定できません。
そのため、プロジェクトの数が増えるにつれて、管理が非常に複雑になることに注意が必要です。
また、推移的ルーティング(※14)を提供していないため、例えばVPC 1~3の3つのネットワークがある場合に注意が必要です。

・VPC 1 と VPC 2
・VPC 2 と VPC 3

が接続されていても、

・VPC 1 と VPC 3

の接続は提供されません。

この場合、VPC 1 と VPC 3 の間で直接VPCネットワークピアリングの設定をする必要があります。

前述の制限事項も踏まえると、VPCネットワークピアリングはスケーラビリティの観点ではデメリットがあるといえるでしょう。

共有VPC

共有VPCは、単一のプロジェクト(ホストプロジェクト)から、単一のVPCネットワークを複数のプロジェクト(サービスプロジェクト)に対して共有する仕組みです。
これはVPCネットワークピアリングにおける管理の煩雑さを解消し、中央集権的にVPCネットワークを管理することを可能にします。

これによって、各プロジェクトのVMインスタンスの利用者は、ネットワークの設定を意識することなく、複数のプロジェクトにまたがったリソースに対して内部IPでの通信を直接行えます。

主要なマネージドサービスとのプライベート接続

ここまでの記事では、作成したVPCのサブネットに配置されるゾーンリソース間の通信を前提に説明をしていました。
しかし、Google Cloudの代表的なマネージドサービス(※15)であるCloud SQLやCloudRunなどは、ユーザーが管理するVPCにリソースが直接配置されません。
これらのリソースは、サービスプロデューサー(※15)のネットワークに配置されます。
これらのリソースとの内部IPでの通信するにはVPCネットワークと連携させるための機能を利用する必要があります。

プライベートサービスアクセス

プライベートサービスアクセスは、Cloud SQLなどのマネージドサービスと内部IPアドレスで直接通信するための機能です。
前述のVPCネットワークピアリングを利用して通信を実現するため、VPC側で、サービスが通信で利用するための専用のIPアドレスレンジを割り振る必要があります。

サーバーレスVPCアクセス

サーバーレスVPCアクセスは、Cloud Runなどのサーバーレスサービスから、

VPCネットワーク内のリソースに対して内部IPで通信するための機能です。

プライベートサービスアクセスが「マネージドサービスへの接続」を提供するのに対して、サーバーレスVPCは「サーバーレスサービスからVPCネットワーク内部のリソースへの接続」を提供する機能です。

これによって、Cloud Runにデプロイしたアプリケーションから、

VMインスタンス内にデプロイされたAPIを内部IPの通信で実行するといった通信が可能になります。

まとめ

前後半の記事をあわせてGoogle Cloud特有のネットワーク、およびネットワークにおけるリソースの階層構造と、その特性から提供される様々な機能について解説しました。
「学び始めるときに知っておきたかったこと」として、前後半の記事に加えてGoogle Cloudのリソース階層についても解説できればと考えていましたが、今回の記事はここまでとさせていただきます。

また機会があれば、リソース階層についても簡単に触れられたらと思います。今回の記事で、Google Cloudやその公式ドキュメントへのとっつきづらさが少しでも解消されて、興味を持っていただけたら幸いです。

用語解説

番号用語説明
※1VPCネットワークVirtual Private Cloud (仮想プライベートクラウド)の略。インターネットの中に、あなた専用の「自分だけのネットワーク」を作るための場所です。他のクラウドサービスだと、この場所は国や地域ごとに分かれていますが、Google Cloudでは世界中にまたがる大きな一つのネットワークとして作れるのが特徴です。
※2ファイアウォールルールネットワークの「関所」。誰がこのネットワークの中に入れるか、どの通信を許可するかを細かく設定して、セキュリティを守るためのルールです。
※3ルートネットワークの中での「道順」。例えば、「ここからあそこに行きたい」というときに、どの道を通って通信すればいいかを教えてくれる地図のような役割をします。
※4サブネットVPCネットワークという大きな土地を、さらに細かく区切った「小さな区画」です。コンピュータ(VMインスタンス)などのリソースは、この区画の中に置かれます。
※5Cloud Routerあなたの会社や家にあるネットワークと、Google Cloudのネットワークを「つなぐ橋」のようなもの。この橋を通ることで、それぞれのネットワークがスムーズに通信できるようになります。
※6Cloud NATNetwork Address Translation (ネットワークアドレス変換)の略。ネットワーク内にあるたくさんのコンピュータが、インターネットと通信するときに、一つの窓口(パブリックIP)からやり取りできるようにする仕組みです。たくさんのコンピュータに個別の窓口を用意しなくて済むので、管理がとても楽になります。
※7予約済み外部IPインターネットからアクセスするための「固定された電話番号」のようなもの。これを設定すると、いつでも同じ番号でつながるようになります。
※8IPアドレスレンジネットワーク内で使える「IPアドレスの範囲」のこと。「001番から099番までの電話番号は、この区画で使っていいですよ」というように、使えるIPアドレスの範囲を決めます。
※9VMインスタンスVirtual Machine (仮想マシン)の略。Google Cloud上に作られる「仮想的なコンピュータ」です。このコンピュータの上で、プログラムやWebサイトを動かすことができます。
※10内部IPアドレスあなたのネットワークの中でしか使えない「内線番号」。外部からはかけられませんが、ネットワーク内のコンピュータ同士は、この番号で直接つながることができます。
※11永続ディスクコンピュータ(VMインスタンス)に接続する「外部ストレージ」です。コンピュータを消しても、このディスクの中にあるデータは消えずに残るため、大事なデータを保管するのに使います。
※12VPCネットワークピアリング別のネットワークにある「お隣さん」と直接つながる機能。これを使えば、インターネットに出ることなく、お隣さんのネットワークと直接やり取りができます。
※13共有VPC一つのネットワークを、複数のチームやプロジェクトで「共有する仕組み」。一つの大きなネットワークをみんなで使うことで、それぞれがネットワークの設定を気にしなくても良くなります。
※14推移的ルーティング「AからBへ」「BからCへ」の道があるとき、「AからCへ」の道も自動でできるか、という話です。VPCネットワークピアリングでは自動では道ができないので、AとCを直接つなぐ必要があります。
※15マネージドサービスクラウド事業者が提供する、サーバーの管理や運用を代行してくれるサービス全般のこと。利用者は面倒なインフラ管理から解放され、アプリケーション開発などに集中できます。
※16サービスプロデューサーGoogle Cloudが提供してくれる、専門の「おまかせサービス」のことです。例えば、データベースやWebアプリケーションを動かすためのサービスなどがあります。これらのサービスは、あなたのネットワークとは別の、Googleが管理する専用のネットワーク内に置かれています。

レイスシステムソリューションズ株式会社のソフトウェア開発や、
採用に関するお問い合わせについては、下記のリンクにてお問い合わせください。

お問い合わせ