有不少朋友曾经问过我,架构师究竟是一个什么职位,一个架构师都应该做些什么才是一个合格的甚至优秀的架构师呢?
这个问题估计很多人也都有类似的疑惑。对于这样的问题,我觉得不妨先说说在我眼里什么叫架构。
所谓架构,就是结构和框架,就是研究部件与耦合的关系。而优秀架构的原则是什么呢?不管是在建筑学里面还是在IT行当里面,优秀的架构就是要在大利益满足的前提下让建造成本、运行效率、运维成本、扩展成本在平衡的情况下尽可能降低。凡是满足这样思路的架构都应该算是优秀的架构。
为了达成这样一个架构观点,在不同的领域其实有着很多对它进行不同角度支持的手段或者技术。比如典型的面向对象技术,对于传统的面向过程的技术,就有着很好的封装性,对于建造的效率有着显著的提高。再比如,HDFS技术对比SAN设备来说,在数据量递增的情况下,设备成本的上升是缓慢线性的,扩展成本和运维成本都有好的保障,这就是一种好的架构,当然前提是我对吞吐的响应延迟不那么在意。
在建筑上我们也能看到类似的例子。越高层的建筑越是喜欢采用钢架玻璃结构的建筑,而中低层喜欢使用钢筋水泥结构,再低就无所谓了,可能就是砖瓦结构。砖瓦的建筑成本对于平房来说当然是非常低的,设备简单,工人和工程成本非常有限,村里的有经验点的包工队就能解决。高一些的楼层砖瓦结构就不好使了,建筑的强度会受很大影响,抗震也是个问题,即便没有地震,对于制造中的垂直标准水平标准的勘定要求也会比较高,而这些误差很有可能都是致命的,用预制板加钢筋水泥就更合适。其实预制板也相当于我们编程中的一个一个的对象,简化细节,而且制造可以并行化。再高的话,钢架玻璃更为合适,它轻质,有韧性,强度大,价格相对更低廉,吊装方便。
当然每种方法在具备其优点的同事,都是有它自己的缺点。至于怎么选择,一定是在当时的特定场景特定环境下选择的那个对于主体“成本最低”的方式,无论这个成本是时间、风险还是具体建造过程中花掉的金钱。一个好的架构师是什么?就是能够将这些因素量化,度量,并作出恰当的判断,最终引导整个工程按照最合适的方式去进展。这才是一个号的架构师应该做的最重要的事情。