一、选型流程
对于重大组件、中间件的选型,首先要明确短期、中长期的需求,根据需求,列出一些重点考虑的需求特性,根据这些特性,列出一些测试用例,在选型时,用这些测试用例对入围产品进行测试,根据测试结果来评判各个产品的优劣以及与需求的匹配程度。(对应下面的第3、4项)
1 初步收集和整理需求,可以参考比较主流的方案和中间件的功能
------>相关资料------->
2 召集领导、技术骨干、架构师等,讨论需求和使用中间件的必要性
------> (1) 需要自研-------> <自研流程......>
------> (2) 选用中间件-------> 由领导发起中间件选型任务(主要由基础技术平台来具体负责)
3 (选型负责人)广泛调研和收集符合需求的中间件,发布初步《调研报告》,召开讨论会
-----> (1) 不符合要求,需要自研-------> <自研流程......>
-----> (2) 决定选出2到4款拿来做最终的对比测试
4 发起对比测试(根据具体情况进行,可能涉及到性能、稳定性、安全性等各个方面,如果测试复杂,需要性能测试团队参与)
5 编写中立的《选型报告》和《测试结论》,完成后,召开讨论和评审会议,决定要用哪一款中间件
-----> (1) 所有备选的中间件,都不完全满足需求,需要二次开发或者调整需求 -------> <领导做决定......>
-----> (2) 决定选择某一个款中间件 ------->
6 由基础技术平台负责该中间件的部署或二次开发 - the end
注意,1、对于第一点 - “需求的提出和收集”,可以由任何方面发起,包括研发组、架构组、基础技术组等。
2、选型负责人,主要由基础技术平台来具体负责,一般来说,必须是高级工程师以上,有丰富经验的一线架构师来负责,《调研报告》、《选型报告》、《测试结论》等文档,必须是专业的,能说服人的,没有这个效果就得重写!
二、重大版本更新流程
1 由版本更新的发起方(例如基础技术平台,或者业务需求方也可以提出更新)来确定更新内容,召开讨论会议,收集反馈意见并 决定是否有升级的必要
--------> (1) 决定暂不升级
--------> (2) 决定升级
2 中间的负责人,准备好新版本(可能还包括二次开发),新版本准备好后,发起测试,通过测试后,发布测试结论;
3 制定升级计划(如有必要,可以召集使用方 开会确定升级计划),并准备升级手册和资料;
4 由基础技术平台负责该中间件的新版本部署 - the end
三、选型标准
列表和举例如下:
标准 | 说明 | SpringMVC | ZolltyMVC |
满足需求 |
| 很多,很强,以至于一般都用不完 也很难一一列举完。(10分) | 涵盖MVC的基本功能,包括Bean管理/依赖注入、RequestMapping、Restful、拦截器、模型驱动和多视图等。(6分) |
成熟度 |
| 开源10多年; 发布的版本数以百计; 被全世界广泛使用、占有率绝对第一; 网上文档和资料非常丰富;(10分) | 发布已有5年,有十余个版本,使用案例很少,仅仅有3、5个小项目在用,市场检验不足;文档资料很少。(3分) |
可靠性 |
| 稳定可靠,十几年来,被无数公司使用,很少发现严重缺陷和不稳定的情况。(10分) | 简单使用来看,还算稳定可靠,但是没有经过太多场景的检验。(6分) |
产品活力 |
| 代码和资料完全开源; 已形成广大的社区,拥有大量的维护者和开发者; 近十几年,一直再不停的维护更新,每年都会有很多个版本发布;(10分) | 代码和资料完全开源;只有一个维护和开发者,且很少有人关注和互动;近几年来更新频率很低,大概1年左右发布一次版本。(3分) |
业界案例 |
| ||
口碑和行业认可度 |
| ||
服务支持能力 |
| ||
可维护性 |
| ||
可测试性 |
| ||
性能效率 |
| 由于本身比较复杂,性能效率不算高,但是从各大公司的使用来看,能满足99.99%的场景。 | 简单轻量,对比来看,各方面的性能效率很高。 |
安全性 |
| 被广泛使用,几乎没有安全方面的漏洞和隐患。 | 简单使用来看,还算安全,但是没有经过太多的测试检验。 |
二次开发 |
| 完全开源,容易进行二次开发,但是由于功能过剩、又有强大的社区支持,几乎不需要自己进行二次开发和维护。 | 完全开源,代码简单,容易进行二次开发、扩展。 |
功能的可扩展性 |
| ||
易用性 |
| 由于功能强大,设计和代码比较复杂,但是由于文档和资料非常丰富,易用性比较好。 | 由于功能简单、代码少,复杂度不高,易用性很好。 |
复杂度和冗余度 |
| ||
法律风险 |
| ||
总的来说,SpringMVC在 功能性、产品成熟度和活力 上胜出,而ZolltyMVC在 性能效率、复杂度和易用性上胜出。
注意,1、此列表仅为示例,每一项写得并不详细,正式的调研报告和选型报告,应该详细列举每一项的对比数据(以数据说话,每一项约2页左右)。
2、限于格式,这里没有列出每一项的权重。在实际对比时,可以给每一项,根据自身的需求,来确定每一项的权重,然后分别乘以每一项得分,所有项得分相加,得出总分数。
一个真实案例:分布式文件存储系统选型