博客

也要像对待牛群一样对待您的 IT 自动化代码。

Lori MacVittie 缩略图
洛里·麦克维蒂
2017 年 8 月 23 日发布

IT 必须采用推动 IT 运行的代码标准化,否则可能会创建吸走 IT 自动化带来的财务和功效利益的系统。

我花了近十年的时间开发软件。 嵌入式软件。 网络软件。 客户端-服务器软件。 中间件和大型机软件。 我曾使用九种不同的语言编写过专业代码。 有趣的是,我不记得在同一个组织使用过两种以上的语言。

大多数企业组织不仅对服务器、平台和框架进行标准化,而且对语言也进行标准化。 对于寿命超过几分钟、有时甚至长达几十年的软件来说,可维护性是一个目标。 可维护性是软件的特性,它使得软件能够被其他人选用并在整个生命周期内得到支持,而不管其生命周期如何衡量。 这通常是因为开发人员的流失和市场对语言能力的可用性以及培训和一般维护的成本。 一般来说,企业都会对编程语言进行标准化。

这与微服务和无服务器计算的当前趋势背道而驰,这些趋势宣称其优势在于能够支持高度多样化(多语言)的语言。 Bob 和他的团队可以用 Go 编写,而 Alice 和她的团队可以用 C 或 Java 或 Lambda 进行开发。 虽然这对于开发人员(他们都有自己喜欢的语言)来说无疑是一种福利,但对于需要长期维护该软件的企业组织来说却并不是那么好。 API 支持其集成和使用,使得其实现语言在应用开发方面基本无关紧要,但在企业中仍需要维护底层代码。

当谈到 IT 自动化(即企业生产端发生的内部数字化转型)时,企业不仅要认识到为支持 IT 而构建的脚本和系统标准化的好处,而且还要认识到不这样做的弊端。 因为你构建这些系统的目的并不是在下周、下个月甚至明年将它们丢弃。 它们是一项长期投资,将在未来几年支持部署的数字化。 这意味着要奠定一个灵活而坚实的基础,借鉴数十年来全球企业应用程序开发所学到的最佳实践,其中首要的就是标准化。

1. 可维护性

我知道你喜欢用 PERL 编写,但其他人都使用 Python。 用你最喜欢的语言开发自动化会使它成为你的宠物,这意味着将来没有其他人能够维护它。 这对你来说很糟糕,因为你会被这个东西困住很多年,就像你八岁时向父母乞求的那条金鱼一样。 这对组织来说是件坏事,因为如果你搬走,他们就会陷入无法维护的代码中,甚至可能很难提供支持。 SIG 和 O'Reilly 在 2016 年进行的一项调查发现,“70% 的受访者认为可维护性是衡量代码的最重要方面,甚至与性能或安全性相比。”

它非常重要。 将脚本和系统视为共享资源,现在和将来大多数 IT 人员都可以轻松修改和支持这些资源。

2. 兼容性

代码审查

随着越来越多的 IT 服务以软件形式实现,保持其更新和与其他系统兼容的任务也变得越来越重要。 如果您认为 REST API 消除了“向后兼容性”问题,请再想想。 API 是产品(或应该是产品),因此它们也在不断发展。 而在“网络”中,情况更加糟糕,即使是同一条产品线的产品也存在差异,不同版本的 API 也存在差异,这使得标准化成为一项永无止境的任务。 这一问题十分普遍,根据Smart Bear 的《2016 API 状况》报告中四分之一的受访者的说法,API 标准化在未来几年需要解决的技术挑战列表中排名第三。  

由于我们在 IT 中使用的很多语言都是解释型的,因此版本之间的变化可能会破坏精心设计的自动化脚本和系统。 从一个版本的 node.js 更改为另一个版本可能会产生严重的负面影响,从破坏脚本到出现意外行为。 对脚本环境和语言的稳定版本进行标准化将有助于最大限度地减少此类变化的影响。

而且您仍然需要管理为该自动化提供支持的每个底层系统的补丁和升级,因此越少越好。  

3. 故障排除

抛弃标准化意味着故障排除会很麻烦。 如果您要转向基于解决时间的 IT KPI 指标,这一点就尤为重要。 发现问题所花的时间越长,该指标看起来就越糟糕。 标准化是减少解决时间的重要组成部分。 如果 Bob 是员工中唯一的 Python 专家,而他正在度假(无法联系到),并且他的脚本出现问题,那么负责故障排除的人将要工作很长一周。 当您鼓励 IT 使用他们喜欢的语言时,您会严重限制其他人排除故障和解决问题的能力。 即使鲍勃没有休假并且无法找到问题,也很少有人可以提供帮助。

这不是你想惹麻烦的地方。 据InitialState称,修复一个错误所花的时间是编写一行代码所花时间的 30 倍。 您可以想象,当您努力寻找不熟悉的代码中的错误并进行修复时,钱慢慢地被送入碎纸机。 这不是一张漂亮的图像。 您无法消除故障排除的成本,但您可以通过消除那些不懂该语言的人所需的额外时间来限制它。 在生产中,时间就是金钱,因此,为缩短解决时间所能采取的任何措施都具有重大意义。

这就是为什么当 IT 慢慢采用脚本语言、工具和系统时,与应用程序开发同步并不是一个坏主意。 如果 IT 对相同的系统和语言(或至少其中一些)进行标准化,您将获得一批能够协助进行故障排除和其他与开发相关的流程(如代码审查)的专家。 因为您正在实施代码审查,以便在错误造成麻烦之前发现它们,对吗? 正确的?

标准化被视为应对成本上升的一种手段,而且它无疑是此类努力的关键贡献者。 但标准化也有其他各种好处,包括最大限度地减少技术债务、减少解决问题的时间以及简化日常运营维护。 完全不进行标准化肯定会对预算和时间产生相反的影响,因为它会引入复杂性和瓶颈,从而抵消自动化的好处并阻碍企业实现增长所需的利润和生产力。 当您开始或继续您的 IT 自动化之旅时,请记住将这些脚本和系统视为牛群,而不是私人宠物。 因为宠物需要持续的个人关注,而 IT 部门无力承担这一责任。