每家公司都声称自己追求效率。

路线图中总是提到速度问题;领导层会议也会讨论如何缩短周期时间;季度目标更是强调要加快执行速度、更快地发布产品。

所有企业都希望团队能够更高效地开展工作。

然而,许多公司最终会做出一些实际上会拖慢整体进展的决定。它们更注重基础设施的灵活性,而非产品的交付效率。

起初,这种做法听起来似乎很合理。团队需要控制权,工程师希望有更多的选择,平台架构师则希望构建出能够应对各种未来挑战的系统。

于是,生产团队开始围绕自身需求来构建基础设施生态系统。

部署流程从零开始设计,云资源也被进行了大量定制,内部平台也增加了无数设置选项和配置层。新项目的规划往往从技术架构讨论开始,而非从分析客户需求入手。

几个月后,软件的交付速度却变慢了。

产品团队无法按时完成任务,发布时间被推迟了好几个季度,客户反馈也延迟了收到,而竞争对手却仍在持续推出新产品。

隐藏在这一切背后的权衡其实很简单:团队选择了灵活性,却放弃了实际的产品交付。

超过某个临界点后,这种灵活性反而会成为企业发展中最具破坏性的因素之一。

我们将探讨以下内容:

更多灵活性会带来更高效的生产系统吗?

工程团队确实喜欢有更多的选择余地,这种逻辑听起来也很有说服力。

如果基础设施完全可以进行定制,团队就能适应未来的各种需求;如果部署系统是内部开发的,那么所有使用场景都能得到支持;如果每一层系统都是可配置的,工程师就可以针对特定情况来进行优化。

这种做法看似体现了负责任的工程态度,但实际上往往会导致高昂的运营成本。

大多数开发团队都会高估自己真正需要多频繁地调整基础设施架构以适应变化。

结果导致实际操作过程变得可预测,缺乏灵活性。

当一个产品团队启动新的项目时,他们不会先发布早期版本并收集客户反馈,而是开始进行各种讨论:

  • Kubernetes集群应该是按团队来组织还是按服务来划分?

  • CI/CD流程应该使用GitHub Actions还是Jenkins?

  • 秘密管理工具应该选择Vault还是云原生解决方案?

  • 监控系统应该使用Prometheus还是Datadog?

  • 部署策略应该是采用金丝雀发布模式、蓝绿部署,还是其他自定义方案?

几周的时间就这样过去了,但没有任何客户看到实际成果,也没有任何假设得到验证,更没有任何学习发生。

与此同时,产品经理在等待,管理层在等待,客户也在等待。

即使有像Claude这样的自动化编码工具来帮助生成代码、搭建系统结构并加快实施速度,但当各种决策与基础设施配置及部署方案发生冲突时,团队的工作效率仍然会受到影响。

问题并不在于技术本身,而在于人们过于追求未来的灵活性,而忽视了当前的业务需求。

只有当客户真正使用软件时,它才能创造价值;否则,一切工作都只是为了提供支持而已。

基础设施的所有权逐渐演变成另一项独立的业务

传统的部署模式会无意中形成一种危险的模式:企业原本以为自己在开发产品,但实际上却在逐步建立一套复杂的基础设施管理体系。

开发团队首先配置服务器,然后搭建网络架构,接着设置身份认证与访问控制系统,再构建部署管道,随后添加监控功能,处理秘密管理问题,实现自动扩展机制,最后还要建立回滚系统。

单独来看,每一个决策似乎都合情合理,但总体而言,这些决策最终会形成一套需要长期维护的运营体系。

而正是这种“所有权”导致了隐藏的成本的出现:

因为基础设施的建设并不会在产品发布后结束,反而会持续发展。部署管道需要定期维护,安全策略会不断变化,监控系统也需要调整优化,平台依赖关系也可能会出问题,内部工具也需要升级。

开发团队逐渐花费更多的时间来维护这些系统,而不是去改进软件本身。

这种状况最终会导致一种奇怪的结果:那些高薪工程师反而变成了基础设施的维护者,而非创造客户价值的建设者。

没有顾客会因为部署管道设计得多么精巧而购买某个产品,也没有顾客会因为身份认证与访问控制策略多么完善而选择升级服务,更没有任何竞争对手会因为Kubernetes配置文件看起来多么专业而失去市场份额。

<客户关心的是那些能够解决实际问题的产品;只有当基础设施阻碍了产品的交付速度时,它才会变得重要起来。

而拥有基础设施本身,就为这种发展的实现创造了无数机会。

真正的代价在于客户学习过程的延迟

基础设施复杂性所带来的最大成本,并非工程开发工作本身,而是客户学习速度的减缓。

软件企业正是通过反馈循环来实现发展的。团队发布新产品,客户给出反馈,团队据此进行改进,产品也因此得到优化。

这个循环运行得越快,企业的竞争力就越强。

然而基础设施的建设会打断这一循环。每花费一个月来构建部署系统,客户就无法使用到新功能;每花费一个季度来设计内部平台,客户反馈就会延迟;每一次关于架构的讨论,都会使市场反馈的信息变得滞后。

正是在这里,许多组织误解了“发展速度”的真正含义。

它们只关注开发进度指标、完成的任务数量以及工程产出的数量。

但企业的发展速度并非由内部活动来衡量,而是由想法转化为实际产品所需的時間来决定的。

拥有基础设施会极大地减缓这一过程,而学习速度的减慢,最终会导致企业的发展速度变慢。

PaaS改变了优化的方向

正是在这里,平台即服务这一模式改变了原有的发展模式。

PaaS迫使企业将优化重点放在产品的快速发布上,而非基础设施的建设上。这种转变的重要性,远超大多数团队的认识。

开发团队不再需要花费数周时间来设计部署架构,只需连接相关资源并进行部署即可;也不需要手动构建数据传输管道,因为这些管道早已存在;更不需要专门设计扩展系统,因为系统的可扩展性已经成为了基础设施的固有特性。

基础设施不再是需要反复建设的基础框架,而变成了一种可以随时使用的工具。

这听起来很简单,实际上也确实应该如此。部署过程本应是一件简单的事情,但现实中往往会出现复杂的情况,而这通常意味着存在不必要的复杂性,而非不可避免的复杂性。

PaaS提供商消除了许多决策环节。虽然很多工程师认为这是一种妥协,但实际上恰恰相反——这些限制反而促进了效率的提升。

约束会带来速度,速度会促进学习,而学习则会带来更好的产品。

最优秀的开发团队会减少决策环节

人们普遍认为,顶尖的工程团队会尽可能提供多种选择,但事实往往恰恰相反。

表现优异的开发团队会积极地减少不必要的决策,推行标准化操作,设置默认选项,从而消除那些多余的选项。

因为每一个决策都会带来一定的成本——认知负担会增加,协调工作会更加繁琐,会议次数也会增多,各种依赖关系也会变得更加复杂。最终,为了解决这些问题而开发的辅助软件,其规模往往会超过原本需要优化的核心软件本身。

PaaS系统遵循不同的理念。它们有意减少可选项的数量。

这种限制有助于集中精力,而专注则能提升产品开发的速度,最终带来商业上的成果。

这个逻辑链条非常清晰。然而许多组织却因为过早地掌握基础设施的掌控权而破坏了这一流程。

定制基础设施通常能解决那些尚未出现的问题

在软件企业中,最糟糕的习惯之一就是提前去解决未来可能才会出现的问题。

团队们会在规模真正形成之前就着手进行相关建设;在国际用户出现之前就设计多区域架构;在部署过程中遇到问题之前就构建相应的部署框架。

这些做法往往出于好意——工程师们希望避免将来需要重新开发。但具有讽刺意味的是,过早地追求灵活性反而会导致业务发展速度放缓。

一个只有二十名工程师的初创企业,不应该像拥有万名工程师的大公司那样运作。然而许多实际运营中的团队却模仿那些大型科技企业的基础设施架构。

被忽视的一点是:实际情况千差万别。大型科技公司有专门的团队来维护内部系统,还有数千名工程师专门负责基础设施建设相关工作;而大多数企业并没有这样的资源。

如果不考虑组织规模的因素,仅仅复制技术架构只会导致巨大的效率低下。

PaaS正是为防止这种行为而存在的。它能够确保团队在成为成功的产品的同时,不会过早地转变为专注于基础设施建设的公司。

真正的竞争优势在于更快的产品交付速度

企业失败的原因往往不是因为基础设施的灵活性不足,而是因为竞争对手的学习能力更强。

速度才是关键——不是冲刺测试中的速度,也不是通过故事点来衡量的速度,而是真正能够快速将想法转化为实际产品的能力,是能够迅速验证各种假设的能力,是能够持续学习的能力。

产品交付的过程本身就是学习的过程,学习会带来改进,而改进则能创造竞争优势。

复杂的基础设施会干扰这一良性循环,而PaaS正好有助于消除这种干扰。

因此,部署相关的决策绝不能仅仅被视为技术层面的问题,它们本质上是商业决策。

对基础设施的掌控权会直接影响企业的发展速度,而发展速度又会影响市场结果。

争论的核心不在于服务器本身,而在于谁能在竞争中更快地行动。

在某些情况下,PaaS可能并不是最佳选择

在某些特定情况下,PaaS反而会成为限制因素。

那些对基础设施有高度专业化需求的企业,可能需要对网络配置、安全措施、硬件优化或部署流程进行直接控制。

还有一些行业由于受到监管要求的影响,会形成非常特定的基础设施需求。

那些拥有成熟平台工程团队的大型企业,也可能有理由投资定制化的基础设施建设。

在某些情况下,只有当规模达到非常庞大的程度时,平台建设的成本才会变得真正具有重要意义。

这样的情况确实存在。但许多公司在这些情况尚未真正发生之前,就将其作为投资基础设施的依据。它们为那些可能永远都不会出现的基础设施问题做准备,而与此同时,却仍在努力完成日常的产品发布工作。

这种做法会带来不必要的麻烦和障碍。

避免无意中建立基础设施业务体系

工程文化往往推崇灵活性。

灵活性听起来很高明,似乎能够确保系统具备未来的适应性,也符合良好的系统设计理念。

然而,灵活性也需要付出代价。每增加一个选项,就会带来更多的复杂性;每多做一个决策,都会使进展变慢;每增加一层架构,都会增加后续的维护工作量。

开发团队应该问一个更简单的问题:这样做能否帮助我们更快地推出面向客户的软件产品?如果答案是否定的,那么这种做法就值得重新审视。

太多企业会无意中建立起那些为未来假想的需求而设计的基础设施体系。

而与此同时,竞争对手们则会迅速推出产品,从用户反馈中学习经验,并不断取得进步。

对于许多开发团队来说,选择PaaS平台就是证明这一点的最有效方式之一。

希望您喜欢这篇文章。您可以通过在LinkedIn上与我联系

Comments are closed.