谈谈架构
Architect, 中文译作架构师。先前用于建筑的设计,后来逐渐用于组织管理架构,再后来用于软件架构设计。
架构的重用性
房屋若没有建筑架构,红砖,水泥,绿瓦堆在一起,很容易再建造过程中,产生房屋变形,甚至房屋坍塌。笔者的邻居因拆迁可得更多的补偿,盲目增盖房屋,结果导致房屋坍塌,造成屋毁人亡。
组织没有架够,人员都是一堆散沙,没有有效的分工协作,人越多,组织越乱。所谓韩信带兵,多多益善,就是有效的组织管理,有效的架构设计。
软件的架构设计,就像韩信带兵一样,每个接口就是一个士兵,每个库就是战斗单元,实现的业务功能就是一场战斗。兵精将广,则会场场战斗必胜。架构师就是战役的指挥官,派兵布阵很重要。浅显点如象棋,红黑共32颗棋子,开始有固定的阵势,后续的变化无穷。深奥点如围棋,白黑共361颗棋子,开始就没有固定的模式,后续变化更是深不可测。
架构设计好了,可以支撑无穷变化而不倒。架构师往往高瞻远瞩,好的架构,在数年间依然可以从容应对需求的多变。所谓高处不胜寒,所谓深处高处不为人所理解,是因为,好的架构往往短时间内看不出好,看不出坏,不为众人知,不为众人理解。
当代科技,来源于西方。思想来源于西方,理论根基来源于西方,方法论来源于西方,理论推理来源于西方,从而衍生出的工具,市场生态都是西方在主导。西方主张辩论和公开,辩论和公开的生活方式一直充斥了当代科技发展路线中。当Stallman,Eric Raymond开启了Free Software,Open Software大门后,软件的发展日新月异,软件生态也越来越好。几岁龄童(著名黑客XX),可以尝试自己的想法,摸索试探网络世界的秘密,一不小心从了黑客,从反面促进了软件的发展。白首老翁(一位法国医生),不满摄像头没有firmware,亲手编码,让摄像头为大众所用。软件方便了大众,让众人的思想,可以从容的展现,可以为大家评论,可以让思考者,解决衣食之忧。思想若没有经过精细排列部署,终归是夜空中点点星辰,若想让星辰为他人所记住,为他人服务,就需要将星辰组合,将天球化成一个个星座。架构的工作就是指点星空,划空而制。
软件架构,需要对软件模块,甚至是每个接口了如指掌,同时也需要对业务需求熟悉并界定清晰。
软件方面,对单机系统而言,需要关注系统,中间间,上层逻辑,对分布式系统而言,需要关注系统接口,协议,RPC,时间同步,网络时延。
产品架构,需要对产品的功能,产品的软件,硬件,机械结构件,需要有清晰的了解。
硬件的基础是芯片,芯片为西方锁主导,短期内我们做不了太多。软件的思潮,则由西方在硬件,编程语言,编译器,操作系统,开发模式,算法等方面引领。我们强大的是产品需求,我们的用户多,类型多样,产品架构是我们在引领。
架构的表现
图形化的信息,较为大众接受,一页纸的说明,一幅图的逻辑,更能为沟通双方共同接受。
架构师,初期是规划蓝图,而后是在实践和修正,后期就是思想传播。因而架构师外功是画图的能力和沟通的能力,内功是思维里掌握的战斗单元和缜密的逻辑。
就画图而言,方框和箭头足以。就沟通而言,结论和论据不够,最重要的是信任和共同的语言。就战斗单元而言,掌握的软件知识越丰富,越好。就逻辑缜密而言,需要经受住three legs & five whys的询问。
备注
后续还有,分布式架构设计,嵌入式系统架构设计的文章捧出。