第 13 章 永远不要让人去做机器的工作
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
将一切自动化;不能自动化的,让它成为自助服务
让机器做人的工作
谁 会想到,你能从电影三部曲《黑客帝国》中学到这么多关于大型 IT 架构的知识?虽然《黑客帝国》是由机器运行的,但从中发现一些系统设计的智慧也不足为奇:史密斯特工告诉我们,在他与莫斐斯的一名人类船员赛费尔(Cypher)的交易失败后,永远不要派人类去做机器的工作,因为赛费尔背叛并交出了他的老板。
让一切自动化
企业 IT 在很大程度上是通过自动化业务流程建立起来的,而 IT 本身却往往不是很自动化,这在某种程度上具有讽刺意味。在我企业职业生涯的早期,我宣布我的战略是:"自动化一切,并使那些无法自动化的部分成为自助服务",这让一大批基础设施架构师感到震惊。大家的反应从困惑、不信到轻微愤怒不等。不过,这正是亚马逊等公司所做的。在这一过程中,人们采购和访问 IT 基础设施的方式也发生了革命性的变化。这些公司还吸引了业内最顶尖的人才来建设这些基础设施。如果企业 IT 部门想要保持相关性,就应该这样思考!
不仅仅是效率问题
就像 测试驱动开发不是一种测试技术(它主要是一种设计技术),自动化也不仅仅是为了提高效率,而主要是为了提高可重复性和弹性。一位供应商的架构师曾经说过,不应该对不经常执行的任务实施自动化,因为这在经济上是不可行的。基本上,该供应商计算出,编写自动化程序所花费的时间要多于手动完成任务所花费的时间(该供应商似乎还签订了固定价格合同)。
我用可重复性和可追溯性的论点对这一推理提出了质疑:只要有人类参与,就一定会发生错误,工作也会在没有适当记录的情况下临时进行。这就是为什么不派人去做机器的工作。实际上,不经常执行的任务出错率可能是最高的,因为操作员缺乏日常工作经验。
第二个反例是灾难情景和停机:我们希望灾难情景和停机很少发生,但一旦发生,系统最好是完全自动化的,以确保能尽快恢复运行状态。这里的经济论点不是节省人力,而是最大限度地减少停机期间的业务损失,这远远超过人工成本。要理解这种想法,你需要了解 速度经济(第 35 章)。否则,你可能会认为消防队应该使用斗式链条,因为所有这些消防车和消防泵在经济上都是不可行的,因为建筑物实际上很少起火。
重复性增强信心
当我将任务自动化时,我通常能得到的最大直接好处就是增强了信心。例如,当我用 Markdown 编写最初的自出版版本时,我不得不维护两个略有不同的版本:电子书版本使用超链接作为章节参考,而印刷版则使用章节编号。我很快就厌倦了在两种格式之间手动转换,于是我开发了两个简单的脚本,用于在印刷版和电子书版本之间切换文本。由于操作简单,我还让脚本具有惰性,这意味着多次运行脚本不会造成任何损害。有了这些脚本,我甚至一秒钟都不用担心格式之间的切换,因为我可以保证不会出任何问题。自动化极大地解放了我,从而大大加快了工作进度。
自助服务
一旦 完全自动化,用户就可以在自助服务门户中直接执行常用程序。要提供必要的参数--例如服务器的大小--用户必须对他们正在订购的东西有一个清晰的心理模型。亚马逊网络服务(Amazon Web Services)提供了一个直观用户界面的良好范例,它不仅会提醒您服务器可以从世界上任何一台计算机上访问,甚至还会检测您的 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access