paint-brush
开源和 JavaScript 的力量:全球化之旅by@globalping
111

开源和 JavaScript 的力量:全球化之旅

Globalping7m2023/10/05
Read on Terminal Reader

在这篇博文中,我将分享我们在这家初创公司的经历中获得的见解和经验教训,以及它们如何影响我们在 Globalping 的方法。我将特别介绍我们为何构建基于 JavaScript 的开源平台以及这些选择如何改变了项目。
featured image - 开源和 JavaScript 的力量:全球化之旅
Globalping HackerNoon profile picture

在构建新产品时,您突然面临无数的挑战和决策。遗憾的是,无论您是刚刚起步还是经验丰富的企业家,都没有神奇的公式可以做出正确的选择。作为一个团队多次走过这条路,我们理解它可能带来的兴奋和担忧。


我们是一个小团队,最近推出了Globalping ,一个全球网络测试平台。这个项目很特别,因为这是我们在类似产品理念的初创公司未能达到预期结果后的第二次尝试。通过 Globalping,我们正在采取不同的方法来实现我们的产品目标和愿景。


在这篇博文中,我将分享我们在这家初创公司的经历中获得的见解和经验教训,以及它们如何影响我们在 Globalping 的方法。我将特别介绍我们为何构建基于 JavaScript 的开源平台以及这些选择如何改变了项目。

反思和学习:从过去的经验中成长

让我们回到几年前,我们创立了一家名为 PerfOps 的初创公司。这个想法是建立一个 B2B SaaS 平台来优化基于互联网的应用程序。它使用 RUM(真实用户监控)数据来收集 CDN 提供商的性能指标并启用多 CDN 负载平衡功能。


作为奖励,它还允许用户从全球不同位置运行网络测量请求,例如跟踪路由和挖掘。


像许多初创公司一样,我们需要资金。幸运的是,我们获得了风险投资的支持,使我们能够组建一个团队并租用数百台 VM(虚拟机)来构建全球网络以进行按需网络测试。因此,我们可以开发新技术来分析数十亿个 RUM 数据点,并将它们实时用于基于 DNS 的负载平衡。


虽然这次冒险没有取得预期的成果,但所获得的经验是无价的,并塑造了 Globalping 今天的道路。


一些要点:

  • 压力抑制热情:风险投资促使我们改变工作节奏和优先顺序。当我们专注于满足指标以确保下一轮融资并将我们的优先事项从小型企业和单一用户转向大型企业时,我们感到对我们想法的喜悦和热情逐渐消失。


  • 为用户构建:开发产品以满足投资者的期望通常与我们构建用户所需的愿景不符。只要您了解行业和市场,关注用户的需求就很重要,而我们的投资者对此没有经验,并推动改进不兼容的不同指标和优先事项。


  • RUM 数据不可靠。虽然大量有用,但很快就发现大多数真实用户监控 (RUM) 数据都存在问题,并且对于调试网络问题来说并不理想。您永远无法知道问题出在 CDN 还是运行测试的客户端上。另外,RUM 数据不可重复;一旦测试运行,就无法从同一位置重新运行它来评估更改的影响。


  • 黑匣子没有帮助。作为一家由风险投资支持的公司,我们必须对所有代码和数据保密并向公众隐藏。我们的用户永远无法验证向他们显示的数据的真实性和准确性。此外,任何人都可以声称我们手动更改了绩效排名以支持高付费客户,但无法证明相反的情况。


但即使在这家初创公司遭遇不幸之后,我们仍然看到了准确、开放、可靠的网络测试和性能监控的潜力和需求。因此,Globalping 诞生了,这是我们以不同的方式做事并汲取经验的第二次机会,为我们的用户和我们自己创造更好的服务。现在,让我们与您分享我们是如何做到这一点的。

拥抱开源并把用户放在第一位

我们相信,让 Globalping 成为一个开源项目是一个自然的过程。这一次,我们已经熟悉了这个概念。我们运行jsDelivr已有大约 10 年了,这是一项免费、开源、多 CDN 服务,每月处理超过 2300 亿次请求。


因此,我们已经知道开源的利弊、该做什么、该避免什么——我们思考得越多,就越觉得 Globalping 必须开源是有道理的。


Globalping 开源的主要原因是:

  • 利用社区:大多数为该项目做出贡献的人也使用它。因此,他们通过贡献自己的技能或简单地提供反馈来帮助构建自己的工具并获得所需的功能。此外,Globalping 与其社区一起成长,因为我们不是租用虚拟机来构建测试网络,而是依靠社区在他们的家庭和办公室中托管 Globalping 探针。


  • 利用 jsDelivr :建立社区不是一朝一夕的事。幸运的是,我们已经有了一个很棒的社区来支持我们的另一个项目 jsDelivr。由于技术重叠,许多现有用户和支持者可以加入 Globalping:jsDelivr 提供全球分布式基础设施,而 Globalping 是一种监视、测试、调试和比较此类全球系统的方法。


  • 为所有人打造:随着增长和利润压力的减轻,我们现在可以专注于打造一个所有人都可以访问的平台。该平台是免费的,有很大的限制,为每个人提供相同的功能,无论他们是大型企业还是刚刚学习互联网如何运作的学生。


  • 透明:开源使我们的工作透明且对所有人可见。任何人都可以查看我们的代码和逻辑,无论是我们的探针还是核心 API。这有助于我们验证我们的安全和隐私声明,并向用户保证我们是公平的,不会出售评级或使用有偏见的算法来计算 CDN 性能。此外,任何发现代码或功能存在问题的个人或公司都可以提交补丁,请求添加更新或修复。


当然,开源也有其挑战。产品开发需要开发人员、设计师、营销人员和开发人员关系专家。虽然我们得到了社区技术专家的支持,但我们仍然与核心团队合作,他们的工作得到了报酬。


我们现在不再依赖风险投资资金,而是与志同道合的公司建立合作伙伴关系,并寻求 GitHub 赞助商的支持,他们的捐款让我们得以运转。

选择 JavaScript 来开发全球化

下一个重要的决定是我们想要用来构建 Globalping 的技术。凭借我们在操作大型实时 JavaScript 应用程序方面的经验,我们自信地选择了 JavaScript。


我们对语言的熟悉所带来的好处已经得到了回报,与不太熟悉的语言相比,我们能够更快地构建新功能,更容易地发现和修复错误。


此外, JavaScript 在全球应用程序和 Web 开发人员中的流行使其成为我们显而易见的选择。该语言拥有丰富而强大的工具、库和包生态系统,与我们的开发目标相一致。通过使用其他开源项目,我们可以利用社区的知识和努力,避免重新发明轮子。


由于 JavaScript 本身拥有庞大的社区,因此 Globalping 有许多潜在的贡献者。而且由于 JavaScript 代码大多易于阅读,因此新手可以更轻松地浏览和理解源代码。


因此,开发人员可以更快地做出贡献,从而保持动力并推动项目向前发展。


最终,虽然我们的核心团队持续致力于 Globalping,但我们欢迎对该平台做出任何贡献。通过选择 JavaScript,我们可以维护一个开放和协作的环境,邀请任何有兴趣使 Globalping 成为有用且用户友好的网络测试平台的人。

自己或在团队中使用全球化

最后,我们想向您简要介绍 Globalping 平台,并希望激发您的好奇心,尝试使用它来改进团队中的故障排除和网络测试!


快速访问测量结果:我们开发了各种集成来满足不同用户的需求,无论他们是网络专家还是新手。如果您对终端最熟悉,请使用我们的CLI 工具。我们的GitHub 机器人Slack 应用程序是团队共同解决网络问题的好帮手。


最后,例如,当您无法访问常用设置时,您还可以在我们网站上的简单且用户友好的图形界面中使用 Globalping 来运行测试。


跨集成一致地编写命令:由于我们不希望您每次切换集成时都从头开始学习所有内容,因此我们实现了统一的命令结构。一般来说,所有 Globalping 命令都遵循相同的格式:

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


因此,例如,要使用两个探测器(使用 limit 标志定义)从维也纳和柏林运行 ping 到jsdelivr.com ,请编写以下命令:

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


结果可能是这样的:

使用 Globalping 从世界任何地方进行 ping


使用我们的 API 创建您自己的工具:想要使用 Globalping 平台构建您自己的工具吗?没问题 – 您可以使用我们的 REST API(有很大的限制)来创建您想要的任何内容!


成为网络的一部分: Globalping 依赖于由我们社区提供支持的全球分布式探测器网络。我们很高兴欢迎任何在家里、办公室或服务器上设置 Docker 探测器的人,以帮助免费向所有用户提供可靠的结果。

展望未来:共同建设全球化

今天,我们很高兴看到Globalping在我们过去的经验和学习的基础上如何发展和成长。最终,我们希望 Globalping 能够成为与互联网性能、延迟和正常运行时间相关的任何事物的首选平台。


我们将继续完善功能并提供出色的用户体验,以便任何感兴趣的人都可以使用该平台。