参考:https://www.zhihu.com/question/19627054/answer/139712112 完善而来
优秀的架构师应该在广度、高度、深度、宽度方面都很突出。
一、广度
广度指的是架构师应该对所在领域的主流技术体系有一个全面清晰的认识,每一种技术不需要很深入的了解,但必须能回答每种技术的价值(为什么)、基本组成(是什么)、优缺点(适用哪种场景)这三个问题?
- Why:每种技术的由来,为什么会出现这种技术,这个技术是用来解决什么问题的?
- What:每种技术是什么?技术的基本组成部分是什么?
- Which:解决同一问题的相同技术各自的优缺点是什么,更适合哪种场景? 只有清晰认识同一类型技术的不同优缺点,才能在技术选型时更合理的使用该技术。
二、高度
高度指的是架构师应具备对客观事物的抽象能力。站的越高,就不会看到细节,只有轮廓。软件复杂度 就是要站的更高,才能解决的。
抽象能力包括:
-
业务抽象:主要是解决业务复杂度问题,业务复杂度主要表现在:客户的业务需求,比如业务流程多,参与者多等,而且这种复杂度往往会随着需求规模的增大而指数级增大。 领域驱动设计DDD 就是业务复杂度的解决方案。
-
技术抽象和取舍:能够对复杂的技术架构进行分层抽象、服务抽象(微服务抽象)、组件抽象;同时面临技术复杂度取舍时可以根据业务特征做取舍(技术复杂度来自需求的质量属性,诸如安全、高性能、高并发、高可用性、低成本等需求,为软件设计带来了极大的挑战。让人难受的是这些因素彼此之间又可能互相矛盾互相影响。);
三、深度
深度指的是架构师能对主流技术有较为深入的理解,钻的更深,对其本质有更深的理解,这里特指技术的原理和工作机制:
- 可以不了解源代码,但对主流技术的原理,运作机理有一个基本的理解;
- 技术是相通的,深度钻研几个技术后,再看其他技术就很容易理解其原理;
四、宽度
指跨行业、跨专业的一种思维能力,真正的宽度更多的是一种综合性优势、组合能力和价值。
宽度不够,做事就不容易找到出路。
架构师的其中一个宽度要求就是:能够熟知当前的技术前沿和热点,能够使用新的技术解决问题。
老业务引入新技术,必然需要对老业务做次梳理,废弃一些,同时迁移必要的,这个过程才是采用新技术的最难点。
五、总结:
- 广度决定了系统架构技术选型的合理性;
- 高度决定了系统架构设计的合理性;
- 深度决定了系统架构的优化能力;
- 宽度决定了系统架构的领先性,不至于三五年被淘汰;