GCPの北米に建てたインスタンスへの通信が早くなった気がするのでAWSと比較してみた


# はじめに
ぼくは貧乏なので、無料で使えるネットワークとかサーバが欲しいです。いろいろ試したり、気軽にぶっこわしていいやつ。お金持ちのみんな、オラにインスタンスとかネットワークを分けてくれ！:relaxed:

### お金持ち？のみんな
GCP：[AlwaysFree](https://cloud.google.com/free/docs/always-free-usage-limits?hl=ja)
AWS：[クラウド無料利用枠](https://aws.amazon.com/jp/free/)

インスタンスを使いたいだけで、性能はショボくてよいなら、AWS(EC2)ならt2.mircoスペックで1年間、GCP(GCE)ならf1-microスペックが**永久無料**です。あとはなんか無料で使えるDNSとかLet'sEncryptとかいろいろ使って、お安く環境構築しましょう。:muscle_tone2:

### GCPのAlwaysFreeの制限
**永久無料**なんて太っ腹だな！！って思いますが、じつはGCPのインスタンスサービスであるGCEのAlwaysFreeは制限があり、**北米リージョン**のみでしか使えません。残念ながら東京にはない。AWSは東京でも無償枠ありますが、こちらは1年縛り。


# 本題

## 2年ぐらい前の個人的な体験談
正確な時期は忘れましたが、AlwaysFreeかーすげぇなーって思ってなんとなくGCP北米リージョンに建ててみたものの、そこはまぁ北米。海底ケーブルを渡るので当然ですがレイテンシがあります。具体的な数値は記録してなかったので忘れましたが、うーん、普通にSSHログインして使うのはちょっと厳しいなぁ、という感じでした。残念。
当時建てたインスタンスは**およそ2年間建てっぱなしで放置しました**が、一度もダウンすることはありませんでした。去年夏ごろに思い出して削除。

## 直近（この年末年始らへん）
またちょっと気軽に使えるインスタンス欲しいなと思い、GCEの us-west-1b に1台インスタンスを建てたところ、あれ以前思ったよりも快適だなと。レイテンシはあるっちゃあるけど、これぐらいならまあ使えるなあといった感じ。
VSCodeのSSH FSを使って、東京のインターネットからSSH越しでのファイル編集も普通にできるレベルになってると感じました。

## どれくらいよ？ping測定
とりあえず簡単にping。自分の自宅のインターネット回線から実施。

### GCP(GCE)
リージョンは us-west-1b(The Dalles, OR)　※オレゴン州ダレス（テキサスのダラスではない）
西海岸ですね。

```
 # ping -c 10 35.233.199.xxx
PING 35.233.199.xxx (35.233.199.xxx) 56(84) bytes of data.
64 bytes from 35.233.199.xxx: icmp_seq=1 ttl=53 time=95.8 ms
64 bytes from 35.233.199.xxx: icmp_seq=2 ttl=53 time=96.5 ms
64 bytes from 35.233.199.xxx: icmp_seq=3 ttl=53 time=98.4 ms
64 bytes from 35.233.199.xxx: icmp_seq=4 ttl=53 time=98.8 ms
64 bytes from 35.233.199.xxx: icmp_seq=5 ttl=53 time=110 ms
64 bytes from 35.233.199.xxx: icmp_seq=6 ttl=53 time=100 ms
64 bytes from 35.233.199.xxx: icmp_seq=7 ttl=53 time=110 ms
64 bytes from 35.233.199.xxx: icmp_seq=8 ttl=53 time=101 ms
64 bytes from 35.233.199.xxx: icmp_seq=9 ttl=53 time=124 ms
64 bytes from 35.233.199.xxx: icmp_seq=10 ttl=53 time=126 ms

--- 35.233.199.xxx ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9008ms
rtt min/avg/max/mdev = 95.843/106.431/126.509/10.816 ms
```
100ms前後で通信できてる模様。なるほど北米まででこんなものか。

### AWS(EC2)
リージョンは同様に us-west-2(オレゴン)　です。

```
 # ping -c 10 54.191.10.yyy
PING 54.191.10.yyy (54.191.10.yyy) 56(84) bytes of data.
64 bytes from 54.191.10.yyy: icmp_seq=1 ttl=231 time=111 ms
64 bytes from 54.191.10.yyy: icmp_seq=2 ttl=231 time=111 ms
64 bytes from 54.191.10.yyy: icmp_seq=3 ttl=231 time=114 ms
64 bytes from 54.191.10.yyy: icmp_seq=4 ttl=231 time=120 ms
64 bytes from 54.191.10.yyy: icmp_seq=5 ttl=231 time=131 ms
64 bytes from 54.191.10.yyy: icmp_seq=6 ttl=231 time=127 ms
64 bytes from 54.191.10.yyy: icmp_seq=7 ttl=231 time=116 ms
64 bytes from 54.191.10.yyy: icmp_seq=8 ttl=231 time=127 ms
64 bytes from 54.191.10.yyy: icmp_seq=9 ttl=231 time=118 ms
64 bytes from 54.191.10.yyy: icmp_seq=10 ttl=231 time=111 ms

--- 54.191.10.yyy ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9008ms
rtt min/avg/max/mdev = 111.449/119.293/131.787/7.050 ms
```
こちらも110ms前後で通信できてる模様。GCEにはちょっと負けますが、こちらもわりかし安定しているようです。

## ネットワーク経路
せっかくなので経路も確認してみましょう。
貧困なので、[ThousandEyesのFreeTrial](https://www.thousandeyes.com/)でホップ情報可視化して見ます。
ThsousandEyesのFreeTrialでは、日本からは東京/KDDIネットワークのエージェントが使えます。

### GCP(GCE)

![gcp1.png](https://qiita-image-store.s3.amazonaws.com/0/51774/353e9e05-0ca6-714e-36cf-096000531cd3.png)
スタート(Tokyo/KDDI ThousandEyesのエージェントがインストールされたサーバ)からゴール（GCEのインスタンス）までの経路が一本の線で表示されています。赤字部分は、最も遅延が発生（ >80ms でフィルタ）した箇所。これをチェックすると、

![gcp2.png](https://qiita-image-store.s3.amazonaws.com/0/51774/bb041272-2eea-1dba-eeda-e7b1d40566d6.png)
ここまでは日本国内、東京のKDDIのネットワークを通り、

![gcp3.png](https://qiita-image-store.s3.amazonaws.com/0/51774/fc90dd61-c2ca-eaea-47fc-6b73d729c1fe.png)
ここでGoogleのネットワークへ接続、まだ日本国内

![gcp4.png](https://qiita-image-store.s3.amazonaws.com/0/51774/0fd45b1e-4528-72d5-760d-bcc51549a090.png)
ここで、LocationがUSになります。おそらく赤をつけた部分（このネットワーク経路で最もlatancyがあった箇所）は、太平洋を海底ケーブルでくぐってる箇所なのでしょう。

あとはそのままGoogleの網を通り、目的のインスタンスへ。

### AWS(EC2)

おなじエージェントから、同様にネットワーク経路を確認してみます。

![aws1.png](https://qiita-image-store.s3.amazonaws.com/0/51774/13b4e70c-25c8-68a2-3f63-76e5f03010ad.png)
ホップ数は23、GCPのときよりちょっと増えましたね。

![aws2.png](https://qiita-image-store.s3.amazonaws.com/0/51774/47de74eb-828f-642b-f82c-7eb4cbe667ca.png)
今回もっともlatancyがあった(>80ms)のはこちらのようです。ただこれ、、、

![aws3.png](https://qiita-image-store.s3.amazonaws.com/0/51774/ca4b31bb-c38c-bfbd-9fa7-b4c33580f5d8.png)
KDDIの網内や、AWS関係ない:sweat:

![aws4.png](https://qiita-image-store.s3.amazonaws.com/0/51774/5947bfc9-14de-c898-8d4c-9c86a49843c8.png)
そしてこのホップから

![aws5.png](https://qiita-image-store.s3.amazonaws.com/0/51774/142fab12-17f4-debc-8572-41d281fe85db.png)
ズバっと Seattle, Washington, US へジャンプ！アメリカのインターネットへ到達していることがわかりますね。

![aws6.png](https://qiita-image-store.s3.amazonaws.com/0/51774/bb9fef9c-8b64-2632-f9e2-3d0977e1b655.png)

ここまで、アメリカ国内のネットワークを通過し、![aws7.png](https://qiita-image-store.s3.amazonaws.com/0/51774/dc4a9226-c310-eeb5-de0d-e24bf41fb12e.png)
目的のインスタンスへ到達。
白玉になっている場所は情報が取得できなかったホップです。icmp応答を許可していないのでしょう。おそらくAWS網内。

# まとめ
今回の計測で、以下のことが確認できました。

* 日本国内から北米GCPインスタンスへ接続する場合、日本国内でGoogleの網に入りGoogleの海底ケーブルを通って北米環境へリーチする
* 日本国内から北米AWSインスタンスへ接続する場合、インターネットを通って北米に到達してから、北米内でAmazonの網に入りインスタンスへリーチする

Googleがネットワークへ投資している（AWSがしていないわけではない）ことがよくわかった計測かと思います。
ぜひGoogleのネットワークの恩恵を（無償で）受けましょう:relaxed:

## 大事なこと
* この計測は、2019/01/07 22時ごろ（JST)に、ほんの1回だけping/icmpで計測されたものです。本当にネットワーク速度が計測する必要があれば、もっと長時間、また複数のプロトコルで測定することをお勧めします。
* インターネット経路は状況により大きく変わります。この結論はただ1回の計測で示されたものであり、あくまで本記事を読むときの参考としてください。

## 参考
[(GCP)クラウドのロケーション/ネットワーク](https://cloud.google.com/about/locations/?hl=ja#network-tab)
[(GCP)『ドラゴンボール レジェンズ』の舞台裏を支える Google Cloud](https://cloudplatform-jp.googleblog.com/2018/06/Behind-the-scenes-with-the-Dragon-Ball-Legends-GCP-backend.html)
[(GCP)新リージョンと海底ケーブルの増設でグローバル インフラストラクチャを拡張 ](https://cloudplatform-jp.googleblog.com/2018/01/expanding-our-global-infrastructure-new-regions-and-subsea-cables.html)

AWSはネットワーク紹介系の記事なかったかしら。。:thinking: