3104 字
约 10 分钟
20
S18-A10 · 造还是买:自研的成本结构与退出条件

自研了半年,发现买的那家已经做到 80% 的功能——这个场景的损失不在半年工时,而在你从未写下"什么情况下我会认输"。造与买的决策失败,多数不是算错了成本,而是只算了第一项成本。


1. 总拥有成本的五项,最常漏后三项

成本项 内容 是否常被计入
首次建设 设计、编码、联调、上线 几乎总是
持续维护 缺陷、依赖升级、安全补丁、兼容性 有时
人力占用 谁值班、谁接需求、占用谁的排期 很少
机会成本 这些人本可以做别的事 几乎没有
迁移与退出 换掉或换回时的数据迁移、双跑、回滚 从来没有

判据:把五项折成"人月"再比较。只看首次建设的结论几乎永远偏向自研,因为后四项在立项时是隐形的。买的报价是显性成本,自研的隐性成本要到第二年才开票。

2. "自研能省钱"的四个成立条件

条件 不满足时的后果 怎么验证
用量足够大 省下的单价抵不过固定投入 算临界点:自研固定成本 ÷ 单价差
需求足够特殊 通用产品稍作配置就够,自研是重复劳动 列出差异项,看是否超过功能的 20%
团队有对应能力 学习曲线吃掉全部收益,还留下运维债 看团队是否修过同类系统的线上故障
周期足够长 摊销期不够,退出时投入全沉没 预期使用年限 ≥ 3 年才谈摊销

四条同时成立才叫"能省钱"。缺一条,结论就从"省钱"变成"用别的东西换钱"——通常是换灵活性,这没问题,但要写清换的是什么。

3. 差异化的判据:这东西是不是你的竞争力

这个能力会不会被客户直接感知?
├─ 不会 → 买或开源(除非它是成本结构的关键项)
└─ 会 → 它是否构成竞争壁垒?
        ├─ 是 → 自研,且要能持续投入
        └─ 否 → 买,把人力放在壁垒上

多数团队在这一步失手,是因为把"我们有定制需求"当成"这是我们的竞争力"。定制需求是常态,竞争力是稀缺的。判断标准是:如果竞争对手用同样的现成方案,你的产品会失去什么? 答不上来,就不是壁垒。

4. 买的风险:四类,全部与时间有关

风险 早期信号 缓解手段
供应商锁定 数据导出要收费、专有格式、无批量 API 合同里写导出条款,定期做一次真实导出演练
定价变更 按量计费改为按席位、免费额度缩水 算清"涨价 3 倍"时的成本,写进预算假设
能力停更 路线图连续两个版本无实质更新 要路线图,并核对兑现率而不是听承诺
数据出境/合规 数据落在无法审计的区域 部署形态、审计日志、删除权能否落实

锁定不是签合同那天发生的,是数据长在对方系统里之后发生的。所以缓解手段只有一条是有效的:定期验证"能不能带着数据走",而不是在合同里读一遍条款。

5. 开源是第三选项,成本结构不同

项 商业产品 开源自建
首次成本 许可费 + 集成 集成 + 学习 + 部署
维护 供应商 你自己(升级、CVE、兼容)
故障责任 有 SLA 可追 全在你
灵活性 受产品边界限制 可改源码,但从此维护 fork
长期风险 涨价、停更 上游弃维护、breaking change

开源不是"免费",是"把许可费换成了运维工时与升级风险"。判断标准:团队里有没有一个人愿意为它值班。没有,开源方案的隐性成本会高于商业许可。

# 自建开源的隐性工作量,立项时就要写进排期
- 版本升级与 breaking change 迁移      # 每季度
- 安全公告跟踪与补丁                  # 持续
- 备份/恢复演练                       # 每季度
- 容量与性能基线                      # 每半年
- 与内部监控/告警/日志对接             # 一次性 + 维护

6. 评估矩阵怎么写才算数

维度 权重 打分依据 常见虚高
功能匹配度 30% 逐条对照需求清单,标"原生/配置/开发/不支持" 只看 demo
集成成本 25% 需要写多少适配代码、要不要改现有模型 低估数据模型冲突
运维负担 20% 新增几个组件、谁值班、备份怎么做 假设"托管就不用管"
合规与安全 15% 审计、加密、权限模型、数据位置 用"支持 SOC2"代替核实
路线图可信度 10% 过去 12 个月兑现了几个承诺 听销售讲未来
score = sum(w * s for w, s in zip(weights, scores))   # 先算,再看排序是否反直觉
# 反直觉时不要改权重去凑结论,回去查打分依据

矩阵的作用不是给出答案,是暴露分歧点。如果两列分数接近,说明决策应该由"哪个更容易退出"决定,而不是由功能多少决定。

7. POC 只验最不确定的那一项

概念验证最常见的浪费是"把 demo 又做了一遍"。POC 的唯一目标是降低最大的不确定性,所以先问:这份方案里,哪一条假设一旦不成立,整个决策就翻转?

不确定项 验证方式 通过标准(示例口径)
性能是否够 用真实数据量压目标接口 P99 在预算内,压测可复现
数据模型能否容纳现有业务 导入一批真实脏数据 无信息丢失,异常可解释
集成工作量 只做一条端到端链路 不改现有核心模型即可打通
迁移可行性 真跑一次双向导出 字段、附件、权限均可还原
# POC 的收尾动作:写一页结论,只回答"假设成立/不成立"
# 不写功能清单,不写部署手册——那些是中标之后的事

时限要有:POC 超过两周还在扩范围,通常说明真正的问题不是技术可行性,而是需求没定。

8. 退出条件必须写下来

触发条件 动作 切换窗口
供应商涨价超过预算假设 启动备选评估 一个合同周期
关键能力停更两版 冻结新增依赖,评估迁移 一个季度
自研维护人力持续不足 转买或转开源托管 一个月
自研功能被上游覆盖 停止投入,做迁移评估 视数据量

退出条件写在立项文档里,和预算写在一起。没有退出条件的自研,等于默认无限追加投入。

9. 可逆性分级决定决策速度

类型 例子 决策方式
一次性、低影响 内部报表工具、一次性脚本 直接选快的,不必评估
短期可逆 日志/监控 SaaS、CI 工具 快速试,保留导出通道
中期可逆 消息队列、缓存层、搜索 评估 + POC,预留抽象层
长期难逆 核心数据库、身份体系、数据仓库 慢决策,必须写退出条件与迁移演练

判据:可逆性越低,越该多花时间在决策上,而不是多花时间在实现上。 反过来,可逆性高的东西纠结两周就是浪费。

10. 过渡期设计:先用开源跑通再决定

阶段1(1-2月): 开源方案跑通主链路,积累真实负载数据
阶段2(2-4月): 若瓶颈明确且属差异化能力 → 自研替换该模块
阶段3(持续): 保留对外接口不变,内部实现可替换

关键约束是接口先行:先定对内契约,再决定背后是谁。这样"造"与"买"的切换变成换实现,而不是改调用方。过渡期最怕的是把临时方案写成核心依赖——判断标准是:临时方案有没有出现在别人的架构图里。

11. 组织因素:谁维护、归哪个团队

问题 选"买"的答案 选"造"的答案
谁值班 供应商 + 一个对接人 一个固定团队,且是长期归属
需求排队 提工单等排期 自己排期,但要和业务抢人
故障责任 可追责、可索赔 全内部消化
绩效归属 不产生内部技术资产 产生资产,也产生维护债

组织因素常常比技术因素更能决定结果:没有明确归属团队的自研,一年后一定变成"没人敢动"的遗留系统。

12. 排错:决策走偏的六个信号

信号 说明 处理
立项只写了首次建设工期 后四项成本隐形 补 TCO 表,含退出成本
"他们做不到我们的需求" 未量化差异项 列差异清单,逐条标"必须/可配置/可放弃"
POC 做成 demo 范围失控 只保留一个假设,两周内出结论
没有导出演练 锁定风险未验证 每季度真跑一次导出
自研排期总被业务挤占 人力未真正承诺 写进团队 OKR,或改买
决策文档无退出条件 无法止损 补触发条件与切换窗口

13. 边界

场景 判断
一次性需求(做完就不再变) 买或直接用现成工具,自研毫无摊销
极度简单(几百行能写完) 自研更快,别引入依赖
供应商极不稳定(频繁停更/易主) 自研或换开源,锁定风险高于自研成本
强合规、数据不能出境 形态决定选择,功能次要
团队无对应运维能力 买,即使单价更贵

造与买的本质不是技术选择,是把不确定性放在哪一边:买是把不确定性放在供应商身上,造是放在自己团队身上。选哪个,取决于你更能承受哪种失控。

14. 自测

  1. TCO 五项里,哪三项最常在立项时被漏掉?
  2. "自研能省钱"需要同时满足哪四个条件?
  3. 怎么区分"定制需求"和"竞争力"?
  4. 供应商锁定真正的发生时刻是什么时候,怎么验证?
  5. POC 该验证什么,不该验证什么?
  6. 为什么可逆性越低越该慢决策?
S18-A10 · 造还是买:自研的成本结构与退出条件
https://www.clxhxhhr.top/posts/6159/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。