编排和自动化之间有什么区别?

这两个术语都暗示事情会在没有您直接干预的情况下发生。但是获得这些结果的方式,以及您用来实现这些结果的工具,却有所不同。
114 位读者喜欢这篇文章。

长期以来,似乎系统管理员唯一关心的就是自动化。然而,最近,口头禅似乎已从自动化变为编排,这让许多困惑的管理员想知道:“有什么区别?”

自动化和编排之间的区别主要在于意图和工具。从技术上讲,自动化可以被认为是编排的一个子集。虽然编排暗示了许多移动部件,但自动化通常指的是单个任务或少量密切相关的任务。编排在更高的层次上工作,并且有望根据不断变化的条件和需求做出决策。

但是,不应过于字面地理解这种观点,因为术语自动化编排在使用时确实具有含义。两者的结果在功能上是相同的:事情在没有您直接干预的情况下发生。但是,获得这些结果的方式,以及您用来实现这些结果的工具是不同的,或者至少这些术语的使用方式因您使用的工具而异。

例如,自动化通常涉及脚本编写,通常使用 Bash 或 Python 或类似语言,并且通常暗示计划在精确的时间或在特定事件发生时执行某些操作。然而,编排通常从一个应用程序开始,该应用程序是专门为一组可能不定期地、按需或由于任何数量的触发事件而发生的任务而构建的,并且确切的结果甚至可能取决于各种条件。

决策制定和 IT 编排

自动化表明系统管理员发明了一个系统,使计算机执行通常必须手动完成的操作。在自动化中,系统管理员已经对需要完成的大部分工作做出了决策,而计算机必须做的就是执行“配方”的任务。

编排表明系统管理员设置了一个系统,使其能够根据一组规则、参数和观察结果自行执行某些操作。在编排中,系统管理员知道期望的最终结果,但让计算机来决定做什么。

考虑 Ansible 和 Bash。Bash 是一种流行的 shell 和脚本语言,系统管理员使用它来完成他们在给定工作日内实际完成的所有工作。使用 Bash 进行自动化非常简单:您无需在交互式会话中键入命令,而是将命令键入文本文件中,并将该文件另存为 shell 脚本。Bash 运行 shell 脚本,依次执行每个命令。条件决策制定有一定的空间,但通常,它不会比简单的 if-then 语句更复杂,每个语句都必须编码到脚本中。

另一方面,Ansible 使用 playbook,系统管理员在其中描述计算机的期望状态。它列出了 Ansible 在认为工作完成之前必须满足的要求。当 Ansible 运行时,它会根据计算机的当前状态与期望状态(基于计算机的操作系统等)进行比较来采取操作。playbook 不包含特定命令,而是将这些决策留给 Ansible 本身。

当然,特别能说明问题的是,Ansible 被称为自动化工具,而不是编排工具。区别可能很微妙,并且这些术语肯定会重叠。

编排与云

假设您需要转换用户定期上传到您服务器的文件类型。

手动解决方案是每天早上检查目录中是否有上传的内容,打开文件,然后以不同的格式保存。这种解决方案速度慢、效率低下,而且可能每 24 小时只能发生一次,因为您是一个忙碌的人。

[接下来阅读:如何用简单的英语解释编排]

您可以自动化该任务。如果您这样做,您可能会编写一个 PHP 或 Node.js 脚本来检测何时上传了文件。该脚本将执行转换并发送警报或进行日志条目以确认转换成功。您可以随着时间的推移改进脚本,以允许用户与上传和转换过程进行交互。

如果您要编排该过程,则可以从应用程序开始。您的自定义应用程序将设计为接受和转换文件。您可以在云中的容器中运行该应用程序,并且使用 OpenShift,您可以在流量或工作负载超出特定阈值时启动应用程序的其他实例。

学习自动化和编排

自动化或编排不仅仅只有一个学科。这些是广泛的实践,应用于许多不同行业中的许多不同任务。但是,学习的第一步是熟练掌握您要编排和自动化的技术。如果您不了解 Web 服务器的工作原理,或者需要打开或关闭哪些端口,或者端口是什么,那么编排(安全地)扩展一系列 Web 服务器是很困难的。在实践中,您可能不是打开端口或配置服务器的人员;您可能被指派管理 OpenShift,而无需真正了解或关心容器内部的内容。但是基本概念很重要,因为它们广泛适用于可用性、故障排除和安全性。

您还需要熟悉编排和自动化领域最常用的工具。学习一些 Bash,开始使用 Git 并设计一些 Git 钩子,学习一些 Python,熟悉 YAML 和 Ansible,并尝试 Minikube、OKDOpenShift

编排和自动化都是重要的技能,既可以提高您的工作效率,又可以为您的团队带来价值。今天就投入其中,明天就能完成两倍的工作。

接下来阅读什么
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,并且经常同时工作。

4 条评论

有趣的文章。我们在生产环境中最常使用哪种容器化技术 - Docker、CRI-o 还是其他技术?

我没有关于这方面的真实数据,尽管我有一些关于目前哪种技术占主导地位的轶事证据。

但这仍然是一个不断发展的领域,因此长期答案可能仍在讨论中。

回复 作者 Vedanshu Nagar

这是一篇写得非常出色、内容全面的关于编排与自动化的指南。这篇博文精美地解释了这两种方法之间的细微差别,对我非常有帮助。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.