本文探讨了人工智能正在重塑IaC运营的一些重要领域,并讨论了未来可能会发生的情况。
在当今的技术领域中,人工智能(AI)几乎在每个领域都产生了深远的影响。基础设施即代码(IaC)的爱好者一直在探索人工智能如何推动IaC生态系统的下一场变革。
正如人们所看到的,人工智能在提升DevOps和平台能力方面发挥着重要作用。而且很明显的是,人工智能将成为未来IaC实践的核心。以下将探讨人工智能正在重塑IaC运营的一些重要领域,并讨论未来可能会发生的情况。
IaC的兴起极大地提高了基础设施的效率和开发人员的自助服务能力。然而,编写基础设施代码(无论是YAML、JSON还是HCL) 的复杂性日益增加,这带来了一些挑战。
尽管Pulumi和AWS CDK等工具取得了进步,开发人员可以使用通用编程语言编写IaC,但编写大量的IaC代码可能会让人不堪重负。这种障碍促使许多工程组织成立专门的DevOps和平台团队来掌握这一流程。
然而,随着时间的推移,这些团队的开发速度在部署过程中成为了瓶颈,推迟了基础设施配置和软件交付的速度。像GitHub Copilot这样的人工智能工具正在彻底改变开发人员编写和维护应用程序代码的方式。这些工具使用在大量数据集上训练的机器学习模型来提供智能代码建议和自动完成功能。
例如,在编写函数或方法时,Copilot可以预测下一行代码,对整个代码块提出建议,并即时纠正语法错误。这不仅加快了开发速度,而且通过实施最佳实践来帮助保持代码质量。
同样的原则也适用于IaC, 人工智能可以为Terraform、OpenTofu、CloudFormation和Pulumi等框架编写配置。例如,当使用OpenTofu定义AWS S3桶时,人工智能工具可以根据行业最佳实践建议存储桶策略、版本控制和生命周期规则的最佳配置。
同样,当将Pulumi与TypeScript一起使用时,人工智能可以推荐适当的资源配置,管理资源之间的依赖关系,并确保遵守组织标准。
经过大量IaC代码训练的人工智能模型可以识别出需要改进的领域,例如,将重复的代码重构为可重用的模块以提高效率和一致性。例如,如果跨项目经常设置配置相似的EC2实例,人工智能模型可以建议创建一个模块来封装设置,从而减少重复和潜在的错误。
人工智能还有助于在大规模环境中保持一致性和治理。通过基于行业最佳实践定义和执行策略,人工智能帮助组织确保合规性和安全性,特别是对于大型和复杂的基础设施而言。这减少了“重新发明轮子”的需要,并简化了基础设施管理。
与开发IaC代码相似,开发人员往往对为其编写的代码进行测试持抵触态度。然而,为了维护良好的IaC实践,将基础设施代码视为与软件代码同等重要,而测试是确保代码质量的关键因素。
最近的技术发展为人工智能在IaC测试中的角色铺平了道路,例如OpenTofu和Terraform(1.6版)中测试功能的引入。像CodiumAI、Tabnine和Parasoft这样的基于人工智能的测试工具已经在软件开发中展示了巨大的价值,这一趋势现在正在扩展到IaC领域。
人工智能助理可以通过自动生成新的和现有的IaC代码测试帮助开发人员。这减少了他们创建测试所需的时间和精力,从而能够在IaC工具中更快地实现测试框架。人工智能驱动的测试最终将简化流程,从而随着时间的推移提高IaC的质量。
此外,人工智能与集成开发环境(IDE)的集成使自动测试生成更容易实现。像Copilot和Tabnine这样的工具可以在开发人员喜欢的环境中无缝地工作,直接在工作流程中提供建议和改进。
高级IaC管理工具可以支持开发人员优化的功能,将资源直接导入IDE,简化开发和基础设施管理,而不需要额外的工具。
随着现代系统规模和复杂性的增长,基础设施的可观察性(尤其是在云计算环境中)变得越来越重要。一个值得注意的例子是GitLab由于过时的生产配置而导致的两小时停机,这凸显了需要强大的IaC实践和实时监控来防止配置漂移的必要性。
在多云运营中,大规模管理云计算资产和资源是一项独特的挑战。人工智能可以提供云计算管理的可见性,并分析通过IaC、API或人工ClickOps(在可能的情况下应该迁移到IaC)管理基础设施的程度。人工智能还可以对运营进行分类,优化资源管理,并执行人工智能定义的与标记、合规性、安全性、访问控制和成本优化相关的策略。
人工智能在可观察性方面的作用超出了基础设施管理。通过分析Datadog、Logz等平台上大量日志数据的信号。人工智能可以识别模式和异常,帮助优化系统性能,排除问题并防止中断。这种能力对IaC特别有用,因为人工智能可以检测异常行为并做出响应,以确保基础设施保持安全和高效。
例如在平台上,人工智能已经用于对CloudTrail有效负载进行细致的分析,这有助于在大数据集中发现难以检测的模式。反过来,这能够迅速识别出异常和IaC覆盖漏洞,并报告潜在的风险和节省成本的机会,例如淘汰闲置资源。
图1 使用CloudTrail进行IaC覆盖和风险分析
人工智能不仅仅是一个流行语,还是一个强大的工具,增强了包括IaC在内的许多工程领域。而目前看到的技术进步只是开始。
展望未来,人工智能将在代码生成、自动化测试、异常检测、策略执行和云计算可观察性等领域发挥越来越重要的作用。通过将人工智能集成到IaC工作流程中,组织可以实现更高的效率、安全性和成本效益,为更先进和可扩展的云计算基础设施奠定基础。
IaC的未来不仅仅是编写更好的代码,还将利用人工智能来推动创新,促进下一波基础设施和云管理的发展。