云上自动化 vs 云上编排 (2)

(1)云服务的种类丰富多样,导致想要完成全面的自动化并非易事。一个典型的云平台会提供了ECS(虚机),EVS(硬盘),VPC(网络),RDS(数据库),ELB(负载均衡)等等一系列数都数不清的服务。有一个新的术语叫做 AWS fatigued,就是说AWS每年都会上线各种新服务&新特性,使得用户对新上线的服务&特性都感到了“AWS疲乏”,疲于使用。

(2)云服务间的创建存在复杂的依赖关系。最典型的例子就是,当创建EIP的时候,需绑定VM,而创建CM的时候,又需要先创建Subnet,建Subnet的前提就是需要先有VPC。层层的依赖,以及交叉依赖,都为开发者在企图自动化的道路设置了拦路虎,使得完成自动化的成本大大提高。根据前面提到的成本大于重复性收益的时候,自动化就会被放弃。

(3)云上资源的使用方式与传统方式不同。用户从资源的完全拥有者变成资源的使用者,后台权限的降低,导致你无法掌控一切,使得不那么方便的定位资源初始化失败原因(也许云平台本身的Bug导致)。有时候不得不联系云提供商求助了解失败原因。另外在使用流程上也会稍有改变,原来你的软件包一次拷贝就到了验证环境,而在云上,也许你需要中转跳板才能达到目的。这些都加剧了自动化的实施困难。

3.2 自动化的尝试

云上自动化 vs 云上编排

这里直接给一个图来总结了云上自动化的尝试历程,可以更加直观的了解这一领域的发展情况。不过在资源供给自动化和资源编排上其实边界也没有那么的明显,可以看到主要的差异是在灵活的语法上。在已有的自动化模板里面逐步增加一些灵活的语法,基本可以达到灵活编排的目的。

4 终极的自动化体系-编排

自动化是指一个任务流程中不需要人为的干预,而编排则是指多个任务流程可以提前规划,任务间可以互相配合,并行或者串行的执行。可以从最直接的定义上看到,只有做到任意的自动化流程控制才能称之为编排,是一个自动化的升级版。由此可见,如果某云厂商的一个编排系统,连一些基础的自动化流程都无法满足,那么它就不是一个好的编排系统。

4.1 云上的编排标杆

提到云上的编排系统,就不得不提老大哥AWS的Cloudformation了,基本上它已经是AWS云生态的一个标准,支撑应用市场以及服务目录完成任意IT软件和IT基础设施的初始化流程。

它的主要原理就是用户提供创建对象的各种属性,然后CFN协助完成对象的创建。例如初始化EC2,就是相当于创建VM虚拟机。那么用户就得提供属性:主机名,用什么镜像,硬盘多大,用什么网络,主机规格,安全组等。有了这些属性,CFN就可以确定如何调用EC2的API来创建VM了。

它之所以能力很强是因为它除了提供执行顺序的控制能力以外,在语法层面还提供了很多的内置函数,用户可以通过函数来引用变量,拼接变量值,控制执行细节。超丰富的编排对象,使得使用CFN基本可以满足任意AWS资源的自动化创建。

4.2 云上编排系统对比

这里分析三家典型的提供编排能力的云厂商能力分析表,不对之处也请联系纠正。(亚马逊CFN、阿里ROS、华为AOS)

√表示“强/做得好”,O表示“一般/待增强”,X表示“没有此特性”。

云上自动化 vs 云上编排

注:OpenStack的Heat编排能力类似AWS,但是无图形化设计器,这里就不列举了。

4.3 编排系统的不足

当前的编排系统都需要一个描述文件,来描述用户希望的执行流程。一般都会把这个描述文件称之为“模板”。通过模板来控制执行逻辑,这并不是一个问题,因为你能看到的业界编排系统都有自己的“模板”语法规则。问题在于,从无到有的写作一个新的模板,会比较困难,需要使用者学习一定的门槛,大家的第一感觉总是像在学习一门新的编程语言。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppjss.html