当前位置: 首页 > 行业动态 > 正文

阿里巴巴毕玄:我这十年对软件开发的感悟

时间:2018/10/08 10:19    来源:叩丁狼教育

 

作者 | 毕玄

出处 | 阿里巴巴中间件

 

本文整理自 2018 杭州云栖大会首届开发者生态峰会的现场速记,阿里巴巴中间件负责人 - 开发者毕玄,分享了他在阿里十多年来对软件开发的感悟,InfoQ 经授权转载。

 

我是 2007 年的最后一天加入阿里巴巴的,这十多年以来一直是一位开发者。当然我也承认这几年写代码确实已经很少了,但过去很多年中,开发的工作仍然一直伴随着我。这十多年里,我和开源有了很多的接触,阿里巴巴和开源生态也有了很多的互动。

 

1、在阿里巴巴,我接触最多的三个项目

 

第一个项目是 HSF,是阿里巴巴内部自用的微服务框架,另一个实现类似功能的是 Dubbo,相信在场很多开发者都接触过 Dubbo。HSF 和 Dubbo 都是阿里巴巴非常重要,用来实现微服务的产品。

 

在 HSF 之后,我在阿里巴巴做了第二个开源产品,叫 HBase。当时,我们把海外的 HBase 引入到阿里巴巴,并支持了阿里巴巴大量的业务,同时也培养了多位 committer,共同推进 HBase 的发展。

 

2011 年,阿里巴巴开始启动容器项目,当时内部代号叫 T4,去年开始把这个项目开源出来了,命名为 Pouch Container,我们希望 Pouch Container 的开源能更好的推进整个容器技术的发展。

 

 

阿里在使用业内的各类开源产品,同时也把阿里积累的技术开源出去,贡献给整个生态,让开源生态能够在技术层面加速创新。对于我们来讲,开源的意义在于,可以让所有的开发者们一起参与进来,共同来定义整个软件的架构。

不管是阿里巴巴还是其他公司,自己开源出去的项目最早都是来源于自身的需求以及对未来技术发展趋势的判断。但这个层面相对比较狭窄,如果有更多来自不同行业的开发者可以共同参与到开源工作中来,那么,整个开源生态的产品就可以更好的适用于各个行业。同时,因为有来自各个行业的需求,开源项目在创新和实用性上就会大幅度增强。所以,开源是让所有的开发者们共同参与进来,一同加速软件和架构的升级。

 

 

2、分享两个在开源界比较有名的故事

第一个是很多人都知道的 Linux,在操作系统领域,之前只有微软在 Windows 上拥有了大量的用户,但 Windows 是闭源体系,所以大部分人无法根据自己的需求和创新点来对操作系统进行改造。但 Linux 的开源让开发者们有机会参与、设计出一个更适用于自己所在行业、所在企业、所在业务的操作系统,这是 Linux 对整个社会的意义。

 

 

从过去的一些数据可以看到,Linux 已经获得了超级计算机领域 99% 的市场份额,它已经拥有 2000 多万行代码,有 1500 多家企业在基于 Linux 进行二次开发。显然,这些不是仅靠一家公司就可以实现的,更多的是因为它背后拥有的这 1 万 5 千多位开发者。当然,阿里巴巴也参与了 Linux 的演进,这将为底层的软件创新带来很大的机会。

另一个是这几年特别火,相信很多开发者也都接触过,它在短短一两年时间,就成为了大部分开发者在容器领域的第一选择,他就是 Kubernetes。Google 在 Kubernetes 的基础上建立了 CNCF 基金会,目的是让更多的开发者参与到 CNCF 的工作中,共同定义 Cloud Native 的标准。有了这个标准以后,所有的企业可以和云有很好的结合,同时不需要绑定,可以更好的做切换,这对所有公司来讲是非常巨大的帮助。

 

 

CNCF 招募了很多企业一同参与软件定义,阿里巴巴也参与了其中的很多工作。我们提出了 OpenMessaging 的标准,希望借助标准让开发者更好的使用消息引擎,背后所有的产品不用绑定任何的厂家,也不需要绑定任何一个产品。我想,这也是 CNCF 希望社区成员推进的事情,让开发者所开发的应用,都具备 Cloud Native 的特征。

 

3、开源产品逐渐成为技术架构选型主流

其实回过头看,现在开发者在选择一个技术架构时会发现,开源产品成为技术架构选型的主流选择的趋势越来越明显。我们在所有的场景中都越来越多的使用开源。阿里巴巴在 2007 年做系统架构改造的时候,虽然外部有一些优秀的开源产品,但是要满足阿里自身的大规模业务需求、高性能需求和高稳定性需求,会发现,很多开源产品非常难适应。那个阶段,很多企业虽然也会用开源,但到最后,仍然会自己去开发一个产品。原因也是因为当时的一些开源产品确实存在当面对比较复杂的业务场景时,不太好应对的情况。

 

 

但从近几年的发展趋势来看,我们认为开源产品的质量已经越来越高了,很多开源产品都已经不仅仅像以前那样只能用来支持很小的场景,而是在比较复杂的场景中都可以提供非常大的帮助。所以,这也使得现在开发者群体选择技术架构的时候,会更多的考虑使用开源产品,通过开源把整个业务的实现过程加速起来。

 

4、举三个例子

比如说现在业界比较火的微服务解决方案 Dubbo,我们在 Dubbo 项目上投入了十几个工程师,在经历多次故障反复演进后,最终打磨成一个健康、稳定的产品。现在,随着 Dubbo 的开源,很多公司可以在很短的时间走过阿里巴巴过去花几年时间走过的路,避免重复造轮子,而且还不用投入那么多人。

 

 

在消息流转领域,以往,很多开发者都会使用 Kafka 消息订阅的传输方式以及简单的实时数据的处理方式,自阿里巴巴开源 RocketMQ,并于去年成为 Apache 的顶级项目后,越来越多的开发者开始使用 RocketMQ 作为他们的消息引擎,让开发者有了更多的选择。

此外,由阿里巴巴牵头发起,和 Yahoo、滴滴、Streamlio、微众银行、Datapipeline 等公司共同创建的分布式消息规范 OpenMessaging,于去年正式入驻 Linux 基金会,这也是国内首个在全球范围发起的分布式计算领域的国际标准,帮助开发者在跨异构系统和平台间更高效的开发消息分发和流应用。

最后像更加火爆的大数据领域,可以看到像很多年前的 Hadoop,现在的 Spark 和 Flink 都是用来满足大数据领域各类需求非常重要的开源产品。其实还有很多都没有列,例如 AI 领域的 TensorFlow 等等。现在,越来越多的企业不再使用纯商业化产品,而是使用通过各类开源产品来构建自己的软件架构。因为越来越多的开源产品具备类似商业化产品的企业级能力,同时又在被不断的打磨和演进,以满足企业的各类业务场景。

 

5、开发者定义软件未来

峰会的主题叫开发者定义软件的未来。这意味着什么呢?

当有越来越多的开发者加入开源生态后,开源产品将会在各行各业更好的解决各类通用的技术需求。当它可以解决越来越多的技术需求,就可以让企业聚焦业务,将资源集中投入到业务的开发上,这对整个业务的创新将会有非常好的加速作用。

 

 

现在阿里巴巴开源了 400 多个产品,希望阿里巴巴未来可以开源更多的产品,也希望有更多的开发者可以参与进来,和我们一起更好的定义整个软件的未来,让所有的开发者都能够更加聚焦业务,加速整个业务创新的进程。