
140
|
第
14
章
内部工具通常会贯穿于多个生产系统,但一些与研发相关的功能除外,例如,针对开发
系统执行的额外复杂度以及用于构建和测试的代码合并。内部工具同生产服务系统有着
不一样的视角:比起业务系统,内部系统的单功能的重要程度显著提高。任何依赖系统
的故障都可能放缓开发人员的速度和增加团队的挫败感,并最终影响向客户交付软件的
速度。换句话说,如果你的软件供应链的第一部分出现问题,这个部分便会成为余下依
赖这一部分的其他部分的瓶颈。
“速度慢”是分布式系统中最难调试的问题。“不稳定”是内部工具团队经常听到的抱
怨。这两者共同催生了“如何在高复杂性系统中通过交互排查问题”的挑战。例如,当
基础设施或者测试不稳定时,开发人员编写代码的能力就会下降,他们对工具就会产生
不信任,从而导致沮丧。这种复杂性促使
Slack
投资构建可以共享的可观测性流水线。
你将在第
18
章看到更多有关可观测性流水线的详细信息,第
18
章由
Slack
的
Suman
Karumuri
和
Ryan Katkov
撰写。而在下一节,你将了解如何解决这个问题。
14.2 探针:共享客户端库和维度
Slack CI
的一个主要挑战就是复杂性。在端到端测试中,故障可能是多个代码库共同更
改的结果,例如,这些代码库需要跨代码库、基础设施以及平台运行环境进行更改。在
2020
年,
Web
应用开发人员进行的一次提交中,我们的
CI
流水线就要执行
30
多个依赖
GitHub
的测试组件,这个流水线横跨了三个平台团队(性能、后端、前端),并且涵盖了
20
多个小团队和一些专业的服务领域。 ...