“开源”这个专有名词诞生于1988年,至今已有20年。所谓开源就是开源,是一种软件发布模式。简单来说,发布者用相应的许可条款将软件的源代码公开,其他人可以根据许可条款阅读、使用、修改、重新打开和出售开放的源代码。
在过去的20年里,在开源的帮助下,软件领域发展迅速。各种开源基础设施、开发框架和应用如雨后春笋般涌现,在一代又一代的开源维护中变得更加完善和强大。
在9月20日的AWS峰会上,AWS架构战略副总裁阿德里安科克罗夫特分享了AWS近年来围绕开源所做的一系列工作和成果。InfoQ有幸现场采访了Adrian,探讨了开源的重要性以及Adrian在云计算领域看到的变化和趋势。
Adrian Cockcroft是谁?
说到开源,不可能跳过网飞。网飞的开源贡献涵盖了大数据、代码构建和交付、通用运行时、数据持久性、可靠性、性能、安全性等领域。目前,网飞在GitHub目录中有近150个开源项目,著名的网飞OSS、Hystrix、Zuul、Eureka等项目都出自其中。说到网飞和开源,我们不得不提到受访者阿德里安科克罗夫特。Adrian在1994年在Sun工作了一段时间,然后去了易贝。大约在2007年,他加入网飞,担任网络工程总监。阿德里安加入我们是因为他对网飞当时正在进行的个性化推荐感兴趣,后来他成为带领网飞走向“云原生”架构的核心人物,并作为一个向外界讲述网飞云故事的人而在业内广为人知。
在网飞任职的六年时间里,阿德里安带领团队将网飞的架构整体迁移到AWS云平台,使得网飞转向云计算,成为硅谷和云计算生态系统中举足轻重的科技公司,也引领了当时业界一波将企业架构迁移到云平台的潮流。现在,当人们谈论“云”或“微服务”时,几乎不可能不提到网飞。
与此同时,网飞在云计算生态系统中变得更加重要的重要一步是,它将开源自己的一些工具。阿德里安创立并领导了网飞的开源项目,由他创建的网飞OSS平台致力于解决大规模分布式系统的各种问题。对于当今时代的Java开发人员来说,网飞OSS就是在云中开发微服务的同义词。服务发现、负载平衡、容错等。对于可扩展的分布式系统来说都是非常重要的概念,网飞OSS为这些问题提供了很好的解决方案。它以前瞻性的眼光将DevOps内化在架构中,使得使用这一开源项目的公司所构建的系统在可扩展性、可靠性、高效率、高性能方面都有良好的表现。
2013年底离开网飞后,阿德里安在风险投资公司Battery Ventures工作了三年。那段时间,Docker和容器技术刚刚流行起来。他接触了很多创业公司,对开源和企业云有了更深入的了解。2016年10月,Adrian正式加入AWS。开源是他选择加入AWS最重要的原因,也是他在AWS主要负责的工作。
为什么开源很重要?
InfoQ:您现在在亚马逊领导开源工作,同时也是AWS的开源布道师,您如何看待开源的重要性?能否介绍一下亚马逊的开源战略?阿德里恩:开源非常重要。我们可以看到,一些流行的产品和服务基本上都是基于开源平台开发的,越来越多的产品和服务都在这么做。以机器学习的主流框架为例。基本上都是开源的,没有非开源的。因此,AWS认为应该给予开源社区更多的投资和支持。很多客户会来找我们,说希望AWS帮他们做这个做那个,我们会根据他们的需求为他们提供相应的服务。基本上这就是AWS的策略。
比如我们做Kubernetes,SageMaker,尤其是SageMaker,其实就是为不同的开源技术开发一个开发环境。
术可以在上面运行,在数据库方面也是如此。我们可以帮助客户去构建MySQL等等,可以说我们有非常完整的围绕开源的一系列工作。在这些围绕开源的工作中,如果说已经做的最大的项目就是Kubernetes,我们加入了CNCF并积极参与到CNCF各组织工作中,同时我们Service团队的成员也积极地参与到项目工作的互动中。以后AWS还会有更多的开源的项目陆续做出来。
InfoQ:您曾经主导开源项目NetflixOSS,从中您学到了什么?
Adrian:首先是软件许可的形式,在开源领域,Apache的许可基本上是最为主流的了。同时我也知道了一点,最优秀的项目必然是在这个点子之初我们就应该让整个社区都参与进来,用一种公开的方式去开发,这是最好的。而不是说就几个人封闭着先把项目做完了,然后再向外界公布。
从Netflix的工作经验中我还学到了一点,就是我们可以很好地利用开源项目,反过来对整个业界产生巨大的影响力,一个非常好的例子就是Spring Cloud在OSS的影响。
InfoQ:企业做开源项目的意义在哪里?
Adrian:我觉得对于一个企业而言,为什么要做开源,可以从四个点上谈:
第一,回馈社会,这是企业社会责任的一种非常好的体现。
第二,如果你想吸引人才,要雇佣最优秀的开发人员的话,这些开发人员都会有自己正在做的一些开源项目。所以做开源就会有利于公司去雇佣到更优秀、甚至是最好的开发人员。
第三,行业影响力。做开源项目确实是可以帮助公司去建立行业影响力的,尤其是比如你的竞争对手有一个产品是收费版的,而你立刻就做一个开源版的,从竞争力上看对你来说是很有利的。
第四,实际上开源是整个软件商品化的过程之一。
ServiceMesh很有趣,但Istio还不够成熟
InfoQ:我们知道AWS在今年推出了Fargate,可以让我们无需管理服务器或集群即可运行容器,去年也是Service Mesh爆发的元年,但是我们没有看到AWS在该领域的行动,是不是说AWS会直接跳过这一步,直接押注Serverless?或者AWS是否有类似Service Mesh的技术组合?我们想知道Amazon对ServiceMesh技术持何态度。
Adrian:我们认为ServiceMesh还是一个新兴技术领域,在这个领域确实有很多非常有趣的东西。我们也有在EKS上支持Istio,但是坦率地说,Istio本身目前还不是很成熟,首先安装就要花很长时间。但是我们在Istio上仍然有一些投入,我们提供了大量的技术文档支持,去指导客户如何用好Istio。当然,我们也确实看到了客户方面对Istio、对ServiceMesh展示出了足够浓厚的兴趣。
InfoQ:目前Google开源了knative,声明动机是为Serverless工作负载提供通用工具包和API框架,您对此有何见解?AWS有何应对?
Adrian:这个框架概念是好的,功能也说得过去,但是我们在三周之前、将要发布它的前一刻,发现了一些Bug,却无法解决。就像我刚才说的,一个项目在点子产生之初,如果这个点子很好,就可以向外界公布,让大家一起来开发。到目前为止,这个项目仍然处于发展初期,还基于Istio比较老的0.8版本。我们觉得还是要等1.0版本出来,可能它才能够方便地安装和使用。目前负责这个框架的开发团队看起来还没有解决这些Bug,所以我们还需要再等等。
现在在一般的Kubernetes,无论是Azure版的或者其他版的Kubernetes上,Istio的0.8版本都装不上去。AWS的宗旨是,只要Kubernetes上能装的,EKS就会支持。最关键的一点,还是要看客户要求什么。
未来云计算只会留下几家大的云服务供应商
InfoQ:您怎么看下一阶段云计算的主流发展方向?
Adrian:云计算不需要下一代微服务了,因为微服务开发的这些工具现在已经非常常见而且比较成熟了。我们认为以后对于现代的应用开发而言,应该是容器技术+无服务化的组合。实际上,正是因为无服务化,容器技术才能够针对不同的应用,以非常快速和低成本的方式去运行。
InfoQ:从Netflix全面迁移到AWS云平台到现在已经过去了10年,您认为现在的技术有根本的不同或更好吗? 与10年前相比,今天的云计算领域发生了什么变化?
Adrian:事实上如果现在是Netflix刚刚成立,它什么都不需要自己去做,技术、架构都不用做。任何媒体公司所需要的功能都可以通过As Service的方式获得。
如果是像Netflix这样一个在全球有上亿用户规模的公司,它可能会需要做一些定制化。但是现在Netflix基本上绝大部分的投资都是花在内容上的,这个对于媒体公司来说才是最关键的。
其实可以这样回答这个问题:如果我是一家公司,我现在正在考虑要不要自己建数据中心,或者说原来的数据中心到年头了,我要不要持续给它翻新接着再用。我只要在AWS开一个账号,立刻就可以获得AWS这么多的能力;但如果你要自己去建立具备所有这些能力的数据中心的话,不花天价是不可能做到的。这个成本一比较,大家肯定选择用AWS的云服务。
现在核心的一点是什么呢?像一些核心的数据中心,比如说银行的核心系统,还有电信公司核心的电信网络,类似于运营系统,他们如何将这些系统搬到云上去,这是AWS在帮很多大客户做的,比如说帮助电信运营商把他们的5G放到云上去运维管理。这可能是我回答这个问题的方式,最大的变化就是核心系统迁移到云。
InfoQ:在云计算市场其实有很多玩家,除了几家巨头公司以外,还有很多初创企业,您怎么看待云计算市场的潜力?
Adrian:未来可能在某些专有领域会有一些有自己特色的云服务厂商,但是从长期的角度来说,我们认为最终在云计算领域,只会留下几家大的云服务供应商。
InfoQ:在面向企业的云计算市场,AWS、Azure、Google目前分别处于什么样的位置?
Adrian:从我们大部分客户来看,你谈到的这三家云服务公司不会各占1/3,基本上90%用的是AWS,某些特殊领域会有其他的云服务供应商。
InfoQ:您觉得云计算领域现在最有待突破的地方在哪里?
Adrian:其实有一个技术我们已经谈论了很长时间,就是非易失性内存。目前Intel有一个3D X Point技术,但是还远未达到真正量产和普及使用的程度,还缺少一些支持的软件。一旦这个技术真正普及了,很多现有的系统、软件可能就会变得过时了。
其实我对这方面的技术研究还是很感兴趣的,我认为这个技术可能还是要在开源社区展开,让大家一起来做,真正的突破可能还得等个几年。
InfoQ:您怎么看待公有云和私有云之争?
Adrian:首先,私有云数据中心这个领域我们比较熟悉的是哪一家呢?VMware。AWS已经和VMware展开了一些合作。比如,我们可以把VMware整个堆栈延展到云端AWS的云上,当一个客户使用了VMware数据中心,当数据中心需要扩大的时候,不再需要实体扩大,而是直接在云端扩展。因为这两个是一样的,我们在云上也有一个VMware的部分,所以当客户的数据中心再去拓展的时候,实际上就是在云端拓展,而不是实体的了。
与此同时,你也可以看到,VMware在Kubernetes上的支持原来是零,现在它在Kubernetes上的份额已经变得非常大了。
InfoQ:您认为云计算和人工智能二者之间是什么样的关系?云在现阶段乃至未来AI的发展进程中,会扮演什么样的角色?或者说反过来,AI对于云计算市场的发展会扮演什么样的角色?
Adrian: 首先我们来看人工智能领域的机器学习系统,基本上你要用到的硬件肯定要有GPU,而GPU本身技术发展是非常快的,可能你今年买的GPU到了第二年就过时了,可能就没有人去用了。以前可能是三年的折旧率,现在的折旧率可能就只有一年了,这也意味着你要不断地去换GPU。但是在云端,AWS和英伟达是签了优先供货合同的,也就是说英伟达的任何一款芯片都会优先供给AWS,剩下来的才卖给别人。所以如果你使用AWS云,你总是能用上最先进的GPU。这是第一点。
第二点,当你在做人工智能系统训练的时候,你同样需要大量的GPU。而大量的GPU会出现一个问题,就是当你训练的时候需要用这么多GPU,但是训练结束之后就用不着这么多GPU了,利用率其实是非常之低的。而如果你使用AWS,就是按秒来计算的。所以虽然要按秒付费,但是你能够以最快的速度对系统进行训练,更快地得到训练结果。
第三点,云针对人工智能方面的优势,就是当我们在使用开源的一些软件包的时候,你要安装、调优,还要更新,其实是非常复杂的。但是有了SageMaker之后,我们提供了一系列工具、预配置、资源库等,能够帮助用户把这些复杂工作全部做好。
采访嘉宾介绍
Adrian Cockcroft,亚马逊 AWS 云架构策略副总裁。在 AWS 负责 AWS 开源社区开发团队的工作。曾任职于 Sun Microsystems、Battery Ventures 与 Netflix,并且是 eBay research labs 的创始成员。
在 Netflix 期间,Cockcroft 创建并领导了 Netflix 的开源项目,也帮助团队扩展并迁移到 AWS,随着 Netflix 公开分享其架构,Cockcroft 成为各类会议和高管峰会上的常客。
Cockcroft 拥有伦敦城市大学应用物理学学位。他曾出版过四本书,著名的有《Sun Performance and Tuning》(Prentice Hall, 1998)。