2023年9月15日(金) 12約○分

7日間でjson-schema.orgに5000万件以上のリクエストがありました。

7日間では分析するには理想的な期間ではありませんが、現時点ではこれしかデータがありません。以前は基本的なウェブサイト分析しかありませんでしたが、それは全体像のごく一部しか示していませんでした。GitHub PagesでCloudflareをフロントに配置してウェブサイトを運用しており、7日間の分析データ(特に、直接アクセスを含むトラフィック)を提供しています。

JSON Schemaのウェブサイトは、公式なメタスキーマをホストしています。それが何かわからない方のために説明すると、メタスキーマとはJSON SchemaのためのJSON Schemaです。なぜこれが興味深いのでしょうか?それは、最新のメタスキーマだけでなく、すべての過去のバージョンのメタスキーマもホストしているからです。そして、コードが定期的にメタスキーマをダウンロードするためにリクエストを送信することは期待していませんが、リクエストの数は、そうしていることを強く示唆しています。

なぜ今なのか?バージョン付きURLでメタスキーマを提供することに加えて、ウェブサイトは、/schemaで最新のメタスキーマを提供し続けてきました。現在、このアクセスを避けるよう推奨しています!警告メッセージ付きのリダイレクトを遅延させて実装しましたが、現実的には、ほとんどのアクセスはブラウザではなくコード経由で行われると予想されます。(つまり、何かが壊れている可能性が高いです。詳しくは後述します。)

もしかしたら、このURLのホスティングを削除できるかもしれませんか?この記事の範囲外のことですが、それを使用するのは本当に良い考えではなく、予想外の結果になる可能性が高いです。前述のように、ウェブサイト分析ではブラウザ以外で何が起こっているかを知ることはできないため、別の方法が必要でした…すでにCloudflareを使用していたため、オープンソースの無料プロティアープランを申請することにしました…待っている間、費用はそれほど高くないため、今のデータを調べてみることにしました。

この記事のデータは、2023年7月21日に取得した7日間のスナップショットです。(記事の最後に、このスナップショットと2023年7月31日のスナップショットを比較した画像を共有します。)

  • 注意点1:クライアントは、本番コードの一部としてメタスキーマへのリクエストを送信するべきではありません。CI/CDシステムの一部として適切な場合もありますが、これも可能性は低いです。代わりに、クライアントはローカルにキャッシュされたコピーを保存する必要があります。かなりの数のリクエストがあることは、キャッシュがほとんどまたは全く行われていないことを強く示唆しています。

  • 注意点2:トラフィック分析データは、総トラフィックのサンプルに基づいています。各統計は異なるパーセンテージを使用しています。0.16%から16.67%まであります。真の分析を行うには、多くの数値を計算し、ログを保持する必要があると思います。ログをサードパーティにパイプするように依頼できますが…エンタープライズプランが必要です。それにもかかわらず、洞察は依然として非常に興味深いものです。

  • 注意点3:各データカテゴリの「上位」は、UIで15項目に制限されています。彼らのAPIを使用して追加データにアクセスできると思いますが、5分ではそれを見つけることができませんでした。そのため、今日のデータを使用しましょう。

ああ、そうです、データは過去7日間に限定されています。

ここで共有しているもの

まずは目を引く数字から始め、次に具体的に何がアクセスされているのか、そしてそれがなぜ興味深いのかを説明し、最後に興味深い発見をいくつか紹介します。

大きな数字

5192万件のリクエスト

211.47GBのデータ転送

105万ページビュー

101万訪問

すべてのメタスキーマ!

これらのリクエストのうち約5100万件は、ブラウザ、クライアント、またはボットの名前を宣言していないものから行われています。ChromeとFirefoxが上位を占め、下位にはCURLと様々なインデックス作成ボットが見られます。

アクセスされたパス、つまりメタスキーマに関しては、結果に興味深い洞察を得ることができました。

上位の結果は1182万件で、/draft-07/schemaです。これは、draft-07 JSON Schemaが、動作不良の実装に渡される最も一般的なものだということを示唆しています。(動作が良好な実装のほとんどは、メタスキーマを既に持っているため、ダウンロードしません!これは最も一般的な実装を含みます!)

ウェブトラフィックのスナップショット 2023-07-21

Draft-04はリストの4番目まで表示されません。2位と3位はDraft 2019-09が占めていますが、予想とは異なります…そこに存在するファイルlinkshyper-schemaは、JSON Schemaの主要な検証ユースケースとは対照的に、Hyper Schemaのためのものです。

Hyper Schemaへのアクセス?

以前は、コア製品に加えてJSON Hyper Schemaも公開していました。Hyper Schemaはハイパーメディア仕様です。具体的には、APIに関するHypermedia as the engine of application state (HATEOAS)です。(興味のある方は、Richardson Maturity Modelもご参照ください)。draft 2020-12の完了と同時に、仕様の進捗を推進するリソースがなかったため、JSON Hyper Schemaの一時停止を決定しました。(hyper-schemalinksの違いは、使用されたサンプルに起因すると考えられます。両方が連続してアクセスされたと仮定するのは妥当です。)

これらのHyper Schemaメタスキーマのリクエストはどこから来ているのでしょうか?物理的な場所は重要ではありませんが、提供されたユーザーエージェントを確認できます。上位2つは750万件のリクエストをカバーしていますが、あまり役に立ちません…python-requestsです。せいぜい、バージョン2.27と2.28がほぼ同等に使用されていることがわかります。その後、neptune-clientとして識別されるものから63.5万件のリクエストに減少します。興味深いですね!

それは「実験追跡ツールとモデルレジストリ」と呼ばれています。これは、データサイエンティストとMLエンジニア向けに構築された機械学習(ML)Ops(MLOps)に関するものです。私はMLについてほとんど知らないため、この分野に精通している同僚にNeptune.aiサービスについて意見を尋ねました…

「機械学習モデルについて何か調整するときに、変更がモデルの精度にどのように影響するかを伝える計算を実行できるソフトウェアです」 - Julian Berman

十分に分かりやすく説明してくれました!ありがとう、ジュリアン!

彼らのHyper Schemaのユースケースについて問い合わせるべきでしょう!

では、まだ/schemaにアクセスしているのは誰ですか?

このバージョンなしのURIを使用して公開されている最新のメタスキーマにアクセスすることはお勧めしません。約4年前からこのことを周知させる取り組みを始め、ブラウザを使用している場合はリダイレクトとともにメッセージが表示されます

これへのほとんどのリクエストは参照元がありません。そのため、あまり役に立ちません。ユーザーエージェントを見ると、ほとんどのリクエストのユーザーエージェントは""です。*ため息*。そうです!空です!これは適切な方法ではなく、何が原因なのかを疑っていました。

隣接するデータを見ると、残りの上位15のユーザーエージェントの半分以上が、これらのリクエストのほとんどはIDEとコードエディタから来ていることがはっきりとわかります。InteliJ IDEA、WebStorm、およびそれらの複数バージョンが表示されます。しかし、VSCodeは見当たりません。

確かに、VSCodeは、私たちの知る限りでは、ユーザーエージェントを提供していません。少なくとも、JSON Schema関連のリクエストを行う場合です。VSCodeとJSON Schemaの組み込みサポートを高く評価していますが、もう少し改善してほしい点がいくつかあり、これはその1つです。

Visual Studioはユーザーエージェントを提供しますが(その分析は後で説明します)、Visual Studio Codeは提供しないため、Visual Studio Codeが行っているリクエストと、ユーザーエージェントを提供していない他のリクエストを区別できません。(一般的に、ユーザーエージェントは提供されます。)

GitHub でサイトをホストすることの制約により、/schema に使用されているリダイレクトは、HTTP 302 ステータスコードを使用する代わりに、HTML ベースのヘッダーリダイレクトであることに注意することが重要です。これは、現実的に、これらのリクエストを行うコードが実際に必要なものを取得する可能性は低いことを意味します。(このリダイレクト手法は、非標準であるため、CURLなどの開発者ツールではなく、ブラウザによってほぼ独占的に使用されます)。実際に Visual Studio Code で試してみると、「コンテンツを解析できません」というエラーが表示されます。レスポンスで JSON を期待していますが、ウェブサイトはそれを満たしていません。

draft-04 にアクセスしているのは誰ですか?

過去7日間における draft-04 メタスキーマへの総リクエスト数は721万件です。

物理的な場所には驚きの結果があり、ペルーが英国とロシアを上回りトップとなりました。次に米国で、721万件のリクエストのうち573万件を占めています。

今回は、ユーザーエージェントデータがはるかに役立ちます。空のエージェント文字列は10番目のスロットまで表示されず、78,000件のリクエストしかありません。トップには Java が表示されています!ここでは推測になりますが、これは Francis Galiegue による Java 実装に関連していると考えています。彼は JSON スキーマの初期の中核メンバーの一人であり、draft-04 以降のサポートをアップグレードしていない Java 実装を作成しました。

これより、AWS 上で JSON スキーマを使用する運用中の多くの Java サービスは、廃止された JSON スキーマの実装から移行する理由がないと推測できます。おそらく、より新しいバージョンの JSON スキーマ自体を使用しており、実装がそれらを正しく処理していないのかもしれません…しかし、テストを行っていないため、現時点では推測の域を出ません。

Java が大部分を占め 411万件であるのに対し、次に Mojolicious(Perl フレームワーク)、続いて Visual Studio で 526,000件となっています。これははるかに興味深いですね。また、Visual Studio ははるかに役立つユーザーエージェント文字列を提供していることに注目します。

Visual Studio/17.6 (JSON Editor; ASP.NET and Web Tools/17.6.326.62524)

Visual Studio の複数バージョンを考慮すると、簡単に 100万件を超えます。上位 15 位のうち 8 位を占めています。Visual Studio で作業している人たちとはすでに連絡を取り合っています。Visual Studio Code については同じことは言えません。いつか修正できることを願っています。

最新の3つの JSON スキーマのバージョンは?

draft-072019-09、および 2020-12 のアクセスパスを見てみましょう。

draft-07 の場合、パス /draft-07/schema には 1,166万回アクセスされました。次に多いのはリリースノートで 1.8k 件です…つまり、ウェブサイト上の HTML ファイルです(ああ、ウェブサイトもあるんですね!)。

2019-09 の場合、2,087万件のリクエストがあります。なぜ増加したのでしょうか?linkshyper-schema の両方で 800万件以上のリクエストがありました。前に述べたように、これらのリクエストを特定するのは非常に困難ですが、それらを除外した場合どうなるか見てみましょう。すると 405万件になります…悪くないですね!ただし、2019-09 ではメタスキーマを複数のファイル、特に個々のボキャブラリーに分割したことを考慮する必要があります。各ボキャブラリーで 50万件以上のリクエストがあり、汎用メタスキーマとコアではわずかに多くなっています。

hyper-schema の URL をフィルタリングした 2019-09 のユーザーエージェントは、主に Java です。

では、2020-12 では何が期待できるのでしょうか?私も興味がありました。

742万件あり、そのいずれも Hyper Schema に関連していません。

そのうち、.../meta/core に 153万件、次に検証ボキャブラリーメタスキーマにわずか 577,840件です。これが正確であれば、少し懸念されます。/draft/2020-12/schema がアクセスされる上位パスになると予想されますが、472,460件で 8 位に表示されるだけです。

トラフィックパターンは非常にスパイク状で、時間ベースのパターンが繰り返されます。おそらく、何らかの cron ジョブが実行されているのでしょう。上位の IP アドレスを除外すると、すべてのスパイクがなくなるため、このバーストトラフィックが Amazon が管理する AWS サーバーから発生していることが強く示唆されます。

AWS に連絡を取り、より具体的な詳細情報を取得できるかどうかを確認します。DoS 攻撃ではない可能性が高いですが、何かが間違っているというシグナルです。

ASN、OSI、何?

上位2つの ASN ソースは Amazon が管理しており、合計で 3,900万件以上のリクエストがあります。

ネットワークエンジニアでない方のために説明すると、ASN は 自律システム番号 で、インターネット経由のパケットのルーティングに使用され、最速のルートを確実に選択します。OSI モデル(はい、私もあまり覚えていません)つまり OSI モデル について学んだことを思い出してみると、これらの ASN はトランスポート層の一部として使用されます。

要するに、IP アドレスの所有者を調べる必要なく、トラフィックの約 80% が AWS から来ていることがわかります!

AWS から多くのトラフィックが来ていることを考えると、これらのリクエストのうち約 4,300万件が米国とアイルランドから来ていることは驚くことではありません。その次にフィンランド、インド、オランダが 100万件クラブを形成しています。続いてドイツとロシア、そしてアジアの数カ国が 20万件を超えています。

ソース

5,192万件のリクエストのうち、実に 5,112万件がリファラーを宣言していません。上位3つは json-schema.org、Google、そして非常に興味深いことに localhost です!

奇妙なことに、1,540件のリクエストが、DuckDuckGo よりもわずかに多い、廃止された Uber の和解に関するリファラーを宣言しています。

これらすべては何を意味するのでしょうか?

メタスキーマへのアクセスは、使用率の割合と相関関係がない可能性がありますが、少なくともある程度の使用状況を示す指標となります。このデータを見ることで、AWS に連絡して詳細情報を取得できるかどうかを確認することになりました。IDE メーカーへの連絡も促されましたが、それはすでに私たちのリストに入っていました。既知のプラットフォームユーザーを拡大しました。適切なエージェント文字列を使用してくれるのは素晴らしいことです。

7日間の履歴しかアクセスできないため、より長い期間にわたってわかることはあまりありません。従来の分析は有用であり、実際私たちも使用していますが、JSON ファイルへの直接アクセスについては教えてくれません。

これらの数値の中には興味深いものもありますが、今日においてそれらがどれほどの有用性をもたらすのかについては、まだ確信が持てません。


2023年7月21日と2023年7月31日のパスのトラフィックを並べて表示します。

Web トラフィック スナップショット 2023年7月21日。
Web トラフィック スナップショット 2023年7月31日。

この記事についてご意見、コメント、フィードバックはありますか?このデータが表示される理由について何か考えはありますか?さらなる調査や分析のアイデアはありますか?ぜひ、以下でさらに議論しましょう:https://github.com/orgs/json-schema-org/discussions/480

Isaac Smith による写真、Unsplash より