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