如果所有的东西都堆在一起就不需要谈架构了
人多时最怕无组织,无纪律,同样软件系统越来越多功能时也最怕不去拆分,每次添加功能时不先从整体、架构上去考虑,去拆分,而是想到什么就写什么,需要什么就加什么,最终程序的代码将得变得越来越乱,越来越臃肿。解决这个问题的惟一办法就是拆分,让小而美的模块通过调度中心相互协作有序地运行。记得以前去维护和扩展一个项目,团队里没有架构师的角色,都是客户要什么功能我们便加什么功能,我们程序员越高效,系统就会坏得越快,因为越来越多的东西杂乱的快速的堆积在一起,最终的结果肯定是虽然项目能完成客户想要的东西,但该项目已失去了重用的价值,而且功能将会越来越难加进去,出现问题的机率也会越来越高,到最后肯定只有推倒重来,或大刀阔斧去将该项目作拆分,或者将它丢弃。
架构师就是要敢于去拆分,对大模块很敏感,原则上就是要把模块拆成小而美的,而且要找出它们的联系,画成关系图,说服自己更要说服别人。所以架构图可以说是关系图、模块协作图。
架构也是动态的,不是一成不变的。不同的环境、需求适合不同的架构,像人类社会一样,不同的数量的人群,一般会有不同的组织架构、不同的社会分工。如果团队出现了问题,那便要考虑优化架构了,所以架构会随着问题的出现而不断演变,不断进步。淘宝的电商系统架构就是一步一步进化而来的,从单服务器到分布式,从功能耦合到功能拆分,从各自通信到信息中心凋度,独立出来的职责角色越来越多,分工越来越明确,从而运行得更加有序和高效,也提高了系统的健壮性、安全性。
在IT系统上是如此,在企业、社会团体、城市建设上也是如此,所以有软件架构、组织架构、社会架构、城市架构等。
随着对IT的体会越深,越觉着IT的世界与现实世界是很相似的,解决问题的思路,做事的方式方法都很类似。这是思维定势按原有经验办事,还是本质就是一样的呢,这个问题还在探索当中。