フューチャー夏休み自由研究連載の9回目です。
はじめに
こんにちは、TIG DXユニットの西田と申します。
業務では GCP
のインフラの設計/構築/運用を担当しております。私は前職でネットワーク領域のキャリアが長かった事もあり、現職では GCP
の中でも特にネットワークに関する部分を見ています。今回の自由研究もそれに関連する考察をしていきます。
記事について
クラウド上で、ワールドワイドのサービスを作るとき、『どれくらいの密度でどの Region にサーバを立てればよいのか?』って、悩みませんか? インターネット向けのWebサービスだったら CDN
で対処すれば基本的にはOKですが、イントラネットだけからアクセスさせたい社内サービス、Backend 系のサービス、Webサービスではないアプリケーションなどはインスタンスを用意する必要が出てきますよね。
選択肢としては以下です。
- 全リージョンにサーバを構築する
- 日本の場合、東京、大阪にそれぞれ構築する
- 近傍の国を1つのリージョンにまとめる
- 日本の場合、東京だけに集約する
今回は、自由研究という事で、日頃業務で使っている GCP
を題材にして、ネットワークの観点から考察してみようと思います。先に申し上げておきますと、一観点からの考察なので、実際のサービスが提供しているSLAにマッチするかどうかは別問題なので、そこはご容赦ください🙇♂️
自由研究で考察する観点
ネットワークの観点と言っても、いくつかありますよね。
- スループット:
〇Gbps
などの帯域の話。『ギガがなくなった』とかのギガとは少し違います。 - レイテンシ:パケットの往復の時間
- ジッター:上記の時間の揺らぎ。早いときと遅いときのばらつき度合い
今回は、この中でレイテンシだけに注目して考察します。
(データ量がそこそこあるサービスの場合はスループットも気にするべきですが、本記事ではレイテンシのみに注目)
GCP のリージョンとは?
こちらに世界地図とネットワークケーブルの概要が掲載されております。
https://cloud.google.com/about/locations?hl=ja#network
この線を通ってパケットがやり取りされるわけですが、近いところは早く応答が返ってくるし、遠いところは応答が遅いという事です。
では、サービス目線で言うと、どれくらい集約できるんでしょうかね?
集約する基準
まず、集約する基準を決めておきます。
かなり感覚論ですし、サービスの種類や作りにも当然依存しますが、大体私の経験上はこれくらいです。
レイテンシ | 日常使用で同程度なモノ | 体感 |
---|---|---|
20ms 以下 | 固定の光回線 | とても速い。さくさく |
60ms 以下 | スマホ4Gくらい | まぁこれくらいは我慢出来る |
それ以上 | 4Gで遅い時/3G利用など | これは遅い…使いたくない |
なので、**60ms
までは集約可能**と判断する事にします。
※重ねてになりますが、提供するサービスの種類/作りにこの基準は大きく依存します。音声系・映像系だと遅いと致命的な影響を受けますが、ファイルサーバの様なサービスだともう少し基準を下げられる、などはあり得ます。
GCP の全 Region 間のレイテンシを計測する
計測対象
こちらの Compute Engine リージョンとゾーン に記載の全Region を対象にします。
※すいません、ムンバイだけ、QuotaがデフォルトでCPUS:0となっており、上げるリクエストを出したんですが、拒否されてしまいました。その関係で、ムンバイだけ計測が出来ませんでした🙇♂️
- フルメッシュで計測
- ping を 100ms 毎に 100 回打って、その返答の平均値
※インスタンス構築のための Terraform
コード、計測のためのスクリプトはAppendixに載せておきます。
スクリプトは並列処理をするべきでした。そこはちょっと作り足りない感があります。
計測結果
計測結果は以下です。
- 青:20ms。サクサク
- 黄:60ms。ギリギリ我慢できるレベル
- 赤:それ以上。これはサービスとしてはよろしくない
考察
考察に当たっては、少しを前提を置きます。
- 対象となる企業は、グローバル展開している日本企業(
Japanese Multinational Corporations
)であり、Japan に Global Headquarters(GHQ
) が存在する。- 人数的には、Japan が最も従業員/顧客が多い。
- 各国の支社/支部がイントラネットを通じて社内向けのサービスにアクセスする。
割と現実的な前提ですよね。その前提を元に、考えると、以下の様になります。
- 東京:日本/韓国/台湾/香港を集約(台湾/香港は、香港に別だしでも良い秒数)
- GHQがあるので、まずはココを起点に考えます。
- シンガポール:東南アジア地域をカバー
- オーストラリア:オセアニア地域。シンガポールまで結構遠いんですね。
- ドイツ:ヨーロッパ地域(北欧だけは別だしでも良い秒数)
- 米国アイオワ:北アメリカ地域(東西で分けても良い秒数)
- ブラジル
まぁ、なんていうか。。。『まぁそうだよね』感のある考察になりますね。。。
実際、これくらいをベースにリージョンを集約している事が多いんじゃないかと思います。そこに対して、レイテンシという観点での1つの裏付けにはなったかなと思います。
終わりに
今回は『自由研究』という事で、日頃使っているツールに関して、少し深掘ってみました。
他にもルーティングに関する考察や、Peering, HA VPN の使い分けに関する考察も自分の中ではあるので、どこかで深堀りしていければと思います。
ついでに(GCPのスループットについて)
理論値というか、UDPベースではこの様になります。
- インスタンス間のスループットは、
2Gbps/CPU
となる。上限は 8CPU の16Gbps
- n1-standard-1 :
2 Gbps
- n1-standard-4 :
8 Gbps
- n1-standard-8 :
16 Gbps
(以降、CPUを増やしてもスループットは増えない)
- n1-standard-1 :
※TCP ベースだと、TCPのフロー制御の関係で上記ほどの数値を出すためにはOSのパラメータの調整が必要になります。
Appendix
Terraform コード
resource "google_compute_instance" "GCE_instances" { |
resource "google_compute_network" "test_network" { |
resource "google_service_account" "nw_tester" { |
locals { |
terraform { |
各種script
|
|
使い方
sh sh-exec.sh |