フォーム読み込み中
2022年10月31日掲載
Alibaba Cloud HTTPDNSを使って、DNS名前解決をショートカットしてみました。
モバイルアプリやWebアプリでネットワークリクエスト時、DNS名前解決処理において様々な問題が発生します。例えば、ライブツアーやポケモンGo大会など人が大勢集まるイベント会場では、基地局のセルが収容できるユーザのキャパシティを超える処理からモバイルネットワーク網が輻輳(ふくそう)するため通信の繋がりが弱いネットワーク環境になりやすいです。イベント会場でtwitterなど画像データがなかなか送れないと思った時はありませんか?
この環境において、モバイルアプリから往来のUDPベースのローカルDNS名前解決による通信ベースでアプリケーションサーバと接続する際、数百ms以上の処理時間がかかったり、もしくはタイムアウトが発生しやすくなります。基地局や携帯電話、無線通信の技術が4G、5Gとどんどん進歩しても、UDPベースでDNS接続処理をする限り、アプリケーションのネットワーク全体に様々な影響が生じます。このアプリケーションのネットワーク全体の最適化を実現するHTTPDNSプロダクトサービスが、Alibaba Cloudから新たに登場しましたので、今回はこれを紹介します。
HTTPDNSは、モバイルアプリやWebアプリなど、複数の種類の端末に搭載されたアプリのドメイン名分析サービスです。ドメインハイジャック対策、正確なスケジュール設定、分析結果のニアリアルタイム更新などの機能を備えています。
DNS(Domain Name System)は、Domain Name Systemの略です。TCP/IPネットワークで使用されるドメイン階層に編成されたコンピュータおよびネットワークサービスの名前付けシステムで、ホスト名とドメイン名をIPアドレスに変換するサービスを提供します。 現在、DNSはネットワーク通信全体の流れの中で最も重要な役割を持ちます。
では、そのDNSにはどういう問題があるのでしょうか?
DNSはRoot DomainをTop、Top-level DomainsやSecond-level domains、TreeによるFQDN(Fully Qualified Domain Names)を形成しながら、インターネット上でツリー状による階層構造で形成されています。Root Domainは「.」で表され、実際にはDomain nameで構成されています。現在、Root Domainを司るルートサーバは全世界で13台しかなく、そのうち1台は日本にも配置されています。
DNSは、例えばユーザが http://www.yahoo.co.jpへアクセスする際、このWebサイトのドメイン名をIPに変換する必要があるため、ローカルDNSでDNS名前解決処理をします。ローカルDNSは、ローカルキャッシュというレコードがあるかどうかを確認し、もしあればそれを利用しますが、もしなければローカルDNSサーバからRoot DNSサーバへ再帰的に最上位のドメインネームサーバを検索し、階層的な流れでDNSコンテンツサーバ(自分自身が管理しているドメイン情報についてのみ回答するDNSサーバ)を検索して、ローカルDNSサーバへ返却する必要があります。
この場合、「ドメイン名のキャッシュ問題」「ドメイン名の転送問題」「ドメイン名の更新問題」「DNS名前解決の処理遅延問題」などが生じます。
これを解決するために、HTTPDNSという技術が登場しました。
Alibaba Cloud HTTPDNSプロダクトサービスは、モバイルアプリやWebアプリなど、複数の種類の端末に搭載されたアプリのドメイン名分析サービスです。DNS名前解決の最適化はもちろん、ドメインハイジャック対策、正確なスケジュール設定、分析結果のニアリアルタイム更新などの機能を備えています。
流れとしては、ユーザはモバイルアプリなどからHTTPDNSのAPIを呼び出して、ドメイン名構成管理システムからIPアドレスを問い合わせます。このIPアドレスを使用して、最適な待機時間で必要なビジネスにアクセスすることができます。次に、クライアントはHTTPまたはHTTPSを使用してIPアドレスにリクエストを送信します。例えば、クライアントはHTTPDNSから取得したIPアドレスに対して、ホストヘッダを指定し、標準的なHTTPリクエストを送信します。
Alibaba Cloud HTTPDNSプロダクトサービスは次の機能を備えています。
安全で正確な解決結果
・ドメインのハイジャックを防止し、クライアントの地域と対応するISPを正確に特定し、正確な解決結果を提供します。
・ワイヤレス通信等、ISPネットワーク上の不確実な状況によりアプリが利用できなくなるリスクを効率的に抑制することができます。
ネットワーク全体のドメイン名解決
Akamaiなどの海外サービスプロバイダのドメイン名を含む、ネットワーク全体のドメイン名を解決します。
ソフトウェア定義DNS(SDNS)
解決のためにパラメータや戻り値、解決ルール、解決までの手法をカスタマイズし、位置情報付きスケジューリングやインテリジェントなスケジューリングを実現します。
費用対効果の高い統合
HTTPDNSはiOS/Android 両方のSDKとサーバとクライアントでHTTPDNSサービスへのアクセスを容易にするHTTP(HTTPS)API を介して素早く接続することが可能です。
HTTPDNSの特長は次の通りです。
特長 | 概要 |
|---|---|
ドメインハイジャック対策 | ドメインハイジャックを効果的に防止します。 |
正確なスケジュール設定 | クライアントの場所を正確に特定し、 |
低レイテンシで再解決 | クライアントSDKと連携しながら、解決結果をミリ秒単位の低レイテンシで待ち時間を短縮します。 |
解決結果の迅速な更新 | DNSコンテンツサーバからの解決結果の変更を、24時間待つことなく、迅速に同期します。 |
低い処理失敗率 | ワイヤレスネットワーク環境など、不安定なネットワーク環境での接続によるDNS解決処理の失敗を効果的に抑制します。 |
高可用性 | 複数のリージョンのクラスタ内にサーバを配置することで、サービスの高可用性を確保します。 |
HTTPDNSの利用イメージとしては、次のStep-by-stepになります。
STEP1. EMASサービスの有効化
Alibaba Cloudアカウントを使用して、HTTPDNSサービスを有効化します。
STEP2. ドメイン名の追加
EMASコンソールで解決するドメイン名を追加します。
STEP3. ドメイン名を迅速に確認
単一のドメイン名を解決するためのAPIを使用して、ドメイン名が有効であることを迅速に確認します。
STEP4. サービスへのアクセス
SDKを組み込むか、APIを使用して、HTTPDNSサービスにアクセスします。
STEP5. 解決結果を表示
日次、月次単位で解決結果を表示します。
3-1. ドメインハイジャック対策
3-2. 正確なスケジューリング
3-3.解決結果のリアルタイム更新
4.1 往来のドメイン名解決
HTTPDNSは、ローカルDNSの代わりにドメイン名解決処理を使用できます。
そのため、例えばスマホアプリ側とサーバ間の通信で初回もしくは1回限りの通信が多いシナリオでも、HTTPDNSを経由することで、スマホアプリはローカルキャッシュを使うことなくサーバ側とシームレスな通信を行うことが出来ます。
4.2 サーバ側の解決要求
HTTPDNSの柔軟性と制御性により、ビジネスレイヤーでのカスタムスケジューリング要件を柔軟に対応することができます。
先述通り、Root Domainは世界で13台のサーバに配置しているため、中国やクアラルンプールなど国によってはRoot Domainサーバがないため、サーバから別のサーバへアクセスする際、DNS名前解決処理で遅延する場合があります。そのため、HTTPDNSを経由することで、API経由でIPアドレスを取得してくれるため、DNS名前解決処理をショートカットしてくれます。
4.3 SDNS
HTTPDNSはSDNS(Software-defined Name System)を提供しています。SDNSは従来のDNSコンテンツサーバでは対応できないドメイン名とIPアドレスのマッピングをユーザ定義関数で設定しながらDNS名前解決処理をすることができます。そのため、HTTPDNSはカスタマイズもしやすく柔軟性が高いです。
例えば、日本および中国から営業時間帯のみアクセスがあった場合はAサーバを参照、営業時間外で日本からのアクセスがあればBサーバ、中国からのアクセスはCサーバを参照、といったカスタマイズ設定も出来ます。
(参考)HTTPDNS SDNS機能
①機能の定義:
SDNSは、Software-defined Name Systemの略で、従来のDNSコンテンツサーバでは対応できないドメイン名とIPアドレスのマッピングを設定するために使用できます。
②3つの特徴:
本サービスは2022/10/19 現時点で中国本土および東南アジアで利用することができます。日本リージョンはまだ対応していません。
HTTPDNSはHTTP解決の数に基いて課金されます。これが基本となり、PAYG(従量課金)とResource Pacakges(解決の数をオフセット)があり、また無料枠もあります。
課金項目 | HTTP解決の数に基づいて課金 |
|---|---|
課金方法 | PAYG(従量課金)とResource Pacakges (解決の数をオフセット) |
無料枠 | HTTP解決数回数 150万回 / 月 |
※1つのHTTPS解決は5つの解決回数に相当します
従量課金制(PAYG):
データ転送プラン(Data transfer plan):
HTTPDNS料金請求例:
例えば、あなたがAlibaba Cloudのユーザで、今月の1日と2日だけHTTPDNSの解決サービスを利用したとします。
HTTPDNSがお客さまのアプリに、今月1日にHTTPベースの分析500万件、2日にHTTPベースの分析80万件、HTTPSベースの分析20万件を提供する場合、1日目に請求される件数は500万件、2日目は80万件+5×20万件で180万件となります。
従量課金:(1,800,000 + 5,000,000 - 1,500,000)×0.006 USD / 10,000件 解析で 3.18 USDとなります。
データ転送プラン:500万件の解析をカバーするデータ転送プランを購入した場合、価格は 2.5 USDです。
①従量課金
請求件数 | 請求件数 | |
|---|---|---|
1日目 | HTTPベースの分析:500万件 | 500万件 |
2日目 | HTTPベースの分析:80万件 HTTPSベースの分析:20万件 (5×20万件=180万件) | 180万件 |
従量課金 | 無料枠:HTTP解決数回数 150万回 / 月 | (1,800,000 + 5,000,000 - 1,500,000)×0.006 USD / 10,000件=3.18 USD |
②データ転送プラン
データ転送プラン | 500万件の解析をカバーする |
|---|---|
データ転送プラン費用 | 2.5 USD |
その他要件がある場合は、Alibaba Cloud公式サイトのHTTPDNSを参照頂ければ幸いです。
閑話休題、HTTPDNSの実力を試すべく、実際に検証をしてみます。
今回の検証シナリオは2つあります。
本当はモバイルアプリからコードを使ってHTTP API経由で効果測定をしたかったのですが、コードを作成等準備に時間がかかるという制約から、今回はこの簡単な2つのシナリオで進めます。
https://www.alibabacloud.com/help/en/httpdns/latest/resolve-a-domain-name
検証シナリオA:HTTPDNSでDNSドメイン名解決結果による処理速度と、PingによるDNSドメイン名解決(ローカルDNS)の処理速度の比較
まずは検証シナリオA:HTTPDNSとローカルDNSの処理速度を確認するために、HTTPDNS、ローカルDNSそれぞれでドメイン名解決結果による処理速度の比較をします。全体図としては次の図の通りになります。
HTTPDNSコンソール画面にて、Alibaba Cloud中国サイトのドメイン( cn.aliyun.com )を入力します。Alibaba Cloud中国サイトは中国サーバにあり、このDNS名前解決をするための要となるRoot Domainサーバが中国には配置されていない背景もあり、日本にいる著者はいつも中国サイトへのアクセスに時間がかかっています。
HTTPDNSコンソール画面で中国サイトのドメイン名を入力したら、IPアドレスが表示されます。このIPアドレスを使って、ターミナルからPingコマンドで通信処理速度を確認します。
結果として、最小 35ms、最大 35ms、平均35msです。
②PingによるDNSドメイン名解決:
結果今度はHTTPDNSを使わずに、ターミナルからPingコマンドで通信処理速度を確認します。
結果、最小 36ms、最大 36ms、平均36msです。
この結果から、結果としては次の通りです。
HTTPDNSによる | ローカルDNSによる名前解決の処理速度 | |
|---|---|---|
ドメイン名 | cn.aliyun.com | cn.aliyun.com |
解析結果 | 106.11.248.144 | 106.11.253.83 aliyun-adns.aliyun.com.gds.alibabadns.com |
検証結果 | 最小 = 35ms、最大 = 35ms、平均 = 35ms | 最小 = 36ms、最大 = 36ms、平均 = 36ms |
最小、最大、平均ともに1msほど改善されています。
もし、ローカルのターミナルでpingコマンドでなく、モバイルアプリなどからの通信の場合、コード等機械的な処理によるDNS名前解決のための待機の積み重ねから、結果が大きく変わってきます。
この結論から、アクセスするユーザの地域と対応するISPを正確に特定したうえで、サイトへアクセスするためのDNS名前解決での最短距離を提供することができます。
検証シナリオB:HTTPDNSでAkamaiなどの海外サービスプロバイダのドメイン名解決結果を分析
次は海外展開しているさまざまなサービスプロパイダーのドメイン名をHTTPDNSで分析します。HTTPDNSはAkamaiなどのプロパイダーを特定することもできるそうです。全体図としては次の図の通りになります。
HTTPDNSコンソール画面にて、Alobaba Cloudにアクセスします。
その結果、IPv4ベースでTokyo Region、ISP LineはAliyun製と判明できます。
次はAmazon USAへアクセスします。
その結果、IPv4ベースでUnited States Region、ISP LineはAkamaiと判明できます。
この検証から、海外サービスプロバイダのドメイン名を含めた、ネットワーク全体のドメイン名解決結果を提供することができます。
HTTPDNSはHTTP/HTTPSプロトコルを利用してDNSサーバと相互に連携するため、往来のUDPプロトコルによるDNSサーバへのアクセスによる処理遅延問題や、ドメイン名ハイジャック問題を排除することができます。また、HTTPDNSはアクセスユーザの現在位置を特定したうえで、ISPやDNSサーバへの最短距離を抽出することができるため、サイトやAPIレスポンスのレイテンシを改善することもできます。
参考として、DNS over HTTPSはDNSクエリをUDPベースでHTTPSプロトコルによる暗号化をしたものなので、DNS名前解決の最適化やドメイン名ハイジャック問題払拭までは至らないので、DNSにお困りの場合はこちらを参考にする手もあります。
条件に該当するページがございません