首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基础设施即代码:从命令式到声明式再回到命令式

基础设施即代码:从命令式到声明式再回到命令式

作者头像
云云众生s
发布于 2025-02-11 06:56:38
发布于 2025-02-11 06:56:38
1850
举报
文章被收录于专栏:云云众生s云云众生s

向混合 IaC 模型转变是由开发者体验、效率以及对可扩展云原生解决方案的需求所驱动的。

译自 Infrastructure as Code: From Imperative to Declarative and Back Again,作者 Arel Rabinowitz。

基础设施即代码(IaC)这些年来经历了令人着迷的转变。基础设施管理的演变是一个不断迭代的故事,它受到扩展系统、速度和安全指标(如 DORA)以及开发者生产力需求的影响。

从命令式方法(管理员编写详细的脚本来配置和设置基础设施)开始,行业转向声明式 IaC,这是由对可扩展性、可重复性和减少人为错误的需求所驱动的。Terraform 等声明式工具使得定义基础设施应该是什么样子,而不是指定如何创建它成为可能。这降低了复杂性并提高了可靠性。

在 2025 年,我们看到一种微妙但有意义的回归到命令式方法——尽管带有一些变化。让我们探讨一下行业如何在命令式和声明式方法之间转变,并融合到今天的混合模型。

早期:命令式配置管理

在 2000 年代初期,Chef 和 Puppet 等工具率先实现了基础设施配置自动化。Paul Hammond 和 John Allspaw 在 O'Reilly 的 Velocity 大会上发表了具有影响力的演讲 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr,展示了现代工具如何改变工程实践。当时,每天实现 10+ 次部署似乎是科幻小说。

ChefPuppet 是早期最流行的配置管理平台,它们成为这种转变的支柱,引入了一种配置系统的新方法。然而,它们在命令式范例中运行,用户明确地概述了实现所需配置的步骤。

例如,安装软件需要指定每个命令,定义条件,并仔细控制操作顺序。

虽然功能强大,但命令式方法在可扩展性和维护方面存在不足。它们对这种范例的依赖使得脚本特定于环境且脆弱,需要大量的人工工作来适应不断发展的基础设施需求。

这导致了以下几个限制:

  • 复杂性增加: 随着基础设施的扩展,脚本变得笨拙。
  • 容易出错: 小错误经常导致不一致,尤其是在不同环境中。
  • 重复逻辑(不 DRY – 不要重复自己): 脚本中重复的代码造成了巨大的维护负担。

转向混合声明式配置

随着行业认识到纯粹命令式方法的缺点,Ansible 等工具应运而生,作为一种过渡解决方案,融合了命令式和声明式范例。毫不奇怪,Red Hat 在 Ansible 获得发展势头后迅速收购了它。凭借其基于 YAML 的 playbook,Ansible 允许用户定义他们的基础设施,而无需指定实现它的确切步骤。虽然在底层仍然按顺序执行任务,但 Ansible 接受了描述结果而非过程的声明式理念。

Ansible 的成功表明了对基础设施管理中更多抽象的需求,为完全声明式工具铺平了道路。

声明式革命和 IaC 的突破

这种转变随着 TerraformAWS CloudFormation 等工具的出现而到来,它们采用了完全声明式模型。用户不再关注过程步骤,而是在配置文件中定义了他们期望的基础设施状态。

这些工具将这种状态与现实进行协调,自动执行实现结果所需的行动。Terraform 引入了状态文件来跟踪资源,从而实现增量更新和可扩展性,而 CloudFormation 利用 JSON 或 YAML 模板以声明方式管理 AWS 资源。两者都为命令式模型带来的挑战提供了独特的解决方案。

这种范式转变解决了命令式方法中固有的许多问题:

  • 可扩展性: 声明式 IaC 可以在不同环境中轻松扩展。
  • 一致性: 状态跟踪确保了部署的统一性。
  • 效率: 团队可以管理基础设施,而无需重复过程逻辑。

命令式复兴(某种程度上)

如今,像 Terraform CDK (TFCDK) 和 Pulumi 这样的工具已成为工程师的热门选择。这些工具允许开发人员使用熟悉的 编程语言(如 PythonTypeScript 或 Go)编写 IaC。乍一看,这似乎是命令式 IaC 的回归。然而,在底层,它们仍然生成声明式配置(例如 Terraform 计划或 CloudFormation 模板),这些配置定义了基础设施的期望状态。

为什么命令式风格的接口会再次兴起?

答案在于提高开发者体验 (DX)、实现自助服务和增强可访问性这一更广泛的趋势。与我们在平台工程等领域看到的转变非常相似,这些工具旨在简化工作流程并使开发人员能够更有效地工作。

为什么是现在?

当前的格局代表了一种哲学的融合。虽然 IaC 工具在管理状态和资源方面仍然是根本上声明式的,但它们越来越多地结合类似命令式的接口来增强可用性。

转向命令式风格的接口并不是倒退。相反,它突显了一个更广泛的运动,即优先考虑开发人员的可访问性和生产力,与对简化工作流程和自助服务能力的强调相一致。

  • 开发者熟悉度: 许多开发人员更熟悉通用编程语言,而不是 YAML 或特定于领域的配置语言。使用熟悉的代码消除了陡峭的学习曲线。
  • 代码重用: 开发人员可以将现有的应用程序逻辑合并到他们的 IaC 配置中。例如,描述应用程序代理行为的代码可以重用于定义基础设施设置。
  • 生产力提升: 像 TFCDK 和 Pulumi 这样的工具使 IaC 更容易上手,从而实现了基础设施管理的民主化。开发人员无需切换上下文或学习全新的语言即可定义基础设施。
  • 幕后的声明式能力: 虽然开发人员以命令式方式编写配置,但底层操作仍然是声明式的。这确保了可扩展性、一致性和状态管理优势的保留。

即使在 CI/CD 等相邻领域,我们也看到了这种融合。像 Dagger 和 Buildkite 这样的工具让开发人员可以使用熟悉的编程语言来定义工作流程,从而创建更易于访问的体验,同时在底层保持声明式输出。

2024/5 年的完整循环

在许多方面,我们已经完成了一个完整的循环——但采用了熟悉的现代概念。推动更友好的开发者界面并不是要重新发明 IaC,而是要提高其可访问性和可用性。即使在收购了 Red Hat(以及扩展的 Ansible)之后,IBM 现在也准备收购 HashiCorp,这突显了 IaC 格局的发展程度。

声明式 IaC 仍然是核心,但较新的工具提供了类似命令式的接口,这些接口更好地与开发人员的工作流程保持一致,并强调灵活性、生产力和协作。这些创新降低了复杂性,支持协作可扩展性,并改进了基础设施管理。它们反映了 DevOps云原生开发 的趋势。

接下来是什么以及 IaC 的未来

随着命令式和声明式 IaC 之间的界限变得模糊,混合工具应运而生,结合了两者的优点。改进的状态管理、与应用程序逻辑的更紧密集成以及增强的多云支持正在 推动 IaC 的未来朝着简单性和生产力发展。不同的 DevOps 平台(如 env0)正在帮助团队采用这些混合方法,以更少的投入获得更多成果。

这些模型提供了命令式风格编码的灵活性,同时保留了声明式 IaC 的可扩展性和一致性。目标不是选择一种范例而不是另一种范例,而是将它们的优势结合起来以满足不断变化的需求。随着工具的发展,平衡新旧方法仍将是 IaC 创新的核心。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基础设施即代码:IaC简介
IaC:自动化您的IT,消除错误并更快扩展。学习Terraform和Ansible。拥抱当今基础设施的未来!
云云众生s
2025/01/11
3410
基础设施即代码的利与弊
基础设施即代码虽然解决了自动化、一致性和可扩展性等传统挑战,却也引入了新的复杂性问题。
云云众生s
2024/03/28
1610
数千行IaC代码后学到的5个技巧
我 10 年的基础设施管理经验告诉我,可以通过以下策略来优化云基础设施的效率和安全性。
云云众生s
2024/08/27
3160
基础设施即代码终极指南
随着 IaC 的兴起,DevOps 中对于与机器直接通信的需求日益增长,这使得开发人员和运维人员能够使用共享语言来实现和管理基础设施。
云云众生s
2024/03/28
2340
基础设施即代码终极指南
基础设施代码化(IaC)的自动化配置与编排
云上运维,那就是和云上资源和产品打交道,无疑会涉及到一系列的资源部署。比如简单地使用一台云服务器,就需要运维人员依次创建 VPC、VSwitch、安全组和云服务器实例,如果想创建一个集群,那还要进一步创建负载均衡、数据库和多个云服务器实例。
用户8639654
2021/09/09
2.3K0
DevOps 简史:基础设施即代码的根源
翻译自 A Brief DevOps History: The Roots of Infrastructure as Code 。译者不知受到什么启发,几年前编写过符合 IaC 风格的 WebLogic 和 WebSphere 自动化脚本库:https://github.com/rocksun/ucmd 。
云云众生s
2024/03/27
1850
DevOps 简史:基础设施即代码的根源
Nitric 和基础设施自动化在平台工程中的崛起
在一个充斥着低代码的世界中,基础设施自动化的“少代码”目标在平台工程领域变得更加流行。
云云众生s
2024/03/27
1540
Nitric 和基础设施自动化在平台工程中的崛起
DevOps 基础架构即代码:IaC 实施指南
随着 IaC 在全球组织中的广泛使用,对这项技术的好奇心与日俱增。本文是一本终极手册,您需要了解 DevOps 基础架构即代码的含义、其业务优势、用例、挑战、最佳实践和顶级工具,以使您的团队的实施更加简化。
DevOps云学堂
2022/10/04
1.7K0
DevOps 基础架构即代码:IaC 实施指南
AIOps系列 | 基础设施即代码
讲 AIOps 的时候为什么要讲 基础设施即代码(Infrastructure as Code,简称IaC) 呢?
没有故事的陈师傅
2025/07/04
1510
AIOps系列 | 基础设施即代码
探索基础设施即代码(IaC):Terraform 与 CloudFormation 的应用
在现代运维和开发的世界里,基础设施即代码(IaC)已经成为一个不可或缺的概念。IaC 让我们可以通过编写代码来管理和配置基础设施,而不是手动操作。本文将详细介绍常用的 IaC 工具——Terraform 和 CloudFormation,以及它们的应用场景和基本用法。
Echo_Wish
2024/10/28
7790
探索基础设施即代码(IaC):Terraform 与 CloudFormation 的应用
构建内部开发者平台:四大支柱
基于这些原则设计的 IDP 简化了平台团队的操作,并使开发人员能够更快、更安全地移动。
云云众生s
2024/10/09
2000
基础设施即代码:只是漂移管理还不够
作者 | Roxana Ciobanu 译者 | 平川 策划 | 丁晓昀 什么是配置漂移? 随着公司的发展,软件生产和交付系统往往会变得越来越复杂。随着而来也会发生配置上的经常变更。 在最理想的情况下,变更会以良好的方式进行全面跟踪。但是,我们的生产环境并不完美,比如其中的许多修改都没有记录。如果是无关紧要的修改,那么对系统的影响会很小。如果这些修改导致系统变得不稳定,那么就会出现所谓的“配置漂移”。 当新建并合并分支,以及将其他多个变更提交到主分支时产生某种冲突时,就会出现漂移。在小型团队中
深度学习与Python
2023/03/29
6320
基础设施即代码:只是漂移管理还不够
Cloudformation与其背后的“基础设施即代码”
熟悉AWS的肯定不会对Cloudformation感到陌生,AWS官方对Cloudformation的定义如下:
极客人
2018/12/14
2.3K0
基础设施即代码(IaC):自动化基础设施管理的未来
随着云计算和大规模分布式系统的迅速发展,手动管理和配置基础设施的传统方式已逐渐跟不上快速迭代的步伐。于是,基础设施即代码(Infrastructure as Code,IaC)作为一种创新实践,成为现代运维管理的基础。IaC不仅提高了基础设施的配置速度,还提升了系统的一致性和可重复性。本文将深入讲解IaC的基本概念、核心优势和实现方法,并通过实例展示其在实际工作中的应用。
Echo_Wish
2024/10/27
8950
基础设施即代码(IaC):自动化基础设施管理的未来
2025年基础设施即代码的成熟状态
多云环境激增,IaC采用率虽高但覆盖不足!Terraform地位受OpenTofu、Pulumi挑战。安全与治理仍是重点,DevOps流水线自动化待加强。2025年IaC报告聚焦AI在基础设施自动化中的作用,揭示IaC执行新挑战与自动化流水线变革。
云云众生s
2025/03/15
1330
2025年基础设施即代码的成熟状态
2024年的基础设施即代码:为什么它仍然如此糟糕
工具碎片化,集成困难,配置噩梦:IaC 工具的用户们忍无可忍了。基础设施即代码的兴起能否带来帮助?
云云众生s
2024/12/28
1660
什么是基础设施即代码扫描?
如果支配你的 IaC 工作流程的代码是不安全的,IaC 很快就会成为安全风险的来源。使用 IaC 扫描仪可以减轻这种危险。
云云众生s
2024/03/28
3770
弥合基础设施即代码和GitOps的鸿沟
如何将Terraform、Crossplane和Atlantis巧妙地组合使用,发挥每项技术的优势,同时保留实施严格日常管理的灵活性。
云云众生s
2024/03/28
2010
弥合基础设施即代码和GitOps的鸿沟
基础设施即代码、GitOps将带来哪些改变?
随着云计算的发展,越来越多的企业都开始了迁移上云。从传统的物理服务器或机房迁移到云端虚机或云数据中心。将通过云供应商提供的控制台管理计算、网络、存储等资源。
DevOps云学堂
2022/04/06
3910
基础设施即代码、GitOps将带来哪些改变?
基础设施即代码:实现现代化以加快开发速度
翻译自 Infrastructure as Code: Modernizing for Faster Development 。
云云众生s
2024/03/27
1510
推荐阅读
相关推荐
基础设施即代码:IaC简介
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档