对于AWS云中的供应基础架构,我们目前正在使用从ansible角色调用的云形成模板,但是我们看到在增加基础架构的规模之后,该代码已在GitHub中变为非结构化或未模块化
Github的意大利面条没有适当的结构,可读性差,不易被新技术人员采摘
特别是对于供应基础架构,我看到维护用领域特定语言编写的代码(例如ansible,terraform,cloudformation等)对于在GitHub中长期维护代码不是一个好主意,因为为了实现完整的(完全)自动化,可以结合使用这些技术。
哲学是,aws sdk代码在GitHub中看起来更加结构化,因为它提供了很多抽象方法,隐藏了实现细节。
当然,供应代码与在该供应的基础架构上运行的功能代码同样重要。
我们相信,从Azure迁移之后,我们将坚持使用AWS云
针对编程语言的域特定语言
aws sdk方法可以解决此问题吗?我们更喜欢GoLang aws sdk,以便任何GoLang程序员都可以选择它。.
答案 0 :(得分:1)
如果我正确理解了您的问题,则表示由于大小增加,您的Cloud Formation代码变得难以管理,并且现在对使用AWS开发工具包定义它感兴趣,因此您可以使用软件最佳实践来保持代码更多可维护的。
与声明性语言相比,AWS SDK的不利之处在于,您现在要负责确保单击运行时,它不仅会创建新实例。例如。当我通过AWS开发工具包部署ec2机器时,下次运行该代码时,它将部署一台新的ec2机器。云形成维护了已部署内容的状态,因此更容易将增量更改部署到基础结构并还原更改。
我建议您检出的是新的AWS-CDK,它使您可以定义最终通过Cloud Formation运行的代码。它允许您编写OO风格的对象:
const vpc = new Vpc(this, 'vpc', {
cidr: '10.150.0.0/16',
natGateways: 2,
subnetConfiguration: [
{
name: 'Public',
subnetType: SubnetType.Public,
cidrMask: 20
},
{
name: 'Private',
subnetType: SubnetType.Private,
cidrMask: 22
},
{
name: 'Isolated',
subnetType: SubnetType.Isolated,
cidrMask: 22
}
]
});
暂时不支持Golang。