技术选型无处不在,你可能需要选择一种类库、选择一个框架、选择一种语言、选择一种组件、选择一个架构模式、选择一种系统方案……。 那么如何构建一个决策或思维框架去做技术选型呢?
技术选型
如上图所示,这是我自己总结出来的一套框架。
我把问题进行了层次结构的划分,从以下方面考虑:
需求满足度
:可选项对当前业务或技术需求的满足情况,以及对未来潜在需求的支持程度,即“功能性”。非功能质量属性
:性能
:几乎所有框架或组件都宣称自己是高性能。高可靠/高可用性
:是否支持集群或主从结构,是否存在单点故障的可能。可修改性
:是否能对 BUG 快速修复,是否支持扩展。安全性
:是否有认证授权、追踪审计、数据加密等等安全特性。
团队亲合度
:实施需要具体的人员,因此就有了:开发成本
:研发对所选技术的上手程度、掌握情况。运维成本
:运维管理的支撑难易。
注意,以上只是我提供的一种框架,每个维度针对不同场景都是可以改变的。例如,如果对比的是开源组件,那么你很可能需要增加“成熟度”这一个维度。重要的不是那些条条框框,而是思考的方式。
构建自己的框架
为什么要做技术选型?在我看来有两个重要原因:辅助决策、达成共识。通过罗列各种指标,进行综合性打分,可以减缓过多的主观情绪对决策的影响。另外,技术选型也是在团队成员间达成一致的手段,这也是一种协作、协商的机制。
你不需要生搬硬套各种技术选型的框架,更合适的方式应该是你进行“结构化”思考之后得到自己的层次结构图,这需要一些积累与刻意练习,但并不难。一旦你掌握了结构化的思维方式之后,在处理其它问题上也会游刃有余。所以,请你只参考,但构建自己的框架。
(我是凌虚,关注我,无广告,专注技术,不煽动情绪,欢迎与我交流)