众所周知,阿里云提供了一百多款云产品,通过这些云产品的组合,可以架构非常丰富的应用。但是,如何能够用好这些云产品,并不是个简单的事情,特别的,当我们需要深入整合多款产品时,必然需要使用各云产品的OpenAPI。
比如,根据业务流量动态扩容,就需要使用OpenAPI来创建按量付费的ECS实例,再把这些ECS初始化、安装部署应用、挂在SLB等。这其中,就需要调用大量ECS、VPC、SLB的OpenAPI。
写代码调用OpenAPI听起来简单,但是其中涉及到的细节却非常复杂。比如,要能够熟练使用特定编程语言,要熟悉云产品的SDK,特别是,还要处理网络超时、一致性、回滚等等非常琐碎又高度影响应用可用性和稳定性的细节。
有没有办法让我们操作云资源时,既有OpenAPI一样的灵活性,又不需要关注调用细节呢?答案就是阿里云资源编排服务(ROS)。
ROS如何做到这一点呢?这依赖于ROS独特的模板能力。ROS的模板是个JSON格式的文件,我们只要在这个JSON中说明我们需要的资源即可,ROS服务会解析JSON文件,并自动为我们创建资源。所有繁琐的细节都被ROS服务隐藏了。我们来看一下,创建一个ECS实例到底有多简单:
{
"ROSTemplateFormatVersion": "2015-09-01",
"Resources": {
"my_ecs_instance": {
"Type": "ALIYUN::ECS::Instance",
"Properties": {
"ImageId": "centos_7_2_64_40G_base_20170222.vhd",
"InstanceType": "ecs.n1.medium",
"SecurityGroupId": "<my-sg-id>",
"VpcId": "<my-vpc-id>",
"VSwitchId": "my-vswitch-id",
"Password": "<my-login-password>",
"IoOptimized": "optimized",
"SystemDiskCategory": "cloud_ssd"
}
}
}
}
把这个模板通过ROS控制台提交后就能够自动创建一台ECS实例。
上面的过程看上去确实比写代码调用OpenAPI简单的多,可是仅此而已吗?其实ROS可以完成非常复杂的事情,模板中不仅可以定义云资源,也能够定义运资源的部署、配置细节。比如如何在ECS里安装软件,如何把多个ECS挂在到SLB,如何规划、创建非常复杂的VPC子网等等。比如下面这些用法:
当然还有很多很多,可以翻翻资源编排服务官方博客和ROS使用文档。