Pulumi的代码优先革命:编程语言如何重新定义基础设施即代码

GitHub April 2026
⭐ 25047📈 +117
来源:GitHub归档:April 2026
Pulumi正在从根本上挑战以声明式YAML为中心的基础设施即代码现状。通过允许工程师使用通用编程语言,它有望弥合开发与运维之间的鸿沟,但也引入了新的复杂性和不断变化的竞争格局。本文深度剖析Pulumi的范式究竟是云基础设施的未来,还是一个小众工具。

Pulumi代表了基础设施即代码领域的范式转变,超越了领域特定语言和声明式模板。该公司由Eric Rudder、Joe Duffy和Luke Hoban于2017年创立,其核心主张简单而激进:使用开发者已经熟悉的编程语言——TypeScript、Python、Go、C#和Java——来定义、部署和管理云基础设施。这将基础设施从静态配置转变为动态、可测试且可复用的软件。

该平台的重要性在于其将基础设施视为软件工程问题的能力。它为超过100家云提供商(包括AWS、Azure、Google Cloud和Kubernetes)提供了统一的编程模型。Pulumi Engine是一个有状态编排器,它解释程序代码,管理资源生命周期,并协调与云提供商的交互。这种方法使团队能够应用软件工程最佳实践,如代码重用、单元测试和类型安全,从而显著提高生产力和可靠性。

然而,这种转变并非没有权衡。采用通用编程语言引入了新的复杂性,包括依赖管理、构建工具和潜在的更陡峭的学习曲线。此外,Pulumi必须在一个由HashiCorp的Terraform等成熟工具主导的市场中竞争,同时还要应对AWS Cloud Development Kit等特定于云平台的替代方案的崛起。

Pulumi的成功可能取决于其能否在提供开发者友好体验的同时,保持与多云环境的强大集成,并解决企业级需求,如治理、安全性和协作。其Pulumi AI和Pulumi ESC等较新功能表明,该公司正寻求超越纯粹的资源调配,扩展到AI辅助开发和机密管理等相邻领域。

技术深度解析

Pulumi的架构是编译技术、状态管理引擎和多语言运行时支持的复杂融合。其核心是Pulumi Engine,用Go编写,负责资源生命周期管理。该引擎与语言宿主交互——这是为每种支持的语言(例如,用于TypeScript/JavaScript的Node.js、Python解释器、Go二进制文件)运行的独立进程。

当用户运行`pulumi up`时,会发生以下情况:
1. 程序执行:语言宿主执行用户的程序(例如`index.ts`)。程序不是直接进行API调用,而是通过调用Pulumi的SDK来构建一个资源图。这些SDK是轻量级客户端,负责序列化资源声明和依赖关系。
2. 图序列化:语言宿主通过gRPC将这个期望的资源图发送给Pulumi Engine。
3. 状态比较:引擎获取上一次已知状态(来自Pulumi Cloud、本地文件或S3存储桶),并在期望状态与当前状态之间执行差异比较
4. 计划生成与执行:引擎创建一个分步计划来创建、更新或删除资源,同时尊重依赖关系,然后通过资源提供程序(插件)调用相应云提供商的API来执行该计划。

其魔力在于Pulumi Schema代码生成。提供者资源(如`aws.ec2.Instance`)是在一个与提供者无关的接口定义语言中定义的。然后,Pulumi的构建系统为每种编程语言生成原生的、类型安全的SDK。这就是为什么用于TypeScript的AWS SDK感觉地道且具有完整的IntelliSense支持。

一个关键的技术差异化因素是组件资源,它允许工程师将可重用的基础设施模式封装和组合为类或函数,从而促进如DRY(不要重复自己)等软件工程最佳实践。

性能与基准考量:
虽然原始部署速度通常受限于云提供商的API,但Pulumi的开销来自程序执行和图序列化。对于大型基础设施,引擎在依赖关系允许的情况下执行并行操作的能力至关重要。社区驱动的`pulumi-aws-classic`和较新的`pulumi-aws`(基于AWS Cloud Control API)GitHub仓库显示了活跃的开发,后者旨在实现更快的资源覆盖和稳定性。

| IaC 工具 | 配置语言 | 状态管理 | 执行模型 | 关键技术限制 |
|---|---|---|---|---|
| Pulumi | 通用编程语言(TS、Py、Go等) | Pulumi Engine(SaaS/自托管) | 命令式/声明式混合 | 语言宿主启动与序列化开销 |
| Terraform | HashiCorp配置语言(HCL) | Terraform状态(文件/S3/后端) | 声明式 | 抽象与逻辑有限;HCL学习曲线 |
| AWS CDK | TypeScript、Python、Java等 | CloudFormation | 合成为CFN JSON | 锁定AWS;CFN堆栈限制与回滚行为 |
| Crossplane | YAML(Kubernetes自定义资源) | etcd(通过Kubernetes) | 声明式 | 陡峭的Kubernetes知识要求 |

数据要点: 该表揭示了一个核心权衡:Pulumi和AWS CDK通过通用编程语言提供了开发者熟悉度和强大功能,但引入了额外的抽象层。Terraform和Crossplane优先考虑声明式、供应商中立(或平台原生)的接口,代价是表达能力的降低。

主要参与者与案例研究

IaC竞争格局正在声明式/配置中心工具和命令式/代码中心工具之间分化。

HashiCorp的Terraform是无可争议的现有领导者,拥有其HCL语言和庞大的提供者生态系统。其优势在于可预测性和清晰的声明式配置审计跟踪。然而,复杂的逻辑需要变通方法,如模板化或外部工具。HashiCorp最近将许可证从MPL更改为BSL,带来了不确定性,促使一些用户探索替代方案,如Terraform的分支OpenTofu,Pulumi也可以导入其配置。

AWS Cloud Development Kit (CDK) 是Pulumi在AWS生态系统内最直接的竞争对手。它允许用编程语言定义基础设施,但会编译为CloudFormation JSON。这使其具有深度AWS集成,但也将其与CloudFormation的能力绑定,并限制了多云场景。AWS CDK的流行给Pulumi带来了巨大压力,迫使其在多云支持和提供者更新速度上进行差异化竞争。

Pulumi的战略定位: Pulumi通过保持云无关性并提供更直接、非转译的模型来竞争。其Pulumi AI(用于IaC的生成式AI)和Pulumi ESC(环境、机密和配置)服务试图超越纯粹的资源调配,扩展到AI辅助开发和机密管理等相邻领域。

知名采用者: SnowflakeMercedes-BenzKraken等公司已公开讨论使用Pulumi来管理其云基础设施。这些案例通常强调开发人员生产力的提高、跨团队协作的改善以及将基础设施代码作为一等公民进行测试的能力。例如,Snowflake利用Pulumi跨多个云提供商管理复杂的数据平台部署,而Mercedes-Benz则利用其创建可重用的基础设施组件,以加速其数字服务的开发。

未来展望与挑战

Pulumi的代码优先方法代表了IaC演进的合理步骤,特别是随着DevOps和平台工程实践的成熟。将基础设施视为软件的趋势可能会持续下去,从而有利于像Pulumi这样的工具。

然而,Pulumi面临几个关键挑战:
1. 生态系统成熟度:虽然其提供者覆盖范围很广,但某些资源或提供者的深度和稳定性可能仍落后于Terraform。
2. 企业采用障碍:大型组织可能对采用一种将基础设施逻辑嵌入通用编程语言的新模型持谨慎态度,因为这可能带来安全、治理和技能集方面的担忧。
3. 竞争压力:来自Terraform(及其分支)、AWS CDK以及Kubernetes原生工具(如Crossplane和Kustomize)的竞争非常激烈。
4. 复杂性管理:随着基础设施代码库的增长,管理依赖关系、确保代码质量和防止配置漂移变得更具挑战性。

Pulumi的未来成功可能取决于其能否:
- 持续快速扩展其提供者覆盖范围并提高质量。
- 提供强大的企业级功能,如策略即代码(通过Pulumi Policy)、细粒度访问控制和审计。
- 培育一个充满活力的社区和合作伙伴生态系统。
- 有效传达其价值主张,超越单纯的开发者体验,涵盖总拥有成本、可靠性和运营效率。

最终,Pulumi可能不会完全取代声明式工具,而是为那些优先考虑开发人员生产力、代码重用和软件工程严谨性的团队创造一个重要的利基市场。随着云基础设施变得越来越复杂和动态,像Pulumi这样将基础设施代码提升为真正软件工程学科的工具可能会变得越来越重要。

更多来自 GitHub

VoxCPM2重塑语音合成:无分词器架构与多语言语音设计的革命VoxCPM2代表了神经文本转语音合成领域的范式转移,从根本上挑战了主导该领域多年的传统技术流程。由OpenBMB计划开发的这一模型,其核心创新在于“无分词器”设计,绕过了传统系统对复杂文本归一化与字素-音素转换模块的依赖。取而代之的是,它Clasp的CDCL革命:冲突驱动学习如何重塑答案集编程Clasp是现代答案集编程的基石,由Martin Gebser、Torsten Schaub等研究人员领导的Potassco项目开发而成。与传统ASP求解器依赖更直接的搜索算法不同,Clasp的创新在于它从布尔可满足性求解中引入了冲突驱动子Clingo的逻辑编程革命:ASP如何成为AI复杂推理的秘密武器Clingo是数十年声明式编程与知识表示研究的成熟结晶。它主要由波茨坦大学开发,是Potassco(波茨坦答案集求解集合)项目的旗舰组件,将实例化器(gringo)与求解器(clasp)集成到一个高度优化的统一系统中。与命令式编程要求开发者查看来源专题页GitHub 已收录 752 篇文章

时间归档

April 20261392 篇已发布文章

延伸阅读

K3s-Ansible:驱动边缘 Kubernetes 的自动化引擎k3s-ansible 项目标志着两大 DevOps 范式的关键融合:轻量级 Kubernetes 发行版 K3s 与 Ansible 的基础设施即代码自动化。该工具正迅速成为在边缘、物联网网络以及需要速度、一致性和资源效率的开发环境中部署LinkedIn Luminol 库:时间序列异常检测领域的静默实力派LinkedIn 工程团队默默维护着一款强大而实用的时间序列异常检测工具:Luminol。这个开源库采用极简主义、算法为核心的设计理念,专注于识别指标中的异常值并关联跨数据集的异常。其简洁性及 LinkedIn 血统,使其成为基础监控系统中BuildKit架构革命:Docker新一代构建器如何重塑容器构建性能Docker的BuildKit是对容器镜像构建的根本性重构,它突破了传统Docker构建器的局限。通过引入支持并行执行与智能缓存的客户端-服务器架构,它不仅带来了显著的性能飞跃,更开启了无缝多平台构建等全新工作流。本文将深入解析BuildKEclipse Codewind 迁移完成:IDE 正式迈向云原生开发时代Eclipse Codewind 插件已正式迁移至 Eclipse Foundation 官方仓库,标志着这一工具从实验性项目转变为云原生开发的核心基础设施。此举不仅统一了开发入口,更预示着 IDE 正从传统代码编辑器演变为容器化应用生命周

常见问题

GitHub 热点“Pulumi's Code-First Revolution: How Programming Languages Are Redefining Infrastructure as Code”主要讲了什么?

Pulumi represents a paradigm shift in the Infrastructure as Code (IaC) landscape, moving beyond domain-specific languages and declarative templates. Founded in 2017 by Eric Rudder…

这个 GitHub 项目在“Pulumi vs Terraform performance benchmark 2024”上为什么会引发关注?

Pulumi's architecture is a sophisticated blend of compiler technology, a state management engine, and multi-language runtime support. At its heart is the Pulumi Engine, written in Go, which is responsible for resource li…

从“Is Pulumi good for enterprise multi-cloud strategy?”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 25047,近一日增长约为 117,这说明它在开源社区具有较强讨论度和扩散能力。