应用上云可以有多快? (2)

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

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

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

3.2      自动化的尝试

 

应用上云可以有多快?

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

 

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

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

 

4.1      云上的编排标杆

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

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

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

 

4.2      云上编排系统对比

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

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

功能

 

特性

 

AWS

 

ROS

 

AOS

 

说明

 

模板语法

 

入参/对象/输出

 

 

 

 

编排基本功能

 

查表参数

 

 

 

 

Mapping表语法,提前确认变量值

 

条件部署

 

 

 

O

 

Condition条件语法,灵活控制对象是否创建

 

编排对象

 

 

 

O

 

云服务的种类

 

内置函数

 

 

O

 

O

 

字符串拼接: Fn::Join
获取属性: Fn::GetAtt

 

内置变量

 

 

 

X

 

AWS中:AWS::Region
ROS中:ALIYUN::StackName

 

资源启动顺序

 

 

 

 

如 DependOn 依赖关系

 

头文件引用

 

O

 

X

 

 

长模板文件拆分为多模板文件管理

 

堆栈执行

 

资源策略

 

 

X

 

X

 

如堆栈销毁时,部分堆栈资源是否保留

 

Metadata定义

 

 

O

 

O

 

为对象填加自定义扩展属性

 

堆栈嵌套

 

 

X

 

 

堆栈包含另一个堆栈,大型协作场景(如解决方案)需要

 

帮助工具

 

 

X

 

X

 

如cfn-init/cfn-hup等,部署VM虚机应用的辅助工具

 

堆栈更新

 

 

O

 

O

 

ChangeSet,给出详尽变更提示

 

K8S应用

 

X

 

X

 

 

编排Kubernetes生态中的应用

 

设计器

 

元素拖拽

 

 

 

 

 

 

依赖连线

 

 

 

 

 

 

缩放定位

 

 

 

 

 

 

图文联动编辑

 

 

X

 

 

ROS不支持IDE纯文本编辑

 

图片预览

 

 

 

 

 

 

单元素编辑

 

 

 

 

 

 

元素属性联想

 

X

 

O

 

 

光标自动联想,给出元素可用属性字段提示

 

属性结构展示

 

X

 

 

 

复杂的属性定义,免记编辑

 

语法校验

 

 

X

 

 

 

 

函数快速插入

 

X

 

O

 

X

 

 

 

元素文档提示

 

O

 

O

 

 

 

 

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

4.3      编排系统的不足

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

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