Ookla Speedtest Mini と AWS Elastic Beanstalk で自前のスピードテストを用意する

2016.10.06

こんにちは、ももんが大好きの小山です。みなさんいかがお過ごしでしょうか?

きょうは AWS Elastic Beanstalk を使って、CDN で有名な Ookla が提供するOokla Speedtest Miniをホストする方法についてご紹介したいと思います。

Ookla Speedtest Mini の入手

Ookla Speedtest Mini を入手するには、Speedtest.net のアカウントが必要です。以下のページから必要事項を記入して、新しいアカウントを作成しましょう。

Speedtest.net by Ookla - Register

A confirmation email has been sent.

noreply@speedtest.netからOokla Speedtest Account Confirmationというメールが届いています。本文のリンクからアカウントの作成を完了しましょう。

以下のように、Thank you for confirming your registration.のメッセージが表示されたら成功です。続いて Ookla Speedtest Mini 本体をダウンロードしましょう。

以下のページを開いて、左上のDownload Nowを押します。mini.zipというファイルが手に入れば準備は完了です。

Speedtest.net by Ookla - Ookla Speedtest Mini

Elastic Beanstalk アプリケーションの作成

Elastic Beanstalk のコンソールを開いて新しいアプリケーションを作成しましょう。今回は、プラットフォームとしてTomcat 8 + Java 8を選びました。

My First Elastic Beanstalk Application では、Default VPC 上にサンプルアプリケーションが作成されます。ヘルスレポートでOkが示されていることを確かめたら、Upload and Deployを選択しましょう。

Upload and Deployのページでは、入手しておいたmini.zipを選択してDeployします。

ダッシュボードのヘルスレポートがOkRunning Versionが新しいものに変われば完了です。ダッシュボード右上に表示されるURLを控えておきましょう。

つかってみる

さっそく、デプロイした Speedtest Mini で手元の回線速度を測ってみます。ダッシュボードから控えておいた URL に/index-jsp.htmlを加えて開きましょう。

例: http://Default-Environment.abcdefghij.us-east-1.elasticbeanstalk.com/index-jsp.html

以下のようなページが表示されたら、BEGIN TESTで測定を開始できます。黒の背景しか見えないときは、Flash Player をインストールする必要があります。大変残念なことですが、Speedtest Mini は HTML5 に対応していません?

手元の回線が頼りないためあまり芳しくない数字が出てしまいましたが、きちんと測定することができました。

Bildschirmfoto 2016-10-06 um 13.01.49

以下は、まったく同じ環境から本家 Speedtest.net を使って測定してみた結果です。Speedtest Mini と比べても、有意な差は見受けられません。

ここで、ある心配が生じました。測定される速度は、ほんとうに自分でデプロイした Speedtest Mini との間の速度なのかという点です。デプロイしたアプリケーションが単なるウィジェットで、測定に使うデータが Ookla の CDN から取得されている (表示される測定結果は手元の回線と CDN の間の速度になる) としたら何の意味もないからです。

実験

そこで今度は、ロードバランサーとして内部向け (internal) の ELB を用いた新しい Elastic Beanstalk 環境を作成して、VPC からしか繋がらない Speedtest Mini を用意しました。

加えて、同じ VPC へ Public IP を持たない EC2 インスタンスを起動します。もちろんインターネットには繋がっていません。

一方、Internal ELB で作り直した Elastic Beanstalk 環境の Speedtest Mini は開くことができます。この状態で測定してみましょう。

インターネットに繋がっていない状態でも、きちんと測定することができました。ぶっ飛んだ数字が見えていますが、同一 VPC 内での測定であることから想定した通りです。今回はデフォルトの t2.micro で起動しましたが、Elastic Beanstalk 側で拡張ネットワーキングの有効なインスタンスを指定すればもっとすごい正確な数字、クライアント側の限界を示した数字が見えるはずです。

おわりに

いかがでしたか? Ookla Speedtest Mini を使うと、誰でも簡単に自前のスピードテストを用意できることがわかりました。インターネットの有無に関わらずクリックひとつで傾向が確かめられますから、複数のロケーションや接続手段 (インターネット、インターネット VPN、AWS Direct Connect など) で想定通りの速度が出ているか確かめたいときに試してみてください。

したっけまた!

おまけ

Windows Server 2012 R2 インスタンスの Internet Explorer 11 で Flash Player の必要なコンテンツが見えないときは、役割と機能の追加ウィザードからデスクトップエクスペリエンス (ユーザーインターフェイスとインフラストラクチャ) をインストールしましょう。