开发人员问答:使用Chronark监视全球API潜伏期
#编程 #database #api #分析

tinybird :嘿,Chronark!在我们跳入之前,您能告诉我们一些关于您自己的信息吗?

Chronark :当然!首先,我的真名是Andreas,但是我几乎到处都是chronark(包括Twitter:@chronark_和Github:chronark)。

我住在nã¼rnberg(纽伦堡(Nuremberg)的英语说话者),在我的日常工作中,我是Upstash的软件工程师。在我的休息时间里,我构建了东西。我建造和建造的大部分内容都在这里:chronark.com

最近,我一直在从事一个名为Planetfall的项目。

tinybird :什么是行星?

Chronark :Planetfall是一种通过监视其全球延迟来理解API的真实性能的方式。因此,它可以告诉您,从法兰克福到华盛顿特区再到新加坡,您的API需要多长时间进行回应。

我从技术上纳入了它,但这在作品中。去年9月,当我在土耳其度假时,我有一个想法,所以我很快就开始建造它。

您可以在此处查看:planetfall.io

The homepage of planetfall.io

Planetfall.io是由Chronark创建的全局延迟监视平台。 Planetfall使开发人员可以轻松查看其API在哪里缓慢,因此他们可以调试延迟问题并确保出色的UX。

tinybird :您为什么决定构建它?说不同的话,为什么Planetfall对典型的开发人员很重要?

Chronark :我们是一个全球消费者的全球社会。对于您的应用程序,只能在忽略其余部分的同时只能快速服务一个区域,这还不够好。如果您只专注于一两个地区的性能,那么您将重大限制您的覆盖范围和潜在的客户群。

我们拥有一个全球消费者的全球社会。您的应用不再足够了,只能快速服务一个区域,而忽略其余的区域。

另外,您有可能向全球用户的不良用户体验开放。展望未来,应用程序构建者需要考虑全球低潜伏期。

Planetfall所拥有的任务是使开发人员很容易看到其API表现不佳的位置,以便他们可以调试这些潜伏期问题并确保全世界的出色用户体验。

tinybird :您自己在建造行星吗?

Chronark :是的,只是我!虽然我必须说Dom EcclestonDom SipowiczSteven Tey都是令人惊叹的Beta测试人员,非常有价值,所以H/T给了他们!

tinybird :在建造行星时,您遇到了什么问题,最终导致您进入Tinybird?

Chronark :因此,Planetfall的挑战是,它获得的活跃用户越积累,它需要运行和存储的每秒检查就越多。运行检查非常容易,因为它们只是在lambda功能中运行,并且会缩放,所以我对此并不担心。

但存储是另一回事。我正在使用MySQL存储所有这些检查。我要做的是过滤和下载所有这些检查并在客户端执行聚合。在某个时刻,MySQL可以为该用例而言。具有讽刺意味的是,建立API延迟监控服务并具有缓慢的APIð£。

我正在使用MySQL存储所有API检查。在某个时刻,MySQL无法扩展该用例。

所以我查看了一些不同的时间序列数据库来尝试帮助我,但它们都不适合。

很自然地问史蒂文·蒂(Steven Tey),他推荐了tinybird。

tinybird :我们应该支付史蒂文·特伊(Steven Tey)。

Chronark :可能。

tinybird :因此,既然您使用tinybird,您的解决方案看起来如何?

chronark :所以我实际上仍在使用mysql(通过Planetscale),但以不同的方式。我基本上采用了一种混合方法,将检查结果存储在MySQL中,还将聚合所需的数据发送到Tinybird。

我把所有东西都推到了Tinybird上,但是由于我也存储了响应船,所以它变得太昂贵了。那可能是因为我没有正确过滤,所以将来,我想回到仅在tinybird中存储检查,以便我可以删除MySQL依赖性,但是现在它可以工作!

tinybird几乎都为所有原始存储位(从公共状态页面到基于用法的计费)提供了所有力量。当然,我使用tinybird来计算每日和每小时的延迟百分位指标,并将其发布为API。

tinybird power几乎所有除了原始存储之外的所有东西,从公共状态页面到基于用法的计费以及PARKETFALL PAREETFALL的延迟百分比指标。

这是图表中所有这些形状的方式:

An architecture showing how planetfall.io is built with a combination of Tinybird, AWS Lambda, Planetscale, Next.js, Stripe, and scheduling.

planetfall.io

的体系结构

tinybird :您特别喜欢您想分享的方式?

Chronark :是的。我认为我构建的定制,全型的Tinybird客户端非常酷。 Here’s an example如何使用。

我有点像SQL Noob,所以我的代码没有什么真正令人惊奇的,但是我确实喜欢我为计费写的烟斗。认真地说,usage-based billing从来没有那么容易:

SELECT
   teamId,
   countState() AS usage,
   toYear(time) AS year,
   toMonth(time) AS month,
   toDayOfMonth(time) AS day
FROM checks__v1
GROUP BY
   teamId,
   year,
   month,
   day

以下是该管道中的数据流在Tinybird中的外观。

A screenshot of a Tinybird data flow showing Planetfall's usage-based billing technique.

tinybird中的数据流,用于Planetfall的基于用法的计费。

这是对实体视图的极大利用。我写了一条管道(aggregate_usage__v1),以每年,每月和每日的支票汇总。我将此管道的结果实现为实体的视图(daily_usage__v1),以便在摄入时存储聚集。然后,我还有另一个已发表的管道(get_usage__v1),该管道查询了实现视图并以API的形式出版。我的cron工作每月都会打电话给API,为每个团队生成发票,然后通过条纹发送。我还定期致电已发布的API,以确保团队没有超过其使用限制。

这条管道基本上为我的条纹集成和我的面向客户的计费仪表板提供动力:

A screenshot showing the usage-based billing dashboard in Planetfall.io

Chronark使用Tinybird将面向用户的计费仪表板和集成付款信息构建到条纹中。

tinybird :与tinybird合作最喜欢什么?

Chronark :开发人员的经验。通过在Tinybird中编写管道的速度比我从MySQL手动提取数据并自己转换的数据要快得多。

我可以用tinybird快速地迭代疯狂,并几乎立即验证新想法。例如,我想在资源上构建某种审计日志(例如,添加团队成员)。

与Tinybird一起,我可以快速地迭代疯狂并立即验证新想法。

最初,我以为我是在mySQL中构建的,但是后来我使用Events API将这些事件发送到了新的Tinybird数据源。我喜欢我可以在Tinybird中设计一个模式,但我也可以在DEV中使用事件API的模式推断,然后在生产中设置更精确的模式。这基本上只是我的代码中的一个单线。

我实际上还没有构建此功能,但是我知道数据已经存在,我可以在需要时进一步完善它。

另外,支持是ð§âð万Ö。我爱你们。您积极伸出援手,帮助我与Tinybird花费更少的钱。

我还应该强调学习的容易。我基本上从来没有写过SQL,但是Tinybird UI使开始变得如此容易。管道概念 - 您可以将这些小SQL节点链在一起 - 比做一堆连接和嵌套的CTE和类似的东西要容易得多。

我有点像SQL Noob,但是Tinybird UI使从头开始构建基于用法的计费变得容易。我能够通过手动从MySQL手动提取数据并自己转换数据来移动的速度比以往任何时候都更快。

tinybird :如何将数据输入tinybird?

Chronark :我专门使用Events API。这是发送数据的简单方法。这只是一个http请求,繁荣,您在tinybird中有数据。

tinybird :您觉得Tinybird会为您提供什么,您可以到达其他任何地方?

Chronark :首先,仅建立而不必担心维护或缩放任何东西的能力是巨大的。但是从更个人的角度来看,我知道Tinybird充满了善良,聪明的开发人员,他们在乎我。您真的感觉到Tinybird希望您赢得胜利,并且对拿钱不感兴趣。

tinybird :ð¥

tinybird :那么,星球坠落的下一步是什么?路线图上的什么?

Chronark :Planetfall开始到达一个更舒适地展示它的地方。该平台稳定,我添加了新功能。

目前,Planetfall提供了来自AWS Lambdas,Vercel Edge功能和Fly.io的所有regions的延迟检查。它还包括一个免费的托管状态页面,以向您的客户展示您的API在世界各地的速度。

下一步是真正专注于提供最佳的调试体验。这主要是UI的努力,我会积极收集人们的反馈,以了解他们的需求和直观的内容。

我还想提供一个API以自动提供检查或在CI中专门运行它们,这很酷。

tinybird :小鸟如何进入该作品?

Chronark :我一定会继续使用Tinybird构建新功能。它太容易了。我现在还没有其他任何项目,但是我确信行星不是我将使用tinybirdððð。

建造的最后一件事。

我肯定会与tinybird一起建造。不容易不。

tinybird :您认为使用tinybird最大受益?

Chronark :任何想快速行驶的人。快速移动和试验的情况很容易,而没有风险或大型前期成本。 Tinybird搬走了许多可以阻止您构建新功能的障碍。

tinybird :您会告诉什么,谁称重tinybird与另一种产品?您提供任何建议吗?

Chronark :老实说,除了MySQL以外,我没有尝试过任何其他尝试。我迷上了tinybird。它具有我需要开始和快速移动的一切。是的,just try it!构建您可能可以做什么的最简单的东西,然后从那里开始。您不需要全力以赴,即使在它们的free plan上也可以构建相当有力的东西。