2023年版 アジア(Tokyo)に最適なAuth0リージョンを探してみる #Auth0
現在Auth0のパブリックリージョンは 日本、アメリカ、イギリス、ヨーロッパ、オーストラリア の5つから選択できます。
東京にあるデータセンターからAuth0にアクセスする場合、どのリージョンを選べばいいのか、ログインにかかる時間をもとに考えていきたいと思います。
本ブログは2020年公開の下記ブログの最新版(2023年)となります。当時はアメリカ、ヨーロッパ、オーストラリアの3つのリージョンのみ選択可能でした。
結論
東京にあるデータセンターからは 地理的に近い日本リージョン を選択するのが良さそうです
やってみる
前提条件
前回記事と同じく以下の条件で計測します。
- New Relic
- Synthetic Monitoring
- Auth0 Authentication API
- Get token(POST /oauth/token)
- Get a user(GET /users/{id})
トークンを取得しログインユーザーの情報を取得するスクリプトの総実行時間(Duration)をSyntheticsで取得し可視化します。TOKEN取得は Client Credentials Flow を利用しました。
Auth0の設定
- 検証用の M2M Application を新規作成します
- Auth0 Management API を選択しPermissionは All を選択(検証用)
- 正確には
read:users
read:current_user
read:user_idp_tokens
を選択するようにしてください 参考
- 検証用ユーザーを作成し user_id を控える
この設定を 日本、アメリカ、イギリス、ヨーロッパ、オーストラリア の各テナントで行います。
New Relicの設定
- Synthetics Monitorを作成します
- Endpoint Availability を選択します
- Configure monitor で Period を 1min を設定します
- 間隔が短いほど料金がかかるので注意しましょう
- Select locations は Tokyo, JP を選択します
- Write Script は以下のように作成します
var assert = require('assert'); const domain = '' // M2MApp > Setting > Domain const clientId = '' // M2MApp > Setting > Client ID const clientSecret = '' // M2MApp > Setting > Client Secret const audience = `https://${domain}/api/v2/` const userId = '' // user_id $http.post(`https://${domain}/oauth/token`, { json: { client_id: clientId, client_secret: clientSecret, audience: audience, grant_type: 'client_credentials' } }, function (err, response, body) { assert.equal(response.statusCode, 200, 'Expected a 200 OK response'); var token = body.access_token; console.log('Token:', token); $http.get(`https://${domain}/api/v2/users/${userId}`, { headers: { 'Authorization': 'Bearer ' + token } }, function (err, response, body) { assert.equal(response.statusCode, 200, 'Expected a 200 OK response'); console.log('Response:', body); // Auth0でUser登録したemailをアサーション assert.equal(body.email, 'xxxxxxxxx@xxxxxxxxx', 'Expected the correct email'); } ); } );
Save Monitor を押して登録完了です。これを5つのリージョンごとに作成します。
可視化
- Synthetics Monitor → Summary で様々なメトリクスを確認できます
この2つを比較すると日本リージョンの方が早くレスポンスしていることがわかります。
前回の記事に倣って Networking timings も比較してみましょう。
日本
アメリカ
オーストラリア
ヨーロッパ
イギリス
最後にデータエクスプローラーで、各リージョンのDurationを統合して見てみましょう。
特定の時間から、5分毎のduration(応答時間)平均をモニターごとに表示するクエリ
SELECT average(duration) FROM SyntheticCheck FACET monitorName TIMESERIES 5 minute since 1698059700
特定の時間から、5分毎のdurationの50パーセンタイルをモニターごとに表示するクエリ
SELECT percentile(duration,50) FROM SyntheticCheck FACET monitorName TIMESERIES 5 minute since 1698059700
特定の時間から、durationの最大、最小、平均,50パーセンタイルをモニターごとに表示するクエリ
SELECT max(duration),min(duration),average(duration),percentile(duration,50) FROM SyntheticCheck FACET monitorName since 1698059700
3つ目のクエリでは日本リージョンの Max Duration が一番高くなっていますが、これは1つ目のクエリを見てみると、日本リージョンの Duration が跳ねてしまっている部分を示しています。この原因はわかりませんが、頻発はしていないので一時的な事象と考えていいと思います。
3つ目クエリに戻り Avg Duration を見てみると、日本リージョンが一番低くなっています。このことから 地理的に近い日本リージョンが一番早い と結論できると思います。
まとめ
日本から1分ごとにAuth0の各リージョンのエンドポイントにアクセスし、24時間の平均実行時間を見た限りでは 日本リージョン が一番早いと言えます。(次点でアメリカリージョン)
平均やパーセンタイルからみて、安定性においても日本リージョンが一番安定しているので、日本からAuth0を利用する際は、日本リージョンのテナントで構築するのが良いと思います。