新しい製品を構築するとき、突然無数の課題と決断に直面することになります。残念ながら、起業したばかりの人であっても、経験豊富な起業家であっても、正しい選択をするための魔法の公式はありません。チームとしてこの道を何度か歩いてきた私たちは、それがもたらす興奮と不安を理解しています。
私たちは最近、グローバル ネットワーク テスト プラットフォームであるGlobalpingを立ち上げた小さなチームです。このプロジェクトは、同様の製品アイデアを持つスタートアップが望ましい結果に達しなかった後の 2 回目の試みであるため、特別です。 Globalping では、製品の目標とビジョンを達成するために、これまでとは異なるアプローチを採用しています。
このブログ投稿では、このスタートアップとの経験から得た洞察と学び、そしてそれらが Globalping でのアプローチにどのような影響を与えるかを共有します。特に、JavaScript ベースのオープンソース プラットフォームを構築した理由と、これらの選択によってプロジェクトがどのように変化したかについて書きます。
数年前に私たちが PerfOps というスタートアップを設立したときのことを考えてみましょう。このアイデアは、インターネット ベースのアプリケーションを最適化するための B2B SaaS プラットフォームを構築することでした。 RUM (Real User Monitoring) データを使用して CDN プロバイダーのパフォーマンス メトリクスを収集し、マルチ CDN ロード バランシング機能を有効にしました。
おまけに、ユーザーは、traceroute などのネットワーク測定リクエストを実行したり、世界中のさまざまな場所から掘ることもできました。
多くのスタートアップと同様に、私たちにも資金が必要でした。幸運にも VC の支援を受け、チームを編成し、数百台の VM (仮想マシン) をレンタルして、オンデマンド ネットワーク テスト用のグローバル ネットワークを構築することができました。その結果、数十億の RUM データ ポイントを分析し、それらを DNS ベースの負荷分散にリアルタイムで利用するための新しいテクノロジーを開発できるようになりました。
この事業は思い描いたようにうまくいきませんでしたが、得られた経験は非常に貴重であり、今日の Globalping の方向性を形作りました。
いくつかの要点:
しかし、スタートアップの不運な運命の後でも、私たちは依然として、正確でオープンで信頼性の高いネットワーク テストとパフォーマンス モニタリングの可能性と必要性を認識していました。そして、Globalping が誕生しました。これは、これまでとは異なる方法で物事を行い、経験を活用してユーザーと私たち自身のためにより良いサービスを作成する第 2 のチャンスです。では、私たちがそれをどのように行っているかを共有しましょう。
Globalping をオープンソース プロジェクトにするのは自然な流れだったと私たちは信じています。とりあえず、私たちはこの概念についてすでによく知っています。私たちは、毎月 2,300 億件を超えるリクエストに対応する、無料のオープンソースのマルチ CDN サービスであるjsDelivr を約 10 年間実行してきました。
そのため、オープンソースの長所と短所、何をすべきか、何を避けるべきかはすでにわかっていました。考えれば考えるほど、Globalping はオープンソースでなければならないことが理にかなっていました。
Globalping をオープンソースにする主な理由は次のとおりです。
当然のことながら、オープンソースにも課題があります。製品開発には、開発者、デザイナー、マーケティング担当者、開発者関係の専門家が必要です。また、コミュニティの技術専門家のサポートを受けながらも、彼らの仕事に対する報酬を受け取るコアチームと協力しています。
私たちは現在、VC の資金に頼るのではなく、志を同じくする企業とパートナーシップを構築し、GitHub スポンサーからの支援を求めており、その寄付によって運営が続けられています。
次に重要な決定は、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
そして、結果は次のようになります。
API を使用して独自のツールを作成する: Globalping プラットフォームを使用して独自のツールを構築したいですか?問題ありません。REST API (寛大な制限付き) を使用して、必要なものを作成できます。
ネットワークの一員になる: Globalping は、コミュニティが提供するグローバルに分散されたプローブのネットワークに依存しています。すべてのユーザーに信頼できる結果を無料で提供するために、自宅、オフィス、またはサーバーの Docker でプローブをセットアップする方を喜んで歓迎します。
現在、私たちは、過去の経験と学習によって形成され、 Globalping がどのように進化し、成長しているかを見てうれしく思います。最終的には、Globalping がインターネットのパフォーマンス、遅延、稼働時間に関連するあらゆるものにとって頼りになるプラットフォームになることを願っています。
私たちは今後も機能を改良し、興味のある人なら誰でもプラットフォームを使用できるように優れたユーザー エクスペリエンスを提供していきます。