アジア(Tokyo)に最適なAuth0リージョンを探してみる

2020.10.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

現在,Auth0のパブリックリージョンは、アメリカ、ヨーロッパ、オーストラリアの3つから選択できます。

東京にあるデータセンターからAuth0にアクセスする場合、どのリージョンを選べばいいのか、ログインにかかる時間をもとに考えていきたいと思います。

ちなみに、Auth0のコミュニティでは地理的に近いオーストラリアを推奨していました。

やってみる

環境

New RelicのSynthetics(Tokyoを使用)を使って計測してみます。

計測は、Auth0のAuthentication APIの以下のエンドポイントを使用します。

  • Get Token(POST /oauth/token)
  • User Profile(GET /userinfo)

トークンを取得し、ログインユーザーの情報を取得するスクリプトをSyntheticsで取得し、可視化してみます。

Tokenの取得には、Resource Owner Password形式を使ってみました。

Auth0

  • Application TypeにSingle Page Applicationを設定したApplicationを作成します
  • ApplicationのAdvanced SettingsのGrant TypesでPasswordを加えます。
  • ログインユーザーを登録します(コネクションはUsername-Password-Authenticationにしました)

これらをリージョンごとに分けた3つのテナントで行います。

New Relic

  • synthetics monitorを作成します

    • monitor type には API Test を選択
    • monitoring locations には Tokyo, JP を選択
    • schedule は 1min を選択 (間隔が短いほど料金がかかるので注意しましょう)

続いてスクリプトを作成します。

  • Get Token(POST /oauth/token)
  • User Profile(GET /userinfo)

トークンを取得し、それを使ってUser Profileを取得するスクリプトを用意します。

上記ドキュメントを参考にして作成してみます。

作成が終わったら、Script your stepsのテキストボックスに貼り付け、Validateボタンを押して実行の確認をします。

動作確認が取れたらCreate Monitorを押して登録完了です。

スケジュールに設定した間隔でAPI Testが実行され続けます。

アメリカ、ヨーロッパ、オーストラリアへのエンドポイントごとにmonitorを作成しましょう。

可視化

synthetics monitorのサマリー画面を見ると、Load Timeなどの情報を確認することができます。

ResultsResourcesの画面では、より詳細な情報が確認できるので色々と見て回ってみましょう。

例えば、ResultsNetwork timingsを比較してみると、リージョンごとに差があることが見てとれました。

Insightsを使って3つのリージョンへの実行時間をグラフにする

New RelicのInsightsというサービスで、New RelicにためられたデータをNRQLという言語でクエリして情報を取得することができます。

3つのリージョンへの実行時間をグラフ化してみます。

クエリ例:

SyntheticCheck: 特定のモニターの1回の実行からメトリックを返します。これらのメトリックには、モニターの期間情報、モニターチェックの場所、要求と応答のヘッダーのサイズ、モニターのタイプ、およびタイムスタンプが含まれます

  • 特定の時間から、5分毎のduration(応答時間)平均をモニターごと(アメリカ、ヨーロッパ、オーストラリア用)に表示するクエリです。
SELECT average(duration) FROM SyntheticCheck FACET monitorName TIMESERIES 5 minute since 1601523900

  • 特定の時間から、5分毎のdurationの50パーセンタイルをモニターごと(アメリカ、ヨーロッパ、オーストラリア用)に表示するクエリです。
SELECT percentile(duration,50) FROM SyntheticCheck FACET monitorName TIMESERIES 5 minute since 1601523900

  • 特定の時間から、durationの最大、最小、平均,50パーセンタイルをモニターごと(アメリカ、ヨーロッパ、オーストラリア用)に表示するクエリです。
SELECT max(duration),min(duration),average(duration),percentile(duration,50) FROM SyntheticCheck FACET monitorName  since 1601523900

まとめ

1分ごとに各リージョンのエンドポイントにアクセスし、24時間の平均実行時間を見た限りでは オーストラリアのリージョン が一番速いという結果になりました。

今回アクセスしたエンドポイントは2つですが、実行時間を基準に考えるなら東京からはオーストラリアのリージョンを選択するのがベターと言えそうです。

ただし、平均やパーセンタイルのグラフを見てみると、アメリカのリージョンは一番凹凸が少ないですね。 これは時間帯に限らず安定していると言っていいのかもしれません。 参考欄にも記載していますが、アメリカのリージョンはマルチリージョンの高可用性アーキテクチャが採用されています。 その他のリージョンに関しては情報を見つけることができませんでした。 確認が取れ次第追記しようと思っています。

参考