购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 目的

在介绍搭建开发集群的最佳实践之前,有必要探讨一下搭建这类集群的目的。毋庸置疑,开发集群的最终目的是让开发者能够更加快速、轻松地在Kubernetes上构建应用程序,但是在实践中它到底意味着什么?开发集群的实际作用如何体现出来?

识别开发者与集群交互的各个阶段将有助于回答上面的问题。

第一阶段是加入初期(onboarding)。当新的开发者加入团队时,让他们登录到集群并且完成首次应用程序部署,目的是让他们在最短的时间内熟悉环境。你应该为此过程设置KPI(关键绩效指标)。一个合理的目标是新人可以在不到半个小时从一无所有到让应用程序真正运行起来。每当有新人加入团队时,你都应该检验这个目标完成得如何。

第二阶段是开发阶段(developing)。这是开发者的日常活动,此阶段的目标是确保应用的快速迭代和调试。开发者需要快速且不断地推送代码到集群。此外,他们还需要能够轻松地测试代码,并在代码无法正常运行时进行调试。此阶段的KPI比较难以度量,你可以通过两种方式进行度量:一种是度量从提交拉取请求(Pull Request,PR)或变更到它们被部署到集群并正常运行所需的时间,另一种是调研用户的感知生产力。这两种方式可以同时使用,你还可以用它们来度量整个团队的生产效率。

第三阶段是测试阶段(testing)。它与开发阶段交替进行,用于代码提交和合并之前的验证。这一阶段有两重目标。首先,开发者在提交PR之前就能够在他们的环境中运行全部测试。其次,在代码合并到代码库之前就应该自动运行所有测试。此外你还应该为测试的运行时间设置KPI。随着项目越来越复杂,越来越多的测试需要更长的时间是很正常的。在这种情况下,确定一组较小的冒烟测试可能会有所帮助,开发者可以在提交PR之前使用这些测试进行初始验证。你还应该为测试的易碎性(test flakiness)设置非常严格的KPI。我们将偶尔(或许也没那么偶尔)失败的测试称为易碎测试。在任何正常的项目中,高于千分之一的易碎率(flakiness rate)都会给开发带来阻力。你需要确保你的集群不会导致易碎测试,易碎测试有时是由于问题代码导致的,但开发环境的干扰(比如资源耗尽和坏邻居效应 )同样可能导致易碎测试。你应该通过度量测试易碎性并迅速进行修复来确保开发环境不存在这样的问题。 0h6ZSdiQif9aq1vgiNdpidAGet0zrXCE61cpZbzG2cwyYcgu8xIWMJgq1ofS3r9u

点击中间区域
呼出菜单
上一章
目录
下一章
×