11月8日に Google Cloud Platform にて待ちに待った日本リージョンがリリースされました。
アメリカ、ヨーロッパ、台湾と続きついに日本、しかも東京にGCPデータセンタができました。GAEもGCSもGCEも国内で使えてしまいます。
都内のクライアントからGAE間、GCS間の速さは以前紹介した通りの速さです。
検証! 東京リージョンが来てGCSはここまで速くなった!?気になる値段は?
弊社も東京にあるわけですから使い心地もきっと良いに違いない!
当然、東京リージョンが使えるものは東京リージョンを使うとどんな感じになるのか、興味がありますよね?
そんなわけでGCP御三家サービス(勝手ながら個人的に決めました)間での通信速度はどれくらいなのか、調べてみました。
尚、東京リージョンが使えるサービスはこちらにある通りで、その中によく使われるGCP御三家サービスの App Engine、Compute Engine、Cloud Storageがあります。
Compute Engine から Cloud Storage へ、Cloud Storage から App Engine へ、 App Engine から Compute Engine へファイル又はデータを転送した時にかかった時間をコマンド又はプログラムで計測します。
相対的に転送速度を評価できるように同じリージョンへの転送時間だけではなく、その他のリージョンへの転送時間も計測しました。
目次
東京リージョンのGCE – 各リージョンのGCS間のファイル転送速度
東京リージョンの Compute Engine から各リージョンの Cloud Storage へ300MB相当のファイルを転送した時の通信速度を測りました。
Compute Engine インスタンスに配置したファイルを gsutilコマンドでCloud Storage バケットに転送しました。gsutil の実行時間は timeコマンドで実行時間を計測しました。
その結果、下の表になりました。asia-eastは予想していたより速度が出ませんでしたが、asia-northeast は2番目に速いリージョンと比べて1秒も差がありました。
asia-northeast の転送速度と比較できるように割合を出しました。EUまでは、ほぼ2倍の時間がかかりました。
リージョン | GCE-GCS間の転送時間(秒) | 割合 |
asia-northeast (東京リージョン) |
7.15 | 100% |
us-east | 8.45 | 118% |
us-west | 8.12 | 114% |
europe-west | 14.1 | 197% |
asia east | 8.70 | 122% |
東京リージョンのGCS – 各リージョンのGAE間のファイル転送速度
続いて、東京リージョンの App Engine から各リージョンの Cloud Storage バケット内のファイルを取得する時のレスポンス速度を測りました。
Cloud Storage からファイルを取得できるように、App Engine には Javaのクラスライブラリを使用し、 1MB相当のファイルを取得するWebアプリケーションを作りました。時間の計測には、ミリセカンド単位で時刻を取得できるAPIをWebアプリケーションのプログラム内に配置しました。
ソースコードの一部
long start = System.currentTimeMillis();
GcsFileMetadata metadata = gcsService.getMetadata(fileName);
int fileSize = (int) metadata.getLength();
ByteBuffer result = ByteBuffer.allocate(fileSize);
try (GcsInputChannel readChannel = gcsService.openReadChannel(fileName, 0)) {
readChannel.read(result);
}
long end = System.currentTimeMillis();
System.out.println(“計測結果: ” + end - start + "ms");
return result.array();
リージョン | GCS-GAE間の転送時間(秒) | 割合 |
asia-northeast (東京リージョン) |
0.35 | 100% |
us-east | 1.05 | 300% |
us-west | 0.55 | 157% |
europe-west | 1.30 | 371% |
asia-east | 0.51 | 146% |
東京リージョンのGAE – 各リージョンのGCE間のファイル転送速度
最後に、東京リージョンの Compute Engine インスタンスからに乗ってる1MB相当のファイルを各リージョンの App Engine にて取得する時のレスポンス速度を測りました。
Compute Engine には、HTTPサーバに1MB相当のファイルを設置し、App Engine にはそのファイルをURLFetchで取得するようなWebアプリケーションを設置しました。
各リージョンの App Engine に乗せたWebアプリケーションのソースコードの一部
URLFetchService ufs = URLFetchServiceFactory.getURLFetchService();
URL url = new URL("http://{東京リージョンのGCEのIPアドレス}/");
long start = System.currentTimeMillis();
HTTPResponse res = ufs.fetch(url);
long end = System.currentTimeMillis();
LOGGER.info(end - start + "ms");
HTTP経由ですが、東京リージョンとそれ以外のリージョンとの乖離が大きいです。
東京リージョン内のGCEインスタンスとGAE間はとてつもなく速いです。
リージョン | GAE-GCE間にかかった時間(秒) | 割合 |
asia-northeast (東京リージョン) |
0.05 | 100% |
europe-west | 1.41 | 2820% |
us-central | 1.08 | 2160% |
us-east | 1.34 | 2680% |
東京リージョン内で各サービスを組むとやはり凄く速い
東京リージョンと他のリージョンへの通信速度を比較してみました。結果の通り、通信速度は東京リージョン間の1.1倍以上開きました。
もし東京リージョンがGCEだけのリリースだったら毎回の通信に1.1倍も時間がかかっていたことでしょう(10回通信すれば1回分の通信時間が捻出できます)。しかし、幸いなことに App Engine 含め、いくつかのサービスが東京リージョンで使えるようになり、他リージョンとの転送速度を気にせず、東京リージョン完結型のGCP環境を実現できます。日本での利用にはもちろん速いですし。
ちなみに、弊社ではクラウドエース(Cloud Ace)というGCPの導入・運用支援サービスを提供しておりますので、ご興味のある方はこちらまでお問い合わせください。GAEに限らず、あらゆるGCPサービスのサポートが可能です。