编排和自动化到底有什么区别?

2020-11-20 14:11:04
开源云中文社区
文章摘要: 自动化和编排的区别主要在于意图和工具。从技术上讲,自动化可以看作是编排的一个子集。编排意味着许多活动的部分,而自动化通常指的是单个任务或少量密切相关的任务。编排工作在一个更高的层次,并期望根据不断变化的条件和需求做出决策。

在很长一段时间内,似乎所有系统管理员都只关心自动化。不过,最近,口号已经从自动化变成了编排,这让许多困惑的管理员不禁要问:“它们到底有什么区别?”

自动化和编排的区别主要在于意图和工具。从技术上讲,自动化可以看作是编排的一个子集。编排意味着许多活动的部分,而自动化通常指的是单个任务或少量密切相关的任务。编排工作在一个更高的层次,并期望根据不断变化的条件和需求做出决策。

然而,不应该太局限于字面意思,因为自动化和编排这两个术语各有含义。两者的结果在功能上是相同的:事情发生时没有你的直接干预。但是你得到这些结果的方式,以及你用来实现这些结果的工具是不同的。

例如,自动化通常涉及脚本编写,通常使用Bash或Python或类似的语言,它通常建议将某个事件安排在某个精确的时间或某个特定事件上发生。然而,编排通常是从专门为一组任务而构建的应用程序开始的,这些任务可能是不规则的、按需发生的,或者是由任意数量的触发器事件引起的,而确切的结果可能取决于各种情况。

决策和IT编排

自动化意味着系统管理员发明了一个系统,使计算机做一些通常必须手动完成的事情。在自动化中,系统管理员已经决定了需要做什么,而计算机所要做的就是执行任务。

编排表示系统管理员已根据一组规则、参数和观察结果设置了一个系统来独立执行某些操作。在编排中,系统管理员知道所需的最终结果,但将其交给计算机来决定要做什么。

考虑一下Ansible和Bash。Bash是一种流行的shell和脚本语言,供系统管理员用来完成他们在给定工作日内所做的几乎所有事情。Bash的自动化很简单:你不需要在交互式会话中键入命令,而是将命令键入文本文档并将文件另存为shell脚本。Bash运行shell脚本,连续执行每个命令。有一些条件决策的空间,但通常,它并不比简单的if-then语句复杂(每个if-then语句都必须编码到脚本中)。

另一方面,Ansible使用playbooks,其中系统管理员描述了计算机所需的状态。它列出了在Ansible考虑完成工作之前必须满足的要求。当Ansible运行时,它根据计算机的当前状态与所需状态、基于计算机的操作系统等进行操作。playbooks不包含特定的命令,而是将这些决定留给Ansible自己决定。

当然,这说明了Ansible被称为自动化而不是编排工具(区别可能很微妙)。

编排与云

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

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

你可以自动完成这个任务。你可以写一个PHP或者Node.js脚本用于检测文件上载时间。该脚本将执行转换并发送警报或生成日志项以确认转换成功。你可以改进脚本,以允许用户与上载和转换过程交互。

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

自动化和编排

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

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

编排和自动化是重要的技能,既可以提高工作效率,也可以为团队带来好处。今天做,明天就能完成两倍的任务,还等什么呢。

信息化软件服务网 - 助力数字中国建设 | 责编:夏丽
文明上网,理性发言!请遵守新闻评论服务协议
评论