“开源(Open Source)”这个专用名词诞生于1988年,到现在已经走过了20个年头。所谓开源,完整说法是开放源代码,是一种软件发布模式,简单地讲,发布者将软件的源代码公开,并且附带上相应的许可条款,其他人可以根据许可条款对该公开的源代码进行阅读、使用、修改、再开源与销售等操作。
在过去这里,软件领域因为开源的助力而飞快发展,各种开源基础设施、开发框架与应用程序等如雨后春笋般不断涌现,同时也各自在一代一代的开源维护中变得更加完善、壮大。
在9月20日深圳AWS Summit 上,AWS架构策略副总裁Adrian Cockcroft分享了AWS近年来围绕开源开展的一系列工作与所取得的成绩。InfoQ有幸在现场对Adrian进行了专访,针对开源的重要性与Adrian在云计算领域看到的变化和趋势进行探讨。
Adrian Cockcroft是谁?
谈到开源,就不可能跳过Netflix。Netflix的开源贡献遍及大数据、代码构建和交付、通用运行时、数据持久性,以及可靠性、性能、安全等领域,目前Netflix在GitHub目录下已经有近150个开源项目,大名鼎鼎的Netflix OSS与Hystrix、Zuul、Eureka等项目都来自于它。而谈到Netflix和开源,就不得不提本次采访对象Adrian Cockcroft。
1994年,Adrian在Sun工作了一段时间,后来去了eBay,在左右,他加入Netflix担任网络工程总监。因为对Netflix当时在做的个性化推荐感兴趣而加盟的Adrian,后来成为了带领Netflix走向“云原生”架构的核心人物,并作为向外界传述Netflix云的故事的人而为业界所熟知。
在Netflix任职的6年间,Adrian带领团队将Netflix的架构整体迁移到了AWS云平台上,使Netflix开始转向云计算,并成为了硅谷和云计算生态系统中一家举足轻重的技术公司,这当时在业界也引领了一波将企业架构迁移到云平台的趋势。现在大家提到“云”或者“微服务”,几乎不可能不提Netflix。
与此同时,Netflix能在云计算生态系统中变得更重为重要的一步,在于它将自己的一些工具开源。Adrian创建并领导了Netflix的开源项目,由他一手打造的 Netflix OSS 平台,致力于解决大规模分布式系统的各类问题。对于当今时代的Java开发者们来说,Netflix OSS简直就是在云端开发微服务的代名词。服务发现、负载均衡、容错等对于可扩展的分布式系统来说都是非常非常重要的概念,Netflix OSS对这些问题都给出了很好的解决方案。它以前瞻的视野在架构上内化了 DevOps,使得各个使用该开源项目的公司构建的系统在可扩展性、可靠性、高效及高性能方面都有很好的表现。
底离开Netflix之后,Adrian在风投公司Battery Ventures待了三年,那段时间Docker、容器技术正当流行,他接触了很多创业公司,对开源、企业上云有了更深的理解。10月,Adrian正式加盟AWS,开源是他选择加入AWS最重要的一个原因,也是他现在在AWS主要负责的工作内容。
为什么开源很重要?
InfoQ:您现在在亚马逊领导开源工作,同时也是AWS的开源布道师,您如何看待开源的重要性?能否介绍一下亚马逊的开源战略?
Adrian:开源非常重要,我们能看到现在主要流行的一些产品和服务基本上都是基于开源平台来开发的,并且越来越多的产品和服务都在这样做。以机器学习的主流框架为例,基本上全都是开源的,没有非开源的。因此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云平台到现在已经过去了,您认为现在的技术有根本的不同或更好吗? 与前相比,今天的云计算领域发生了什么变化?
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)。