PlanetScaleのoptimized hostnameを使用すると、東京リージョン内のAPIとDBの間でもクエリがオハイオに転送されるケースがあります。公式ドキュメントに基づき原因とdirect hostnameへの切り替え手順を解説します。

📑目次
  1. PlanetScaleのhostname種類と推奨用途
  2. optimized hostnameで発生するクロスリージョンルーティングの原因
  3. direct hostnameへの切り替え手順と検証方法
  4. 運用上の注意点と代替アプローチ
  5. よくある質問(FAQ)
  6. まとめ

PlanetScaleは接続用のhostnameとして主に2種類を提供しています。optimized hostnameとdirect hostnameです。

optimized hostnameはRoute 53のlatency-based routingを利用し、クライアントに最も近いエッジロケーションを自動選択します。これにより、グローバルに分散したユーザーからのアクセスで低遅延を狙えます。一方、direct hostnameは指定したリージョンのVitessインスタンスに直接接続します。リージョン間のデータ転送を避けたい場合や、特定のデータセンターに固定したい場合に適しています。

公式ドキュメント(https://planetscale.com/docs/plans/regions)では、optimized hostnameはデフォルトの推奨として記載されており、direct hostnameは明示的なリージョン指定が必要な場面で利用するよう説明されています。東京リージョンで運用する場合は、どちらを選ぶかでクエリ経路が変わる点に注意が必要です。


optimized hostnameで発生するクロスリージョンルーティングの原因

optimized hostnameを使用すると、東京のAPIサーバーから東京のDBに対してクエリを発行しても、太平洋を横断してオハイオに転送されることがあります。これはlatency-based routingの特性によるものです。

Route 53は世界中のエッジから測定した遅延に基づいて最適なエンドポイントを選択します。特定のタイミングやネットワーク状況で、オハイオのエッジが「より近い」と判断されるケースが発生します。東京同士の通信であっても、グローバル最適化の結果として他リージョンが選ばれることがあります。

公式ドキュメント(https://planetscale.com/docs/vitess/connecting/network-latency)では、この現象がnetwork latencyの文脈で触れられており、optimized hostnameの挙動として説明されています。ブックマークされたZenn記事(https://zenn.dev/avaintelligence/articles/b7d4743a448485)でも、同様の症状が報告されています。

hostnameの種類 ルーティング方式 東京同士の通信での挙動 主なユースケース
optimized latency-based routing 他リージョン(例: オハイオ)に飛ぶ可能性あり グローバルユーザー向け低遅延優先
direct 指定リージョン直結 東京DBに直接接続 リージョン固定・クロスリージョン転送回避

direct hostnameへの切り替え手順と検証方法

direct hostnameへの切り替えは接続文字列のhostパラメータを変更するだけで完了します。

  1. PlanetScaleダッシュボードで対象のデータベースを開き、「Connect」画面を表示します。
  2. 「direct hostname」の値を確認します。形式は通常 xxx.ap-northeast-1.psdb.cloud のようなリージョン指定のものになります。
  3. アプリケーションの接続文字列(DSNや環境変数)を更新し、hostをdirect hostnameに置き換えます。
  4. アプリケーションを再起動または再デプロイします。
  5. クエリログやPlanetScaleのクエリインサイトで、接続先リージョンが正しいことを確認します。

これにより、東京リージョン内の通信がオハイオに飛ぶ現象を回避できます。変更は接続文字列の1箇所のみで、他の設定は不要です。


運用上の注意点と代替アプローチ

direct hostnameを使用する場合、リージョン障害時に自動フェイルオーバーが制限される可能性があります。optimized hostnameはグローバルルーティングにより可用性を高めますが、遅延のばらつきが発生します。

本番環境では、direct hostnameを採用する前にステージング環境で検証することを推奨します。また、アプリケーション側でリージョンアウェアな接続プールを実装する選択肢もあります。PlanetScaleの公式ドキュメントを定期的に確認し、hostnameの仕様変更に追従してください。


よくある質問(FAQ)

Q: optimized hostnameとdirect hostnameの違いは?

optimized hostnameはRoute 53のlatency routingで最寄りエッジを自動選択します。direct hostnameは指定したリージョンのインスタンスに直接接続します。

Q: なぜ東京同士でもオハイオに飛ぶのか?

latency-based routingがグローバル最適と判断し、稀に他リージョンを選択するためです。ネットワーク状況により発生します。

Q: 修正は接続文字列の1箇所だけか?

はい。hostパラメータをdirect hostnameに変更するだけで完了します。他の設定変更は不要です。

Q: direct hostname使用時の可用性への影響は?

リージョン障害時の自動フェイルオーバーが制限される場合があります。運用要件に応じて選択してください。


関連記事:

まとめ

optimized hostnameによる意図しないクロスリージョン転送は、接続文字列の1行変更で回避できます。公式ドキュメントを確認し、direct hostnameへの切り替えを検討してください。運用環境に合わせた検証を忘れずに実施しましょう。

関連する新しい記事:

新しい関連情報:

krona23

著者

krona23

IT業界20年以上の実務経験を持ち、日本国内有数のPVを誇る大規模Webサービスで事業部長・CTOを複数社で歴任。Windows/iOS/Android/Webと技術の変遷を経験し、現在はAIネイティブへの変革に注力。DevGENTでは、AIコードエディタ・自動化ツール・LLMの実践的な使い方を日英西3言語で発信中。

DevGENT について →

コメントを残す

Trending

DevGENTをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む