技术选型

因数

项目因数

规模

小:可以选用新技术
大:使用成熟技术

时间

紧:买商用的
宽裕:自己搞

成本

有钱:买现成的
没钱:自己撸

非功能性需求

高并发、低延迟、高可用、数据一致性、安全性。

团队因数

当前团队成员的技术栈

选大家都熟悉的:方便开发,排查问题。

领导需要前瞻性。

分析和实验

征求团队意见,大家讨论分析实验。

版权因数

选择合适的开源协议的软件:GPL/BSD/LGPL。考虑因数:商用、闭源、修改。

技术因数

标准功能

我们需要的功能,比如说我们需要一个MQ,标准功能就是发拉消息,pub/sub。

非标准功能

特性 描述
可伸缩性 产品在性能上必须能容易且有效地伸缩以满足业务需求增长的需求。
灵活性 产品必须易于适应新的需求。
可操作性 产品必须被设计成易于与共享的数据和广泛可得的系统通讯。
可扩展性 产品功能必须在供应商很少介入的情况下能够定制和快速地增强。
可使用性 只需很少的培训就能使让顾客使用产品和他的任何特性,产品应该被设计成其目标使用者的技术水平很匹配。
高效率 产品应能在各种性能水平上工作,能够应付应用对效率的要求。
可靠性 产品必须有被证实可在预定环境中工作的功能与特性。
可管理性 产品必须能被配置、部署、监控和优化以确保其在预定的环境中工作良好
安全 产品必须保护信息和事务的完整性
高可用 通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。

技术标准

通讯协议,API标准,实现语言和兼容语言,是否可以扩展。

技术支持

厂商、社区支持粒度活跃度、服务质量及成本和厂商服务质量。

步骤

必要因数:必须满足的,比如团队技术栈和版权因数
可量化因数:非功能特性、技术标准

可量化因数及权重

选出可量化因数

选出哪些可以量化因数,有奇数位专家投票选出,超过半数确定。

两轮:
第一轮从所有因数中投票
第二轮从没有超过半数的因数中重新投票

算出可量化因数的权重

每个专家对上面选出的因数分配权重,总和位100%。然后,对每项因数获得权重求平均值,得到可量化因数的权重。

候选技术

大范围的选择可以使用的技术,两个角度:

  1. 成熟的技术
  2. 成熟团队做的比较新的技术

过滤
使用必要因数

只要不满足必要因数的就pass掉该技术。

使用可量化因数

每个专家对每个可量化因数打分,范围0-10。每个专家的打分,通过公式算出评分,最后选择评分最高的。

公式:

评分=参数1评分*权重+参数二评分*权重+...+参数N评分*权重

参考

https://mp.weixin.qq.com/s/Z7jK8XnKnoY-FiP4inGjsA

← sync.Map实现分析 RocketMQ HA实现 →
存档 关于