很多时候讨论方案,“这个改起来简单”,然后就没有人说话了。简单没有错,问题是简单就是指这一次改动的简单呢?那运维的简单性、扩展的简单性、稳定的简单性、排查的简单性呢?
现象
很多时候讨论方案,“这个改起来简单”,然后就没有人说话了。
因为这东西真有点无从反驳。
改起来简单,风险就低,你怎么反驳,又不是你改,又不是你背锅。
包括网络上有一些图,基本表达是"能跑就别动"。
但是这玩意真的对吗?
有些时候不是跑的问题,是业务发展、竞品拼杀、商业博弈,必须有做一些特性和功能,这个时候是必须要动。
简单不是唯一标准
动不是问题,问题是怎么动,衡量标准是什么。
简单没有错,问题是简单就是指这一次改动的简单呢?
那运维的简单性呢?扩展的简单性呢?稳定的简单性呢?排查的简单性呢?这些都不谈?
比如要对接第三方备份厂商,居然有其他厂商入侵到我们计算节点,并且到我们计算节点删除 img 的操作方案。
可能这次是简单了,那下次呢?下个备份厂商呢?
包括备份对接 s3 接口,多好的需求,符合生态,非常标准化。
结果硬是做成了非标能力,绑定存储,绑定各种特定流程,非得模仿老功能,依赖中转节点。
难道就不能从计算节点直接上传 s3?
数不胜数的例子,这类问题,基本都是当时评审的时候"这个方案改动小"导致的。
这类问题真无解
这类问题其实真无解,就看 leader 的品味。
因为其他队员发言是没有权威的,文无第一。
尤其是"改动小",比如你的方案实现了从计算节点直接上传备份到 s3,并且是标准 s3 接口,以后不做改动对接任何备份厂商。
很好吧,所有人都知道这是对的,但是不会有人主动去赞同,因为改动大,得背锅。
这类问题短期没有人在意,但是时间长了,赚钱的部门、商业线第一个跳出来:
“你们写的代码怎么这么多限制,为什么别人支持,我们不支持,很奇怪。为什么这个支持 s3,那个不支持,很奇怪。”
不过到这依然没有结论,依然看 leader 的品味,看老板的品味。
小结
- 简单是唯一标准吗?不是;
- 简单没有错,问题是简单就是指这一次改动的简单呢;
- 还要考虑运维的简单性、扩展的简单性、稳定的简单性、排查的简单性;
- 这类问题真无解,就看 leader 的品味;
- 所有人都知道是对的,但不会有人主动去赞同,因为改动大,得背锅。