加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

开源商业化及云化之路应当如何走?

发布时间:2022-03-26 00:27:27 所属栏目:安全 来源:互联网
导读:近年来,开源生态发展迅猛,不断推动技术创新和产业发展,已经成为全球数字科技的关键。与此同时,从开源到开源商业化也成为了越来越多企业与个人贡献者共同关注的话题。近日,Kyligence创始成员、技术合伙人,ApacheKylin项目管理委员会成员马洪宾围绕开
        近年来,开源生态发展迅猛,不断推动技术创新和产业发展,已经成为全球数字科技的关键。与此同时,从开源到开源商业化也成为了越来越多企业与个人贡献者共同关注的话题。近日,Kyligence创始成员、技术合伙人,ApacheKylin项目管理委员会成员马洪宾围绕开源的时代背景,开源商业化及云产品化等话题,从商业与技术的不同角度进行了分享。
  
  开源的时代背景
  
  1、开源模式
  
  提到开源,大家最先想到的是以Linux、Glue为代表的自由软件的时代。那时,大家强调的是软件的自由分发,背后是人类对自由的渴望。
  
  但现如今,开源的现状与曾经的自由软件时代已经有所不同,很少有非常成功的开源项目由个人主导,比较成功的开源软件、开源产品的背后都有一些公司在进行商业化运作。
  
  如今,企业的运作模式更多的是业务的创新激发技术的创新,而技术的创新又进一步推动业务的创新。在这种模式下,不再是由个人的因素推导开源任务,而是这些公司出于自身业务驱动的需要,会源源不断地把一些好的内部产品进行开源。目前,开源已经成为了一种软件的传播模式和开发协同模式。
  
  2、利益考量
  
  现在的开源更多是一种由商业化公司支撑、带有商业化目的、带有利益交换性质的行为。当一个产品开源之后,就会失去一部分的市场与利润,但这其实是利益交换的一部分。作为社区用户,你可以免费使用开源软件,但你在使用的同时贡献了你的时间、真实数据、真实场景,贡献了自己机房里宝贵的计算资源,这些东西都哺育了社区进一步地发展,所以这是一种带着利益交换性质的研发协同的模式。这就是所谓的开源在开发和协作方面的明显作用。
  
  3、商业驱动
  
  如今,很多公司依靠开源项目为生,且在过去的20年中,这些靠开源产品为生的公司的总市值也在大幅增加。这其中离不开商业的驱动,投资圈对开源的项目以及开源的公司更是感兴趣。从投资人的角度来看,他们希望开源项目能够商业化并最后获得利益。对此,A16Z投行总结了成功的开源项目应具备的三大要素。
  
  Project-CommunityFit:一个开源项目,首先需要获得开发者的认同,开源项目好,开发者就会在GitHub上点赞增加star数,他们也会贡献代码,提交很多的PR(PullRequest)。一个优秀的开源项目,往往能够在早期阶段就累积相当多的开发者群体,这个群体的积累对开源项目尤其是开源商业化的成功是非常关键的基础;
  
  Product-MarketFit:光有好的开发者社区是不够的,还需要做出一款很好的产品,让那些根本没有开发能力的人也会频繁地、主动地下载这个产品,并且在日常工作中使用。如果一个项目的下载量基本处于稳定的上升状态,这就表示这个项目的健康度非常好;
  
  Value-MarketFit:对投资人来说,拥有一款大家都爱用的产品依然是不够的,因为项目最后还是要能够赚钱,这才能够达到最终目的。因此开源项目到底是否能够产生足够多的市场价值,这个价值能否被市场的用户接受,也是一项重要的考量标准。
   
  开源的商业化
  
  1、开源商业化的开始
  
  接下来,我用Kylin项目的商业化为例,介绍开源商业化的开始和开源商业化会遇到的一些挑战。
  
  ApacheKylin最早的定位是在大数据基础方向,当时云计算并不是那么流行,所以Kylin主要的定位还是在以Hadoop为基础的数据湖上构建的数据管理系统,这个数据管理系统有一个轻量的语义层,这个语义层是一个一致的维度和度量的模型,当分析师查询数据时,看到的是一个个被梳理好的数据模型,每个模型有自己一致的维度和度量的定义,这对分析师来说非常友好。并且由于存在建立数据模型的步骤,使得Kylin能够针对数据模型进行提前物化,这有助于提升查询的性能和吞吐量。由于这些主要优势,Kylin很快获得了社区的认同。不管是GitHubStar数量还是全球采用的数量,其实都是非常可观的,并且处于不断增长的趋势。于是,在2016年,我们就出来专门成立了一家公司来做Kylin的商业化。
   
  2、开源商业化的挑战
  
  前文提到了成功的开源项目应具备三大要素。对于一个商业化公司来说,可能最大的难点还是在Value-MarketFit,就是需要创造一定的价值,让市场接受这个价值,让市场愿意花钱为这个价值买单。为了创造这种Value-MarketFit,一般来说业界有三种不一样的模式。
  
  Support:一个开源项目基本百分之百开源,你可以随意使用,但当遇到问题或者上线之前,就需要考虑是否购买商业化的服务,来确保上线后不出现问题。目前,这种模式不太主流,典型的代表只有RedHat一家。
  
  OpenCore:贡献最核心的东西,并在开放的内核周围开发周边功能,例如监控、安全、审计等方面的能力,这个模式在MongoDB的例子上得到了最好的证实。
  
  SaaS:也可以概括为Cloud模式。这一类典型的代表就是像DataBricks这样的公司,它是靠一个云上的DataBricks的托管服务来赚取利润。这种模式也是现在比较受业界和资本追捧的一种模式。
  
  以Kylin为例,我们首先尝试的是OpenCore的模式,但很快就发现OpenCore模式是存在一些问题的。这里的Core必然是一个被高度隔离、被高度抽象的能力。Kylin的主要能力是能够在万亿级数据上提供亚秒级的查询响应,助力所有规模的企业显著提升大数据分析效率,可以说Kylin解决大数据查询的性能问题。这其实有一定门槛,一般技术公司可能没法达到实现这样的效果。但业界始终还是会有很多厂商有能力去追赶甚至作出超越。与此同时,就算把Core做的非常有竞争力,但仍会存在着开源和内部商业化计划的冲突。任何一个在OpenCore上的重大能力的升级,都会存在争议,这个东西是否应该开源,如果开源的话,它可能会影响内部的商业化推进;如果不开源的话,高度抽象的OpenCore在外部世界会面临很大的竞争压力,如果不持续地提升竞争能力,这个OpenCore在业界的领先地位就会受到挑战。所以这是一个非常矛盾的事情。
   
  3、云的时代
  
  刚才提到的MongoDB在上市之后,也很快发现了OpenCore模式的弊端,所以它很快也布局了一个云化产品,把新的增长希望放到SaaS或者是云模式方面。在这个模式下,不用纠结哪些开源哪些未开源,反正都是放在云上,它给大家带来的更多价值就是一种相当于无托管的运维服务。很多云上的用户,为了节省开发成本,提升开发效率,是愿意花钱去购买这些在云上已经部署好的服务,这种服务往往也带来了比较高的SLA(Service-LevelAgreement)。
  
  我们可以看到从Support模式到OpenCore模式再到云产品化的模式,似乎是一个被业界实践后总结的必经之路。最终,所有做开源商业化的公司都会聚焦在云产品化或者SaaS化的模式。所以当这个方向成为主流方向时,大家就都会往云产品化方面去投资。未来一定是云的时代,所以Kyligence在2016、2017年的时候就已经成立了云产品的团队,并且持续地在云产品化方面进行投资。当然,这个过程也是非常有挑战的。
   
  云产品化挑战
  
  1、底层逻辑适配
  
  首先,云产品化过程中需要进行底层逻辑的转换与适配。早期Kyligence在接触Hadoop时,有一个非常优秀的项目叫YARN,YARN的定位是DataOperatingSystem,本质跟OS是一样的。当时,基本上所有的大数据生态组件都是依托在YARN的OperatingSystem之上。因此大家都要服从YARN的OS的底层逻辑。
  
  而新一代的潮流是K8S的朝向。与YARN一样,基于K8S也能够部署很多的application,比如Flink、Spark之类。很有意思的是,Spark也完成了一个从YARNOperatingSystem到K8S的变化,完成了容器化工作。当然,它不仅仅是容器化工作,也涉及到弹性的扩缩容等方面。
  
  因此,当从YARN的操作系统的底层逻辑转变到CloudOS的底层逻辑的时候,我们需要处理很多问题,比方说在云原生时代,CI/CD、构件发布测试、回滚这些事情如何完成。云原生的Profiling跟本地化实现的方式都不一样,基本都是一种在K8S框架下开发的新玩法,当然这些生态也都非常成熟。
  
  如果你用了云和K8S,就一定要非常关注资源的申请和回收,如何及时地进行资源的扩缩容,以及云原生的测试方法论,比如像云上的混沌测试也是非常火,在云上测试的方法可能还会进一步升级。接下来还有一点,尤其是面向分析类或者数据类的产品,需要非常关注数据的存储和计算分离的架构,因为之前在本地机房、以及YARNOS的模式下,数据和计算基本上是可以认为存在比较强的本地性,但是在云上这个假设并不成立,所以这个会造成非常大的Fundamental架构上的重新设计。
    
  2、成本控制
  
  云产品化的另一个考量点,就是云上的成本控制。在云上所有技术、所有方案的成本是可视化的,所以当用户评价产品好坏或总体拥有成本高低时,是非常容易得到这个数据的。任何一个想要在云上立足的产品,都需要关注云上成本的表现。为了控制在云上的成本,你需要做到以下几点。
  
  第一,软件或者产品需要对负载有感知能力。当负载大的时候,扩展出更多节点来支撑压力。当负载降下来的时候,尽快降低资源,以防止实例的浪费。
  
  第二,存储和计算要分离,否则很难完成资源的扩缩容,一旦存储和计算耦合,缩容就意味着数据要重新分布,这是非常麻烦的,也会非常缓慢。
  
  第三,智能地使用云上的折扣实例。云上会有很多的打折实例,这些实例如果不充分利用的话,相当于每次付100%的价格,在成本上是会有劣势的。
  
  第四,最大化地挖掘硬件的潜力,例如CPU,你能榨干它肯定是要完全的榨干它,不然的话别人用一个CPU能搞定的事情,你要用两个CPU,那你的成本就是人家的两倍。
  
  第五,物化查询结果,利用一些闲置的甚至是折扣的实例资源,提前做好计算方面的工作,然后把结果物化。这样当线上的压力到来之时,可以利用这些物化的结果快速且低成本的得到结果。这个方向也是一个非常重要而且非常有意思的方向。
 
  Kyligence的商业化算是走得非常前面,今年公司也提出了智能数据云战略,帮助云上企业实现自动化的数据服务和管理,通过节省人力和物力极大降低整体TCO(总持有成本)。从我们接触到的客户和用户来看,他们不仅希望有开源的能力,在某些需求下也希望有企业级的能力,包括像安全、稳定性、一些高级的特性。从开源技术到企业级产品,服务用户群体虽然不尽相同,但其实又互为统一,变化的是如何让用户能够从项目中获得价值,这其实极具挑战。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读