第一次用简书来写自己的博客,我原来是在新浪博客上写,各种原因最终选择来简书!
如何做开源技术的选型?
我是在infoQ的架构师期刊上看到这篇文章的,让我感同身受,决定记录一下。
我想很多人在选择开源技术的时候,都是特别去看重某种开源技术的功能多不多,技术是不是很强悍,完全沉醉到技术本身,其实我们还是需要注意其他一些方面的,不仅仅是技术和功能!
1、技术和功能
技术和功能肯定是考虑的很重要的一部分,但是它在技术选型中的权重可能就是四分之一。
除了技术和功能之外,我们还应该关注哪些事情呢?
2、项目的运作模式
开源项目的运作模式中,我们重点关注以下三点:
<1> 使用哪种开源License(如Apache License);
<2> 开发模式和测试模式;
<3> 被一家公司掌控还是松散的社区决策?
其中最重要的是License和测试模式,会认真做测试框架,定期发测试报告的项目,必须好评!
项目运作是被一家公司掌控还是松散的社区决策,以前都说大教堂不如集市,那是因为以前大教堂基本上不开源,搞开源的大教堂和集市,就很难说哪个好了?
3、技术提供者的产业背景
在项目技术提供者的产业背景中,我们重点关注以下三点:
<1> 技术提供者的产业经验。
<2> 自己有没有大规模使用?
<3> 是从自身需求沉淀出来的产品还是按照设想的需求开发的产品?
很多成功的产品都是在自己内部的长期的、大规模的使用中反复锤炼,再发布给公众使用的,最好的例子就是AWS。从自己的实际需求出发的、给自己做的产品,往往会比按设想需求出发的、给客户做的产品更好。所以我们往往更加青睐大型互联网公司释放出来的开源项目,比如 Netflix 的一系列开源项目。
有些同学可能了解 Docker 的 C/S 架构和网络设计,带来了多少麻烦,这就是有没有产业经验的区别。
4、生态环境
在项目所处于的生态环境中,我们重点关注以下三点:
<1> 技术和技术提供者在产业链中的位置
<2> 与友商的合作 / 竞争关系
<3> 是众望所归还是单打独斗?
互联网时代,没有生态、就等于没有未来。良好的合作、清晰的分工
界面,会让项目得到更好的发展,总想占点上下游的便宜,动别人的奶酪, 或者妄图以一己之力对抗全行业,当然也有成功的,但是概率真的很低。