Infrastructure as Code(架构即代码)一直是衡量公有云是否支持良好运维能力的重要指标。作为云计算领先的AWS,通过服务CloudFormation来编排云环境中的基础设施资源。不过由于CloudFormation是使用YAML/JSON编写的声明式语言,不善于处理逻辑,编写繁琐且不利于调试排错,对于新上手的Devops工程师来说也有不小的学习曲线。三方开源的工具Terraform同样没有很好解决CloudFormation存在的这些问题。
AWS CDK的出现解决了目前CloudFormation存在的绝大部分问题,极大的提升基础设施编排代码的开发和维护效率。
AWS CDK是一种开源软件开发框架,开发者可以用自己使用熟悉的编程语言模拟和预置云应用程序资源,目前支持Typescript/Javascript、Python、Java和.Net。AWS CDK将云中资源抽象对象化,通过极其简单语法描述资源对象或设置其各种属性(重载CDK默认属性设置)来创建或更新云中资源。
例如,下面简单几行将创建一个新的名为Gameday
的VPC网络,并且跨了两个可用区分别创建了公有子网和私有子网。
this.vpc = new ec2.Vpc(this, 'Gameday', {
cidr: '10.0.0.0/16',
maxAzs: 2,
subnetConfiguration: [
{
cidrMask: 24,
name: 'Public',
subnetType: SubnetType.PUBLIC
},
{
cidrMask: 24,
name: 'Private',
subnetType: SubnetType.PRIVATE
}
]
});
我创建了两个示例项目使用了AWS CDK快速创建应用环境且部署应用,
总体的来说,AWS CDK是一个非常值得采用的云中资源编排和管理方式,高效的管理了AWS上的资源。
由于CDK还在相对早期,成熟度还不是那么完美。我在使用中发现下面一些值得注意的问题。