聊聊我对开源的理解
今天晚上实在睡不着,想想自己对开源的理解。
不可否认开源软件对软件行业是有非常大的推动的,从中受益的企业不知道有多少。有的企业直接使用开源创业的,比如mongodb、skywalking等等。很多企业也都不可避免的使用了开源软件,尤其是spring全家桶。
我也一直信奉开源不等于免费,为什么?下面就说说我对开源的不是免费的理解。
实际上使用开源的产品或者源码是把钱花在了使用者的个人或者团队上面的,比如你是用spring这个框架,你是需要学习的对吧。学习是有时间和金钱成本的,对于企业来说这是需要付出的。使用开源产品或软件你肯定要熟悉甚至要去读他的源码,这都是有时间成本的。如果你是为了完成某个功能开一下示例代码然后就直接上生产环境,我就只能 “呵呵”了。
对于企业来说使用开源产品感觉更多的是吃了一颗定心丸。为什么那?我们先说说一些闭源产品的问题。我们大家都知道 sqlserver或oracle这两个数据库产品都是闭源的。如果你是企业用户你就知道他的产品有多贵,对硬件和操作系统还要特殊要求(可能是非主流),以及对存储和CPU颗数的限制或收费都是一笔不小的开销,同时你可能还需要他的生态链条,同样也是收费产品。什么公司是比较适合这种产品那,个人认为一些不差钱,自己团队水平没有达到顶尖级别的公司,比如银行,证券公司等等。这种公司很大的一个特点就是不差钱,与其自己研究不如让更专业的公司来给我搞这个事情,我专注好自己的业务范围就好,同时也是为了买一份保障,出了问题有人背锅或者处理。之前我的一位CTO这样和我们说过,我们公司在IBM购买的产品出了问题我可以把IBM最顶尖的专家叫过来处理问题。说的没错这就是一种保障。
接下来我们说说开源产品或软件。
我们都知道开源软件是不收费的,但是不同的开源产品有不同的开源协议,不同的协议里面的条款自然也就不同,开源的托管机构也有很多。
开源产品给大家的第一印象就是“免费”。我上面也说了,对于企业这个“免费”不是真的免费,只不过是你把钱花在购买服务上还是花在培养自己团队上面。
同样企业使用开源产品也是给自己吃了一颗“定心丸”这个定心丸与上面的闭源产品不同,这里的定心丸指的是,假如你那天产品收费了或者不维护了再或者有小需求变更了,我可以继续使用老版本、自己维护一下或者修改一下源码来应对解决小小的变动,这样就可以把企业的成本降到最低。比如我在使用canal抽取mysql表中全量数据的时候,我一开始使用的就是原生的方法,数据分页抽取使用的limit做的,但是数据量达到 千万级别的时候limit就非常慢,后面就是各种超时。如果是闭源产品的化我可能要花高昂的费用请他们定制做一个,但是canal是开源的,我看了看代码 根据我的实际情况我给改成按自增主键列范围分页读取数据了(id>=? and id<?),这样修改之后就非常快速而持续的把数据抽取完成了。也就半天时间搞定,如果要找第三方服务要多长时间那。
所以我们要根据我们自己的实际情况选择使用开源产品还是闭源产品。
版权声明: 本文为 InfoQ 作者【zygfengyuwuzu】的原创文章。
原文链接:【http://xie.infoq.cn/article/307ea559b7c5ab447467befa3】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论