本文来自微信公众号“开源云中文社区”。
Matt Stephenson在Starburst Data工作之前,曾在Square工作。在那里,他学到了一些关于使用遗留基础设施即代码(IaC)的惨痛教训。
Starburst的高级首席软件工程师Stephenson表示:“我们构建了一个完整的系统,用Terraform和Helm进行了大量编排,并与我们自己的一些后端服务进行了集成。”
“必须建立和维护这项服务的经历让我审视了这个行业的可用性。”他说,问题不在于Terraform本身,而是“执行Terraform的所有代码,管理Terraform本身的输入和输出的所有代码。”
遗留IaC可以给工程团队的生活带来许多挑战,包括:
——在定义配置时,遵循所需的约定和标准可能会变得更加复杂,而且复杂性会随着扩展而增加。
——因此,配置漂移很常见,并可能导致不合规和服务中断。(一般来说,错误配置是安全漏洞的主要原因。)
——必要的集成和功能并不总是适用于特定的用例。
——遗留IaC可能会带来重大的维护需求,而且很难招聘和留住具备这些技能的工程师。
Stephenson说:“许多遗留基础设施即代码产品都有自己的语言,有自己的环境,你必须成为其中的一名专家,才能有效地使用它们。或者你必须得到某种支持,才能使用其中一种。”
在Starburst Data,他负责公司Galaxy产品的架构,这是一个托管的数据湖分析平台。他的团队已经逐渐将遗留IaC换成了Pulumi,这是一款开源的IaC产品,允许用任何编程语言构建基础设施。
Stephenson将出席6月15日举行的PulumiUP虚拟用户会议,专门讨论“基础设施即代码”,如何实现更快的应用程序开发,以及用户如何应对遗留系统的挑战。
他说,在会议上,他将谈论Pulumi的自动化API。“这对我们来说是一个很大的驱动力,能够编排我们所有的Pulumi堆栈,而不必编写我们过去必须编写的整个服务。”
赋予整个团队权力
Stephenson说,Pulumi和遗留IaC解决方案的区别之一是,“它基于人们在大学里学习,或者在加入这个行业时学得很快的编程语言。”
Pulumi允许开发人员使用通用语言构建基础设施,包括任何Java语言(Java、Scala、Clojure、Groovy、Kotlin),.NET(C#、F#、PowerShell),Node.js(JavaScript、TypeScript),Go、Python甚至YAML。这有助于使供应基础设施成为工程团队中更多成员可以做的事情。
在使用Pulumi之前,Stephenson说:“大多数是更资深的工程师会参与设置所有的基础设施和代码环境。如今,我们有不同技能水平的人在其中工作。”
现在,他说,即使是所在组织中没有基础设施或现场可靠性工程背景的人,“当他们进行产品开发时,他们也可以进去做他们需要的改变。”
因此,Stephenson补充道,团队不太需要雇佣专门针对IaC的专家,更多的人有能力处理问题。
“如果发生涉及基础设施的事件,很多时候人们可以做出所需的更改,以执行持续交付流程并解决问题。”
寻求灵活性
华盛顿信托银行聘请的第一位DevOps工程师Dennis Sauvé也将在PulumiUP上发表演讲,讲述他的公司从完全的内部部署系统转变为在Microsoft Azure Cloud上运行的系统的经验,IaC主要由Pulumi提供,用TypeScript编写。
在该行聘请Sauvé之前,它决定启动云服务,以推进客户协作工具等创新,使华盛顿信托的关系经理能够直接与客户交谈。Sauvé表示,它已经确定Azure的通信服务将帮助更容易地构建该应用程序。但该行也希望未来可能构建的应用程序以及可能部署这些应用程序的云具有灵活性。
Sauvé说,Pulumi提供了他的团队所需要的灵活性和选择。“你可以选择云提供商。一旦有了云提供商,你就可以选择一种想要构建堆栈的语言,而他们支持它。”
“因此,我们可以放心,不仅可以改变编写基础设施即代码的语言,还可以改变云提供商。在考虑不同的提供商时,这是一个巨大的好处。”
节省时间和精力
Sauvé说,Pulumi给华盛顿信托银行带来的最大好处之一是,它能让团队节省时间和精力。他和开发团队一直在创建用于创建资源的最佳实践模板。
与开发人员和运维工程师之间可能存在的来回交流不同,“开发人员现在可以进入基础设施包,找到他们想要构建的资源,选择并设置它进行部署。这确实加快了开发和测试环境的速度。”
不仅如此,他补充道,Pulumi已经成为一个标准化工具,确保整个组织以同样的方式创建资源。
然而,他补充道,移动到云端和Pulumi,并非一帆风顺。值得注意的是,“从文件大小的角度来看,原生Typescript包只是一个庞大的包,对使用的资源有点浪费,但它在生产中有效。”
他指出,Pulumi将很快发布TypeScript包的下一代版本,该版本“应该非常精简,并解决一些性能问题”。
Stephenson承认,放弃遗留IaC一开始可能会造成一些干扰。但他说,从长远来看,它赋予了组织中更广泛的人群权力。