怪叔叔聊架构

架构没有好坏之分(纯技术上),只有对当前业务拟合度的高低。而我们平常对一个架构的评判,是基于这个架构对未来可能出现的业务和需求的拟合度。既然是未来可能出现的,那就存在不确定性、存在主观判断,只能事后验证。所以就出现了很多有意思的现象:

当两个架构师在撕逼的时候,他们争吵的本质其实不是技术,而是对未来可能的业务需求的判断不同。对于当前的业务场景,有经验的架构师很容易设计出来相应的适合的架构,但是我们要让系统有扩展性,能够面对未来的变化和需求。所以,创业公司(资源有限)的架构师小a觉得,虽然我们现在的用户量很少,但是我们的营销团队很强,用户量肯定会高速增长,所以我们的系统一定要在现有的基础上做到高并发,所以设计了一套横向扩展的集群系统,但是带了来状态同步的复杂性。而小b觉得我们现在的系统功能太弱了,吸引不到用户,未来产品经理(策划)一定会加入很多复杂的功能,导致我们的系统越来越复杂,一定要尽可能细的拆分子系统、并加入消息队列,充分解耦,但是随着子系统的拆分,系统间调用成了性能瓶颈,影响了系统性能。结果小a和小b争执不下,最终成了好炮友(例子可能不举的不当,只为了说明问题)。所以问题来了,到底是谁的技术更强?

看上去,架构师的水平最终会取决于对业务、对商业、对公司当前资源的理解,完全不是技术问题。

更让人感觉不可控的是,我们对小a和小b的评价、对架构的评价,也只能事后诸葛亮,等真的到了未来,等一切假设和猜想都尘埃落定了,才知道谁“对”谁“错”。

这应证了一句话,好的架构都是演化出来的,不是某个天才拍脑袋想出来的。

这也就是为什么,一个新人去了老项目总会忍不住喷,这系统也太烂了吧,我设计的都比这强,这里肯定不能这样设计啊。。。但其实这是必然的,除非你的系统停止维护,每当有新的需求出现的时候,必然导致之前的架构的拟合度不断降低(除非你是先知,预测到了未来所有的变化)。而资源又是有限的,我们没法随时改进、重构架构去适应新的需求,成本太高(阿里的中间件团队就是在做这样的事情)。所以就算是大神、是你去做架构,始终会有“这个架构看上去很烂”的时期,当到达一定程度(基于重构成本和拟合度成本的比较),就需要重构了。window7和window10其实是两个完全不同的系统,不是因为微软的工程师不优秀,而是没人想得到,移动互联网发展这么快,用了这么多年的桌面居然需要去兼容移动设备了。

在此心疼一下我们做游戏的,人类社会、商业系统的演化至少还是连续的、平滑的。但能限制游戏系统演化的,就只有策划的想象力了。。

你可能感兴趣的:(怪叔叔聊架构)