人工生成Bau es selbst:自己构建
几十年来,标准软件一直是合理的选择:现成、经过验证、比任何自建都便宜。这笔账已经翻过来了。不是因为标准软件变差了,而是因为自建便宜了几个数量级。剩下的,是买标准软件时一直附带买下、以往只能接受的那些成本。
当初选用标准软件的理由已经不复存在
选择现成系统从来不是情书。它是一笔成本账:自建意味着开发者年数,而开发者年数是公司里最贵的。相比之下,任何许可证都便宜,任何免费框架都无可匹敌。
这一个量已经变了。以前要一个季度的,今天一个下午就行。支撑整套结构的那个论据因此没了。
剩下的是账的另一面,以前没人关心,因为别无选择:迁就别人的想法,等待别人的时间表,拖着别人的历史包袱,以及一块你自己没选过的攻击面。
这些条目一直都在账上。它们只是从来不是问题,因为替代方案更贵。现在不是了。
你买的不是一份软件,你买的是一棵家谱
79是这组数字里最重要的。一个团队选定一个包,也就接手了几十个它从未见过的人、对它从未读过的代码所做的决定。2025年9月,单单一份被接管的开发者访问权限就足以把恶意代码塞进十八个包,这些包加起来达到 每周26亿次下载 来。这些包没有一个是不靠谱的。它们只是到处都在。
不是更差。可被找到。
这里是大多数关于这个主题的文本走错方向的地方。它们声称自己动手更安全。 这不是真的。 你自己搭建的系统很有可能比一个有上千人多年来检查过的成熟项目有更多错误。
区别在别处,而且它比错误数量更重要: 单一栽培这个概念来自农业。一块只有单一品种的田地可以高效耕作,但适合这个品种的害虫会毁掉整块田。多样性效率低但能存活。 让攻击可重复使用。
自己的系统不在这些列表中的任何一个。它不是更安全,它是 不可搜索。想攻击它的人必须先理解它,那是针对单一目标的手工活,而不是对十万个目标的循环。这不改变你代码的质量,而是改变攻击的经济学,而这种经济学决定你是否会出现。
其中的第二部分是可见性本身。标准系统从外部就暴露了它是什么。路径、标头、文件名和错误页面都是指纹。 每个看你网站的人都知道你的蓝图,在他做第一次尝试之前。
标准在哪里继续明显占优
一个不知界限的论点是意识形态。所以这里是界限,它遵循一个唯一的问题: 在这个地方是否与外部世界发生交换?
在有东西离开或进入你的系统的地方,标准不仅允许,而且是强制的。自己的日期格式、自己的图像格式或自己的传输协议不会让你独立,而是让你无法被触及。
最难的情况是加密。 自己写密码学是一条已知的、有充分记录的自我伤害之路。 不是因为自己动手从根本上就不好,而是因为这里的错误是看不见的:一个坏掉的加密方法在测试中运行完美,却什么也保护不了。这同样适用于登录方法、时区、字符编码和支付处理。
所以规则不是“永远不要用现成的”。它是: 边缘用标准,核心用自己的。
分界线不在大小之间,而在交换与核心之间。
| 领域 | 选择 | 理由 |
|---|---|---|
| 协议、格式、字符集 | 标准 | 纯粹的交换面。自己的在这里意味着隔离。 |
| 加密、登录、支付 | 标准 | 错误保持不可见且无法测试。 |
| 数据库、运行时、网络服务器 | 标准 | 成熟、可替换、没有区分特征。 |
| 你的流程和规则 | 自己的 | 正是在这里你与众不同。外来系统会把你强行纳入它的设想。 |
| 你的界面和工具 | 自己的 | 适配现成系统的工作量如今已超过自己构建。 |
| 你的数据及其结构 | 自己的 | 否则外来模式会决定你究竟能提出哪些问题。 |
可传递的是知识,不是部件
“自己构建”的建议常被误解为“从零开始”。意思恰恰相反。
四十年软件构建带来了正确的认识:分离状态,尽早让错误可见,保持接口狭窄,不重复维护任何东西。 这些原则才是有价值的。 它们不花一分钱,不会产生依赖,也不会过时。
组件则不然,它并不自带这些原则。它带来的是 阐释 由外人做出的原则阐释,外加他们的妥协、他们的历史包袱和他们的路线图。
这也是现有系统仍然有价值的原因,只是方式和原先想的不同: 作为模板,而不是作为基础。 你阅读一个成熟项目是如何解决某个问题的,理解为什么,然后按适合自己情况的方式去建造。蓝图才是收获,不是那栋建筑。
采用标准系统是一种克隆过程。你得到的是为其他目的而生的东西的精确副本,而且每一份后续副本都一模一样。这很高效,也是一种停滞:副本做不到原件已经做不到的事。
自己建造意味着你的系统携带你自己的建造说明书。每一次调整都是一次小偏离,其中大多数毫无价值。但有些是有价值的,而且会留下来。
突变是进化的引擎。 一个只会复制的系统没有这个引擎。它只能通过等待别人改进某样东西来改进自己。仅此而已。
问题已经转了向
它不再是“我们负担得起自己建造吗?”,而是“我们负担得起让外来决策主宰我们的业务吗?”。
不要一次全做
路径不是大规模替换。它是今天最疼的那一块,然后下一块。
标准留在边缘
协议、加密、数据库。谁在这里自建,就是没理解要点。
试金石
对每个组件问:它是否决定你的业务如何运作?如果是,它就该属于你。如果它只是传输数据,就用标准的,并为此高兴。
- Sonatype, State of the Software Supply Chain 2026. 恶意包 2025,累计数量,各包目录占比。 sonatype.com
- Socket,CVE评估 2025。 漏洞报告的总量和WordPress生态系统的占比。 socket.dev
- Unit 42, Palo Alto Networks. npm目录的攻击面,2025年9月的级联。 unit42.paloaltonetworks.com
关于漏洞和利用时间的数字涉及2025年和2026年上半年。它们描述报告和观察到的事件,而不是现有漏洞的总数。


