为什么基础设施即代码是现代DevOps不可或缺的一环

随着企业应用程序底层的基础设施日益复杂,完整的服务负责制和一致性部署成为亟待解决的两大难题。

译自 Why Infrastructure as Code Is Vital for Modern DevOps

支持现代企业应用的基础设施比以往任何时候都更加复杂。92%的组织已经采用了多云架构,随着预计90%的企业将在2027年前后运行容器化应用,基础设施组件数量将呈几何级增长。随着服务底层的基础设施日益复杂,完整的服务所有权和一致性部署成为两大需解决的挑战。

完整的服务负责制意味着开发团队要对所交付的软件和基础设施的运行与维护承担全部责任。如果没有完整的服务负责制,团队的日常工作流就容易出现混乱和错误,企业也会在故障修复和安全漏洞补丁方面陷入被动。

另一个问题是部署一致性。这意味着在错综复杂的基础设施上实现应用程序标准化会变得非常困难。随着基础设施变得越来越复杂,配置差异带来的风险也会越来越大,可能会导致不同环境之间出现错误或偏差。

为了解决服务负责制和一致性部署的挑战,现代DevOps团队已经转向了基础设施即代码(IaC)解决方案,例如 Terraform 和 Ansible。但 IaC 究竟如何解决这些挑战,它又如何能增强 DevOps 流水线的其他方面呢?

巩固与简化基础设施

简言之,IaC解决方案使团队能通过代码来管理和设置基础设施。一旦编写完成,IaC工具的代码就会定义、配置或保存相关基础设施组件的设置。这样,团队可以大大减少手动配置基础设施的工作量,不再需要通过物理接口、命令行或图形界面逐个配置基础设施。

此外,IaC为基础设施配置提供了一个统一的接入点。这样可以使设置和配置在不同的部署和组织之间实现标准化,有效解决了复杂基础设施一致性配置的问题。

IaC还使团队能定义和整合基础设施组,并指定负责这些组及其组件的团队成员。这不仅简化了复杂部署的重复操作,也通过记录负责相关基础设施交付的人员信息来促进完整的服务负责制,所有这些信息都记录在一个团队成员都可以访问的单一信息源中。

IaC在持续集成和交付中的应用

由于IaC能够解决服务所有权问题,DevOps团队已经大规模采纳了IaC。IaC通过抽象、简化和标准化部署,成为帮助团队实现持续集成和持续交付(CI/CD)的重要手段。

IaC之所以适合CI/CD实践,是因为它允许DevOps团队对应用和服务进行迭代优化,而不需要重新分配或重新配置底层基础设施。有了IaC,开发团队只需关注应用自身,而基础设施配置的责任在于各自的所有者这个独立工作流程。这对于复杂的基础设施例如Kubernetes集群尤其有用。

此外,团队可以轻松监控、提交和回滚IaC指令。与常规编码工作流类似,IaC代码可以快速迭代,以配合CI/CD环境中的创新速度动态重新配置基础设施。

将IaC代码视为任何其他工作流,意味着团队可以获得定期监控和事件响应的有价值见解。例如,如果基础设施组件出现故障,监控方案可以使用IaC数据自动将任务分配和标记给相关的利益相关者。在汇总洞察方面,IaC使团队可以定义和监控基础设施组件集合,以了解应用和系统性能的更广泛趋势。

IaC实现基础设施的构建、负责、运行与维护

IaC减轻了手动配置、定义和监控复杂企业应用基础设施的负担。特别是它消除了通过不一致部署和缺乏完整服务所有权导致的一些关键问题。

通过IaC,团队还可以利用内部云来检测和诊断问题,在事件发生时动员正确的团队,并自动化基础设施相关的许多其他工作流程。IaC不仅使复杂基础设施更易被企业使用和采纳,也使组织的基础设施比以往任何时候都更稳健、更安全。

但是,对于采用CI/CD的组织来说,IaC也极具价值。这就是为什么IaC已经成为大多数DevOps团队的必备组件。将物理基础设施、虚拟资源和云服务进行分组和标准化,意味着团队可以将基础设施视为一个抽象概念,从而更专注于构建新产品和服务。而作为实现完整服务所有权的关键技术,IaC可以保证最合适的团队成员随时准备好构建、负责、运行和维护基础设施。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注