Google Cloud Associate Cloud Engineer試験で学んで驚いたこと

今年の12月から来年2月までCCNP、Google Cloud、AWS6個と資格試験更新祭りなので忙しくてアドベントカレンダーに参加できませんでした。
過去に書いた記事を元にQiitaさんからアドベントカレンダーのスポンサー企業さんの商品を使った記事を書いてくれませんか？みたいなお誘いのメールも来ていたので参加したかったのですが、CCNPの更新試験に一度落ちて完全に追い込まれてしまい、全然余裕がありませんでした。
CCPNは更新期限日に受験した2回目で合格できたので何とか失効せずに済みました。
その後Google Cloud Associate Cloud Engineer試験の更新試験を受けて合格し、少し自信を取り戻せたのでこんな時期になってしまいましたが記事を書きます。
Google Cloud Associate Cloud Engineerの更新試験の勉強で知って驚いたことを早速検証しつつ記事にします。

# Google CloudのVPCって、リージョン跨ぎで構成できるって知ってました？
早速結論なんですが、Google CloudのVPC、Azureで言うところの仮想ネットワーク、AWSは同じくVPCと表現するGoogle Cloud上のプライベートアドレス設定ができるネットワークなんですが、<font color="red">**なんとリージョン跨ぎで構成できます。**</font>
ビックリですよね？
AzureをベースにAWSの技術も習得した私には、**AWSのVPCがAvailability Zoneごとにサブネットを構成しなくてはならないことも驚きでしたが、<font color="red">Google CloudのVPCは更にその驚きを超えてきました。</font>**

# え？どういうこと？
いや、ホントにそうなんですよ。
Google Cloudガチ勢の皆様は周知の事実なんでしょうけど、Azure、AWS勢にしてみたら<font color="red">驚天動地</font>ですよ。

# とりあえず構成図にしてみた。
Azure、AWS、Google CloudとそれぞれでVPC、仮想ネットワークとリージョン、サブネットの関係性を構成図にしてみました。
## まずは<font color="blue">Azure</font>
![Azure構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/5331ca24-5afc-4a2d-57fc-e2bac6f6c382.png)
<font color="red">赤の点線</font>が<font color="red">リージョン</font>です。
リソースグループと仮想ネットワークは別リージョンでもOKなんですが、今回便宜上同じリージョンにしました。
リソースグループまで別リージョンで構成う描いてしまうとめっちゃわかりづらくなりますからね。

## 次に<font color="orange">AWS</font>
![AWS構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/8a521ea9-d7de-17b0-605f-85bc5b810d19.png)
こちらもVPCがリージョンの中にすっぽりと収まる構成ですね。

## そして<font color="blue">G</font><font color="red">o</font><font color="orange">o</font><font color="blue">g</font><font color="green">l</font><font color="red">e</font> <font color="gray">Cloud</font>
無駄に文字の色にこだわってみました。
![GoogleCloud構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/68957a9e-3eb4-aab4-319d-e6638757e5fa.png)
構成図も独特ですね。
黒板に色つきのチョークで手書きしたっぽい風合いです。
分かりやすいのか分かりくいのかわかりませんが、ちょっとオシャレっぽいんでしょうか？
これ、私が勝手にやってるんじゃなくて公式がこんな感じなんですよ。
https://cloud.google.com/blog/ja/products/application-development/13-popular-application-architectures-for-google-cloud

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/76c744cd-47d1-267f-e4ac-9a8137ec44fd.png)

ね？

とまぁ描かれ方に関してはおいといて、構成図としては、**VPCの中にリージョンがすっぽりと収まっている、<font color="red">AzureやAWSとは主従(というか包含関係という表現の方が適切？)が逆転</font>しています。**

# ホンマにそんな構成できるん？
ですよね。
やってみましょう。

## <font color="blue">G</font><font color="red">o</font><font color="orange">o</font><font color="blue">g</font><font color="green">l</font><font color="red">e</font> <font color="gray">Cloud</font>のアカウントを作成したら、次にプロジェクトを作成

はい。
Azureでいうとサブスクリプション、AWSでいうとAWSアカウントですね。
請求単位に関連付く枠組みを<font color="blue">G</font><font color="red">o</font><font color="orange">o</font><font color="blue">g</font><font color="green">l</font><font color="red">e</font> <font color="gray">Cloud</font>ではプロジェクトと表現します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/87e3df1d-11b9-1c99-804b-8fc34c65b821.png)

ちなみに画像にある組織ってのがAWSでいうとAWS Organization、Azureだと管理グループですね。

## プロジェクト作成したら作成したいリソースのAPIを有効化する
プロジェクトが作成されるとこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/9b7ab940-7be5-877e-6f60-628890d61b4b.png)
なんもわかんないですね。
今回はVPCなんですが、VPCを作成しようとするとGoogle Cloud Engine(GCE)のAPIを有効化しないといけません。
左上の三本線をクリックしてCompute Engineをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/e604555b-24f8-030d-55ab-70082c45afc3.png)
Compute EngineのAPIを有効化する画面が出てくるので、有効にするをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/2372f691-221a-5315-a4e3-a744ff47c73d.png)
有効化にするをクリックすると、有効化にするのボタンと<font color="red">赤枠内</font>の画面右上の鈴のボタンが同時にくるくる回り出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/7beccae4-a9e2-0794-27c0-b7dfb444347c.png)

あれ？
UIが変わってる・・・
以前作ったときはこんなUIじゃなかった・・・はず・・・
まぁクラウドあるあるなんで捨ておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/8b2084e5-315c-a759-b8c2-afaf555fb866.png)

## VPCの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/be4f23fe-aacf-014c-cc86-12e1397d8b40.png)
画面左上の三本線をクリックするとメニューが開くので、[VPCネットワーク]を選択してその中にある[VPCネットワーク]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/4b894eb6-a5ce-cd42-d05e-8d5b17d6e839.png)
画面の上の方にある[VPCネットワークを作成]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/ef819da9-8f37-549e-c314-fc9323e20620.png)
VPCの名前は適当に命名して、サブネット作成モードを[カスタム]にしました。
ちゃんと見てないですがたぶん[自動]を選んでしまうと暗黙的にデフォルトとか推奨とかの構成で作成されちゃうんでしょうね。
この[自動]がどんなサブネットを構成してくれるのか興味はありますが、時間がガンガン溶けていくのでいったん[カスタム]で作成しましょう。

## サブネットの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/f9c86b9d-97a3-2885-54e5-be02e3177aad.png)
**ん？**
![サブネット作成_集中線.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/ae6f20a6-57fb-9028-5050-903655b7c840.png)

<font color="red">**な、なんやてー！？**</font>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/2446038c-fb6c-8cf9-e908-60b8aea82980.png)
はい。
毎度集中線が煩いので外しました。
<font color="red">赤枠</font>の通り<font color="blue">G</font><font color="red">o</font><font color="orange">o</font><font color="blue">g</font><font color="green">l</font><font color="red">e</font> <font color="gray">Cloud</font>は<font color="red">**サブネット単位でリージョン分けられます！**</font>

**凄い！**
**<font color="blue">G</font><font color="red">o</font><font color="orange">o</font><font color="blue">g</font><font color="green">l</font><font color="red">e</font> <font color="gray">Cloud</font>！**
<font color="red">**始まってますね！**</font>

# VPCにリージョンを内包してると何が凄いの？
はい。
そうですよね。
そういう疑問、わいちゃいますよね。
お客様の<font color="blue">G</font><font color="red">o</font><font color="orange">o</font><font color="blue">g</font><font color="green">l</font><font color="red">e</font> <font color="gray">Cloud</font>上で構築するシステムの性質次第ですが、複数リージョンに跨ったVPCが必要、でもDBや監査ログなんかはメインで利用しているリージョン、監査部がいるリージョンに集約したいよ、っていう要件が出てきた場合、<font color="blue">AzureだとVnet Peering</font>、<font color="orange">AWSだとVPC Peering</font>が必要でしたが、<font color="blue">G</font><font color="red">o</font><font color="orange">o</font><font color="blue">g</font><font color="green">l</font><font color="red">e</font> <font color="gray">Cloud</font>だと不要です。
ネットワークアドレッシングの節約にもなりますし、なによりもネットワーク構成が単純になります。

# そうなんや。じゃあVPCにリージョンを内包していることによるデメリットは無いの？
あります。
結局リージョン間通信は発生するので、ユーザーは気にしないところでリージョン間通信が発生してしまう、ということですね。
VPCや仮想ネットワークが違うとアドレッシングが違う、アドレッシングと拠点番号なんかが関連付いている場合、またアドレスとホスト名が関連付いているお客様だとリージョンをホスト名から意識しやすいんですが、この前提が崩れてしまいますね。
まぁホスト名の命名規則にIPアドレスを関連付けず、直接リージョン名の一部やリージョンに番号を振ってその番号を付与すれば済む話なんですけどね。
今オンプレミスにある規約を<font color="blue">G</font><font color="red">o</font><font color="orange">o</font><font color="blue">g</font><font color="green">l</font><font color="red">e</font> <font color="gray">Cloud</font>用に変更するのはちょっと面倒かな・・・という程度です。

今日はここまで。