向架构进发

411 阅读4分钟

做架构到底是在做什么

架构做什么,前端有业务架构后端有技术架构,有区分么,这个不重要;做事情解决问题或是谈话,把设计模式用起来就是架构么,不见得。IT行业很早前被类别建筑行业,建筑师和IT工程师都成为architecter,他们是否有关系,建筑师是决定房子空间分配、人流走向、扩展设施,但他们并不一定非常懂采暖通风光照等,因为有专门的工程师,或者也不用非常了解最新的设施有哪些他们是怎么安装的,因为有专门的设备工程师。所以建筑师做这些决定的是靠现有能力的理解以及过去的经验。建筑师决定空间分配、人流走向、扩展设施(采暖通风光照)类比架构师决定功能排布、业务组件间数据流向、工程本身的发展和维护,架构师主要是做这些事情。再往底层深究架构师本质是在做什么,其实我认为是在用过去的经验在定义和过去积累的技术在定义工程。

架构师和工程价值观

先思考一个问题,为什么有些工程变得越来越难以维护,结构为什么会出现腐蚀? 经过思考我把答案总结为工程价值观。它体现在很多方面,比如工程里面多很多问题,有些问题是类似的,在解决这些相同或是类似的方案确实截然不同的,比如今天按照直觉出一套方案,改天再遇到类似问题又按照直觉用了另一种方案;或是当出现鱼和熊掌不可兼得时怎么选,鱼和熊掌的区别是什么,为什么会选鱼为什么会选熊掌。这些问题进一步引发工程价值观。工程价值观类似欧几里得经典几何学,欧式几何是基于一些经典定理发展起来的,而工程价值观可以类别这些定理。工程价值观我总结下来有三个公理:

  1. 工程是会成长的 架构师需要为工程的成长做出一些预设条件,如果没有预设条件就会变为疯长。这个预设条件需要基于业务规范工程成长。比如和用户有关的数据可以放到一个表,另外一些比如积分数据就是另外一个业务而且还有可能有别的业务,它们本身不属于用户本身的业务,所以需要放到另外一张表。由于工程是会成长的,这种预设条件不能变的很细。

  2. 计算机不存在两个完全一摸一样的方案 类比一个哲学命题,世界不存在两个一摸一样的树叶。计算机只允许有唯一解,这个唯一解一定是排他的。因为这种排他性,所有的决策都需要有依据,如果有两个类似的问题每次决策都会产生不同的方案,那么决策依据一定是没有充分考虑的。其实在考虑决策依据时,也是对未来可能遇到的challenge做准备。至于这个方案是否是最佳方案这个并不重要,重要的是思考。

  3. 工程的成本不止有开发 工程的成本不止有开发,工程编程今天这个样子不止只有开发,举个例子,一个复杂的功能用了一天时间写完,这个工程的成本并不见得低,因为开发用了一天,什么功能都是hardcode,导致测试和后续维护却需要更久的时间。工程不能只考虑开发的时间,还要考虑后续维护的成本。所以工程需要写出自己解释自己的代码,最好是能帮助新手学习的。

工程价值观其实是一个比较好的工具,它解决了一个怎么入手的事情,比如假设现在遇到一个架构有几个方案可以选,怎么比较各个方案的优劣,就可以从以上三点思考。工程价值观不会给你具体如何思考,只是告诉你你要去思考它,当你做一个架构时需要基于这几点思考,类比几何学结题时需要用几个定理,但是几何学不会告诉你如何结题。