Pinterest使用Honeycomb增强CI可观测性和构建稳定性

Pinterest使用Honeycomb增强CI可观测性和构建稳定性
2025年01月11日 10:15 InfoQ

作者 | Aditya Kulkarni

译者 | 张卫滨

策划 | 丁晓昀

最近,Pinterest 的移动构建团队讨论了他们如何利用数据可观测性平台 Honeycomb 来提高持续集成(CI)流程的效率和稳定性。该团队在 2021 年开始采用 Honeycomb,这使得他们能够监控构建指标、分析趋势并解决性能瓶颈。

Pinterest 的软件工程师 Oliver Koo 在一篇博客文章中讨论了数据驱动方式的可观测性。Honeycomb 为 Pinterest 提供了先进的数据可视化工具,增强了 CI 的监控能力。借助 Honeycomb 的特性,比如衍生列和快速查询的性能,团队可以处理上百万的每日事件,并能够近乎实时地识别构建期或流水线性能方面的异常。

这使得他们能够快速诊断问题并采取有针对性的改进措施。例如,Koo 讨论了如何使用 Honeycomb 的跟踪视图来分析特定的构建,并识别出导致 CI 流水线变慢的问题 job 或流程。在对他们的持续集成(CI)流水线进行分析时,有两种场景在检查构建次数以及 p95 和 p50 构建时间方面比较突出。一种情况是构建次数激增,但是构建时间没有变化,这样团队可以专注于其他的任务。但是,另一种情况则是构建次数保持一致,但 p95 构建时间却出现了明显的增长,这需要进一步的调查。

通过使用 Honeycomb 的跟踪视图,团队发现了一个“超级秘密测试”的 job 是导致 p95 构建时间激增的瓶颈。由此推断,其他构建过程中也可能出现类似的速度减慢的现象。为了进一步调查,团队使用 Honeycomb 的 web_url 属性直接在 Buildkite 中分析了更多的构建。

图片来源:Pinterest 如何利用 Honeycomb 增强 CI 可观测性并提高 CI 构建的稳定性

Honeycomb 的跟踪视图虽然与 Buildkite 在 2023 年推出的瀑布视图类似,但是前者因其无缝集成与灵活性而更受欢迎。它可以将构建分为更详细的组成部分,比如代理等待时间与脚本执行时间等,从而能够记录和分析关键的构建和 job 流程。

下图展示了如何将每个 Buildkite job 拆分为不同的执行序列,以及如何利用 Bazel 构建脚本来记录特定的执行时间。这种方法有助于回答一些关键问题,如仓库的平均克隆时间以及构建阶段的 p50 和 p95 时间。

图片来源:Pinterest 如何利用 Honeycomb 增强 CI 可观测性并提高 CI 构建的稳定性

这篇博文被分享到了 LinkedIn 上,引起了技术社区的关注。Honeycomb 首席执行官 Christine Yen 分享了这篇博文,并提到:

我很高兴地看到 Pinterest 工程团队 的朋友们依靠 Honeycomb 实现快速构建,工程师们可以在行为与预期不符时排除故障!

Koo 还讨论了另外一个使用场景,即识别 CI job 中的瓶颈。在分析构建跟踪时,Pinterest 的工程师发现特定的 job 会导致构建时间的激增。它们使用 Honeycomb 的相关功能将来自多个仪表盘的数据叠加到一起,从而定位到了根本原因,比如,CI 代理等待时间的增长。与手动分析相比,这种综合的方式大大减少了排除故障所需的时间。

此外,Pinterest 还使用 Honeycomb 实现了错误分类,以简化待命(on-call)工作流并改善了故障管理。对错误进行实时分类使团队能够自动发出告警并将其发送给对应的团队。这进一步减少了噪音,提高了响应效率。该系统有助于优先处理关键问题,比如测试不稳定或网络故障,同时最大限度地减少对工程团队的不必要干扰。

除了 CI 工作流之外,Pinterest 还使用 Honeycomb 分析了 iOS 开发人员的本地构建指标,以优化硬件升级,并跟踪了 Android 构建的性能数据,以获得更深入的见解。

查看英文原文:

Pinterest's Use of Honeycomb for Enhanced CI Observability and Build Stability(https://www.infoq.com/news/2024/12/pinterest-honeycomb-enhanced-ci/)

声明:本文由 InfoQ 翻译,未经许可禁止转载。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部