AlexiaChen / AlexiaChen.github.io

My Blog https://github.com/AlexiaChen/AlexiaChen.github.io/issues
87 stars 11 forks source link

如何选择一个开源项目 #85

Open AlexiaChen opened 4 years ago

AlexiaChen commented 4 years ago

如何选择一个开源项目

选型阶段

关注是否满足业务

相似开源方案比较多,新项目总是对外宣称技术更先进更优秀。如果面对这样的情况,请首先关注该开源项目是否满足当前业务,不要过于关注开源项目是否优秀。

关注是否成熟

显然,无论多牛逼的程序员写出来的项目都会有bug,千万不要以为作者厉害就没有bug,不成熟的开源项目用到生产环境,风险极大。成熟的开源项目一般都是有数年的积淀的。个人经验,要成熟,至少3年起步。

关注运维能力

大部分小公司的“架构师”在选择开源项目时,基本都是关注技术指标,以及上面提到的两个维度,很少几乎不会关注运维方面的能力,可能小公司没有专门的运维团队吧,程序员自己就是开发+运维。然而,用户量也不大,反正昆明这边很少。

这里说下用户量稍大点的公司的情况,如果将技术选型方案应用到线上环境,则运维能力是必不可少的一环,否则一旦出问题,运维,开发,测试全部都傻了,根本无从下手。

使用阶段

深入调研和测试

不能完全“拿来主义”,看了几个Demo,或者编写了几个Demo就把开源项目拿到自己的项目中部署上线是不可行的。要仔细研究和测试。

还是要小心点

对线上环境要抱有敬畏,这是无数IT行业的人的血与泪的教训。无关前期的调研测试多么完美,都不可能覆盖线上所有情况。经验就是,把开源项目先用在非核心业务上,有经验后慢慢扩展,农村包围城市。

最终还是要有应急方案

一个业务量庞大的公司,如果采用开源项目,根据墨菲定律,很可能一下子就大概率碰上一个之前全世界使用者从来没遇到的致命bug,如果是核心业务就是致命打击,阿里这么大的体量,很可能里面每天都有人会遇到少见的难题或bug。所以要考虑清楚,如果这个项目真出问题了,用什么办法应急,这个是必须考虑的。

魔改造轮子阶段

这个公司发展到一定体量都会基于开源项目做二次开发,或者魔改核心源码的,因为开源项目不一定满足公司需求,我知道的阿里数据库组就对InnoDB做了不少魔改。要达到魔改阶段,首先要从使用上用好开源项目,对开源项目有足够的熟悉和了解之后,才开始魔改,这时候一般团队的水平都需要高一点了,当然,意味着达到这个阶段,公司想必还是有钱上规模了。

魔改也是有方法论的,你不能上来就改核心源码。

国内你能看到大部分的国产开源项目,这些公司一般都到达了魔改,或者造轮子阶段,当然这些轮子你去看源码,其实也不是完全从0开始,也参考或者间接使用依赖了不少开源项目。比如,国内有几个小尺寸文件系统貌似参考了FaceBook的Haystack。这方面可能需要你查不少高质量的资料和论文,因为没有现有成熟轮子。