paint-brush
オープンソースと JavaScript の力: グローバル化の旅@globalping
103 測定値

オープンソースと JavaScript の力: グローバル化の旅

Globalping7m2023/10/05
Read on Terminal Reader

長すぎる; 読むには

このブログ投稿では、このスタートアップとの経験から得た洞察と学び、そしてそれらが Globalping でのアプローチにどのような影響を与えるかを共有します。特に、JavaScript ベースのオープンソース プラットフォームを構築した理由と、これらの選択によってプロジェクトがどのように変化したかについて書きます。
featured image - オープンソースと JavaScript の力: グローバル化の旅
Globalping HackerNoon profile picture

新しい製品を構築するとき、突然無数の課題と決断に直面することになります。残念ながら、起業したばかりの人であっても、経験豊富な起業家であっても、正しい選択をするための魔法の公式はありません。チームとしてこの道を何度か歩いてきた私たちは、それがもたらす興奮と不安を理解しています。


私たちは最近、グローバル ネットワーク テスト プラットフォームであるGlobalpingを立ち上げた小さなチームです。このプロジェクトは、同様の製品アイデアを持つスタートアップが望ましい結果に達しなかった後の 2 回目の試みであるため、特別です。 Globalping では、製品の目標とビジョンを達成するために、これまでとは異なるアプローチを採用しています。


このブログ投稿では、このスタートアップとの経験から得た洞察と学び、そしてそれらが Globalping でのアプローチにどのような影響を与えるかを共有します。特に、JavaScript ベースのオープンソース プラットフォームを構築した理由と、これらの選択によってプロジェクトがどのように変化したかについて書きます。

振り返って学ぶ: 過去の経験から成長する

数年前に私たちが PerfOps というスタートアップを設立したときのことを考えてみましょう。このアイデアは、インターネット ベースのアプリケーションを最適化するための B2B SaaS プラットフォームを構築することでした。 RUM (Real User Monitoring) データを使用して CDN プロバイダーのパフォーマンス メトリクスを収集し、マルチ CDN ロード バランシング機能を有効にしました。


おまけに、ユーザーは、traceroute などのネットワーク測定リクエストを実行したり、世界中のさまざまな場所から掘ることもできました。


多くのスタートアップと同様に、私たちにも資金が必要でした。幸運にも VC の支援を受け、チームを編成し、数百台の VM (仮想マシン) をレンタルして、オンデマンド ネットワーク テスト用のグローバル ネットワークを構築することができました。その結果、数十億の RUM データ ポイントを分析し、それらを DNS ベースの負荷分散にリアルタイムで利用するための新しいテクノロジーを開発できるようになりました。


この事業は思い描いたようにうまくいきませんでしたが、得られた経験は非常に貴重であり、今日の Globalping の方向性を形作りました。


いくつかの要点:

  • プレッシャーが情熱を弱める: VC への投資により、私たちは仕事のペースと優先順位を変更するよう促されました。次の資金調達ラウンドを確保するために指標を満たすことに重点を置き、優先順位を中小企業や個人ユーザーから大企業に移すにつれて、私たちのアイデアに対する喜びと熱意が薄れていくのを感じました。


  • ユーザー向けの構築: 投資家の期待に応える製品の開発は、ユーザーが必要とするものを構築するという私たちのビジョンと一致しないことがよくありました。業界と市場を理解している限り、ユーザーが何を望んでいるのか、何を必要としているのかに焦点を当てることは重要ですが、当社の投資家はこれまで経験がなく、互換性のないさまざまな指標や優先順位を改善するよう努めてきました。


  • RUM データは信頼できません。大量にあると便利ですが、ほとんどのリアル ユーザー モニタリング (RUM) データには問題があり、ネットワークの問題のデバッグには理想的ではないことがすぐに明らかになりました。問題の原因が CDN にあるのか、テストを実行しているクライアントにあるのかを知ることはできません。さらに、RUM データは再現できません。テストを一度実行すると、同じ場所から再実行して変更の影響を評価する方法はありません。


  • ブラックボックスは役に立ちません。 VC の支援を受けた企業として、私たちはすべてのコードとデータを秘密にし、一般公開しないようにしなければなりませんでした。当社のユーザーは、表示されたデータの信頼性と正確性を検証することはできませんでした。さらに、その反対を証明することもできずに、高額な料金を支払ってくれる顧客に有利になるようにパフォーマンスのランキングを手動で変更したと誰でも主張できます。


しかし、スタートアップの不運な運命の後でも、私たちは依然として、正確でオープンで信頼性の高いネットワーク テストとパフォーマンス モニタリングの可能性と必要性を認識していました。そして、Globalping が誕生しました。これは、これまでとは異なる方法で物事を行い、経験を活用してユーザーと私たち自身のためにより良いサービスを作成する第 2 のチャンスです。では、私たちがそれをどのように行っているかを共有しましょう。

オープンソースの採用とユーザーを第一に考える

Globalping をオープンソース プロジェクトにするのは自然な流れだったと私たちは信じています。とりあえず、私たちはこの概念についてすでによく知っています。私たちは、毎月 2,300 億件を超えるリクエストに対応する、無料のオープンソースのマルチ CDN サービスであるjsDelivr を約 10 年間実行してきました。


そのため、オープンソースの長所と短所、何をすべきか、何を避けるべきかはすでにわかっていました。考えれば考えるほど、Globalping はオープンソースでなければならないことが理にかなっていました。


Globalping をオープンソースにする主な理由は次のとおりです。

  • コミュニティの活用: プロジェクトに貢献するほとんどの人もコミュニティを利用します。そのため、彼らはスキルを提供したり、単にフィードバックを提供したりすることで、独自のツールの構築を支援し、必要な機能を入手できるようになります。また、Globalping はコミュニティとともに成長します。これは、VM をレンタルしてテスト ネットワークを構築するのではなく、コミュニティに依存して自宅やオフィスで Globalping プローブをホストしているためです。


  • jsDelivr の活用: コミュニティの構築は一夜にして成り立つものではありません。幸いなことに、私たちのもう 1 つのプロジェクトである jsDelivr をサポートする素晴らしいコミュニティがすでにあります。技術的に重複しているため、多くの既存のユーザーやサポーターが Globalping に参加できます。jsDelivr はグローバルに分散されたインフラストラクチャを提供し、Globalping はそのようなグローバル システムを監視、テスト、デバッグ、比較する方法です。


  • 全員のための構築: 成長と利益のプレッシャーが軽減されたため、すべての人がアクセスできるプラットフォームの構築に集中できるようになりました。このプラットフォームは無料ですが、寛大な制限があり、大企業であろうと、インターネットの仕組みを学んだばかりの学生であろうと、誰にでも同じ機能を提供します。


  • 透明であること: オープンソースにより、私たちの仕事は透明になり、誰にでも見えるようになります。プローブであれコア API であれ、誰でもコードとロジックをレビューできます。これにより、セキュリティとプライバシーの主張を検証し、当社が公平であり、評価を販売したり、CDN パフォーマンスを計算するために偏ったアルゴリズムを使用したりしていないことをユーザーに安心してもらうことができます。また、コードまたは機能に問題を見つけた個人または企業は、パッチを送信して、更新または修正の追加をリクエストできます。


当然のことながら、オープンソースにも課題があります。製品開発には、開発者、デザイナー、マーケティング担当者、開発者関係の専門家が必要です。また、コミュニティの技術専門家のサポートを受けながらも、彼らの仕事に対する報酬を受け取るコアチームと協力しています。


私たちは現在、VC の資金に頼るのではなく、志を同じくする企業とパートナーシップを構築し、GitHub スポンサーからの支援を求めており、その寄付によって運営が続けられています。

グローバル化を開発するための JavaScript の選択

次に重要な決定は、Globalping を構築するテクノロジーでした。私たちは、大規模なリアルタイム JavaScript アプリの運用経験に基づいて、自信を持って JavaScript を選択しました。


言語に精通していることの利点はすでに成果を上げており、あまり馴染みのない言語よりも新しい機能をより迅速に構築し、バグを見つけて修正することが容易になります。


さらに、 JavaScript は世界中のアプリ開発者や Web 開発者の間で人気があるため、私たちにとって JavaScript は当然の選択となりました。この言語には、開発目標に沿ったツール、ライブラリ、パッケージの豊富で堅牢なエコシステムがあります。他のオープンソース プロジェクトを使用することで、コミュニティの知識と努力を活用し、車輪の再発明を回避できます。


JavaScript 自体には広大なコミュニティがあるため、Globalping に貢献する可能性のある人が多数います。また、JavaScript コードはほとんど読みやすいため、初心者でもソース コードを簡単にナビゲートして理解することができます。


その結果、開発者はより早く貢献できるようになり、モチベーションが維持され、プロジェクトが前進します。


最終的には、当社のコアチームが Globalping に継続的に取り組んでいる間、プラットフォームへのあらゆる貢献を歓迎します。 JavaScript を選択することで、Globalping を便利でユーザーフレンドリーなネットワーク テスト プラットフォームにすることに関心のあるすべての人を招待する、オープンで協力的な環境を維持できます。

自分自身またはチーム内でのグローバル化の使用

最後に、Globalping プラットフォームについて簡単に紹介し、チームのトラブルシューティングとネットワーク テストを改善するために試してみたいという好奇心を刺激していただければ幸いです。


測定結果に素早くアクセス:ネットワークの専門家でも初心者でも、さまざまなユーザーのニーズを満たすために、さまざまな統合を開発しました。端末に慣れている場合は、 CLI ツールを使用してください。当社のGitHub ボットSlack アプリは、ネットワークの問題に協力して作業するチームにとって強力な助けとなります。


最後に、たとえば、通常のセットアップにアクセスできない場合に、 Web サイト上のシンプルで使いやすいグラフィカル インターフェイスで Globalping を使用してテストを実行することもできます。


統合間で一貫してコマンドを作成する:統合を切り替えるたびにすべてを最初から学習する必要はないため、統一されたコマンド構造を実装しました。一般に、すべての Globalping コマンドは同じ形式に従います。

 globalping [command type] [target] from [location] [flags]


したがって、たとえば、2 つのプローブ (limit フラグで定義) を使用してウィーンとベルリンからjsdelivr.comへの ping を実行するには、次のコマンドを作成します。

 globalping ping jsdelivr.com from "Vienna, Berlin" --limit 2


そして、結果は次のようになります。

Globalping を使用して世界中のどこからでも ping を実行できます


API を使用して独自のツールを作成する: Globalping プラットフォームを使用して独自のツールを構築したいですか?問題ありません。REST API (寛大な制限付き) を使用して、必要なものを作成できます。


ネットワークの一員になる: Globalping は、コミュニティが提供するグローバルに分散されたプローブのネットワークに依存しています。すべてのユーザーに信頼できる結果を無料で提供するために、自宅、オフィス、またはサーバーの Docker でプローブをセットアップする方を喜んで歓迎します。

将来に向けて: 共にグローバル化を構築する

現在、私たちは、過去の経験と学習によって形成され、 Globalping がどのように進化し、成長しているかを見てうれしく思います。最終的には、Globalping がインターネットのパフォーマンス、遅延、稼働時間に関連するあらゆるものにとって頼りになるプラットフォームになることを願っています。


私たちは今後も機能を改良し、興味のある人なら誰でもプラットフォームを使用できるように優れたユーザー エクスペリエンスを提供していきます。