寓言
码头调度中心里的集装箱和吊车
港口有两种核心设施。一种是集装箱:把货物按统一尺寸装进铁箱,不管里面装的是茶叶、零件还是冷冻海鲜,外面看上去都一样,吊车和卡车都按统一接口处理。另一种是调度系统:决定哪个集装箱放在哪个堆位、哪台吊车去取、卡车从哪条路进来、台风来了先转移哪一批。
开港第一年,运营商签了一份大合同,买了一套“集装箱加调度系统整体解决方案”。供应商报了一个打包价,承诺从装箱到调度全部搞定。第一年确实省心。
第二年问题来了。业务量翻了四倍,调度系统开始卡——排队等吊车的卡车从港内排到了高速路口。公司想升级调度算法,但合同里写死了调度系统必须和供应商的集装箱配套使用。换调度系统意味着要把几千个集装箱上的电子标签全部换掉。
总工程师把架构图拆开之后发现了一个事实:装箱这件事可以被任何符合国际标准的集装箱完成,调度算法是纯软件层,只要集装箱上贴的标准标签不换,调度系统可以随时更换。当初签打包合同时,供应商把两层绑在一起报价,让买家以为两者不可分割。
公司重新招标时把采购单拆成了两张。第一张买集装箱和标签标准——只要求符合 ISO 标准,不绑定任何供应商。第二张买调度系统——只要求支持标准标签协议,不绑定任何品牌的集装箱。两套采购各自有三家以上的候选供应商。
拆开之后的一年里,调度系统升级了两次,集装箱换了一批更轻的新型号。两次变更互不影响,因为中间那层标准标签协议把两层解耦了。
新员工培训手册上画了一个简单的图:集装箱管“这个程序怎么跑起来”,调度系统管“一整个港口的程序怎么协同跑”。如果有人把这两层写在同一行采购条目里,培训手册会直接标红退回。 学徒也终于明白,箱子能装货,码头才管全场。