エンジニアブログ

Engineer's Blog

絞り込んで表示する

2016.11.08 - 

GCP 東京リージョン(asia-northeast1) の性能を測定しました [GAE・Datastore・CloudSQL編]

こんにちは!サーバエンジニア・データベースエンジニアの熊野です。

前回のエントリでは GCP 東京リージョン(asia-northeast1)のうち、GCE・GCS・CloudSQLを評価いたしましたが、今回はGAE・DatastoreおよびGAEからCloudSQLへの接続に関して評価した結果をまとめました!

概要

今回測定する項目・環境の概要を以下に記します。

性能評価項目

性能評価対象としたのは以下のGCP Resouceとなります。

  • GoogleAppEngine (GAE)
  • GoogleCloudDatastore (Datastore)
  • GoogleCloudSQL (CloudSQL)

性能評価環境(構成図)

測定の為に構築した環境は下図のとおりです。

GAEに関しては国内リージョンであるasia-northeast1と、今までGAEで主に利用されていたus-centralを弊社オフィス(福岡)から比較して測定しています。

DataStoreに関してはそれぞれのリージョン内で処理時間を測定しています。

CloudSQLに関しては検証時においてasia-northeast1での開設が実現されていない為、既存の構成であるus-central内での処理時間を基準として、asia-northeast1のGAEからus-central1およびasia-east1のCloudSQLに対して実施したリクエスと処理時間を比較しました。

※11/8 11:00AM 現在、CloudSQLにおいてもasia-northeast1に構築可能です。
 検証結果は追ってご報告させていただきます!

img_performance02

測定方法および結果

GAE、Datastore、CloudSQLに対する測定方法および結果を以下に記します。

1:GAEの比較

測定方法

それぞれのリージョンにCloud Consoleのチュートリアルに従って"Hello World!"を返すGAEを構築しました。
また、負荷によりinstanceが増加しないようapp.yamlに設定を入れています。

構築したGAEに対してそれぞれ弊社オフィスからabコマンドをリージョン毎に10セット実行し、一番上と下の値を省いた8回分の平均値を比較しました。

結果

GAE上のコンテンツで応答時間は異なる為、今回はasia-northeast1で構築したGAE上の1リクエストあたりの応答時間を1として、us-centralとの応答時間を比較しました。
(グラフの棒が短いほど性能として優秀となります。)

GCEと同様にasia-northeast1の方が優秀であり、asia-northeast1と比較してus-central1の応答時間が1.79倍となる結果となりました。

gae

 

2:Datastoreの比較

測定方法

それぞれのリージョンにのGAEにputを10万件分繰り返すfunctionおよびgetを1万回繰り返すfunctionを記載したファイルをデプロイし、GAE上から実行しました。
リージョン毎にそれぞれ10回測定し、一番上と下の値を省いた8回分の平均値を比較しました。

結果

今回「asia-northeast1上のDatastoreのパフォーマンスが既存のus-centralと同等程度を保証すればいいな。」程度の気持ちだったのですが、put/getともにasia-northeast1の方が応答時間が短く、パフォーマンスが高い結果となりました。

(特にputに関しては2倍以上の性能結果となりました。)
検証結果より「Datastoreの性能向上の為にasia-northeast1に移行する。」という選択肢がありえるのでは、と考えられます。

しかしながら、今回の測定ではtransactionやancestorなどを用いておらず、実際のアプリケーションで利用されるケース全てを網羅したテストではない為、移行を検討される際には実際に利用されている(もしくは近い)データであったり、実際のアプリケーションで流しているクエリでのテスト・検証を実施されることを強くお勧めいたします。

datastore-put

datastore-get

3:Cloud SQLの比較

測定方法

前回の検証と同様、検証時においてはasia-northeast1にCloud SQLの構築ができない状況です。
よって以下の3パターンで処理時間の測定を行いました。

パターンA: 既存のus-central構成(基準値)
  us-central (GAE) -> us-central1 (CloudSQL)

パターンB: 東京リージョンから既存のCloudSQLへの接続
  asia-northeast1 (GAE) -> us-central1 (CloudSQL)

パターンC: 東京リージョンから一番近そうなasia-east1のCloudSQLへの接続
  asia-northeast1 (GAE) -> asia-east1 (CloudSQL)

上記パターンでCloudSQLに測定を実施しています。
select now() from dual コマンドを1000回実行、かかった時間を10回測定し一番上と下の値を省いた8回分の平均値を比較しました。

結果

GCEの測定時と同様にasia-northeast1からリージョンを跨いでのアクセスの為、既存の構成と比較するとパターンBでは105.24倍の応答時間、パターンCでは31.79倍の応答時間が掛かってしまい、大きく性能を落とす結果となりました。

gae-cloudsql

まとめ

GCEと同様にGAEにおいてもasia-northeast1 へのHTTPリクエストは既存リージョンより高いパフォーマンスが実現出来ることが今回の検証で分かりました。

また、Datastoreにおいてはレイテンシとは関係なく、us-centralと比較してasia-northeast1のパフォーマンスが高いという結果となりました。

ただし、こちらもGCEと同く残念な結果となったのですが、CloudSQLに関してはリージョンを跨いだアクセスとなった場合、大きくパフォーマンスを落としてしまう結果となりました。
同一のasia-northeast1リージョン下に構築することでパフォーマンスが改善されることを期待すべく、引き続き検証を実施いたします。

最後に

前回と同様ですが、お決まりの告知をさせてください。

グルーヴノーツではインフラエンジニアを募集中です!
一緒にGCPやDockerなど流行の技術を利用して自社サービスの設計から運用まで携わってみませんか。

インフラエンジニア以外の応募もお待ちしていますので、詳細は弊社採用情報のページを参照ください。