【开源访谈】AWS 云架构策略副总裁:开源 20 周年,独行快,众行远

h4cd 发布于 2018/10/15 17:42
阅读 2K+
收藏 3

2018 年,“开源(Open Source)”诞生的第 20 个年头。所谓开源,完整说法是开放源代码(Open Source Code),它是一种软件发布模式,简单地讲,发布者将软件的源代码公开,并且附带上相应的许可条款,其他人可以根据许可条款对该公开的源代码进行阅读、使用、修改、再开源与销售等操作。

在这 20 年里,软件领域因为开源的助力而发展飞快,各种开源基础设施、开发框架与具体的开源实用程序等软件如雨后春笋般不断出现,同时也各自在一代一代的开源维护中变得更加完善、壮大。“当下的技术领域,从飞向太阳的人造天体,到用于血管手术的纳米级机器人,哪一个地方没有用到开源软件?”,这一句话极言了开源的影响力。

在 9 月 20 日深圳 AWS Summit 上,AWS 架构策略副总裁 Adrian Cockcroft 分享了 AWS 在这些年围绕开源事业开展的一系列工作与所取得的成绩。我们在会场对他进行了采访,从他口中了解到了开源的奥秘与开源背景下当前诸如混沌工程与 Serverless 等新技术的发展情况。

世界还是开源的

“开源”标签最初是在 1998 年 2 月 3 日于加州山景城举行的一个会议上被提出的,这一天也被定义为了开源的生日,然而开源思想却可以追溯到更早。它起源于黑客文化,1984 年美国国家工程院院士 Richard Stallman 创造了 GNU(GNU’s Not Unix)计算机操作系统, GNU 的内容软件完全以自由的方式发布,用户可以进行自由复制、分发和改写,这标志着基于“自由软件”思想的操作系统首次实现。

GNU 的诞生拉开了开源运动的序幕,随后 GNU 不断发展,也有越来越多开发者加入到完善 GNU 衍生的 Emacs 等软件中来。1985 年, Richard Stallman 成立了自由软件基金会(FSF,Free Software Foundation)为开发 GNU 募集资金。1989 年,他又带头起草了 GNU GPL 软件使用许可条款,进一步完善了日后的“开源”规则,开源也逐渐从“野蛮生长”走向“有组织、有纪律、有文化……”。

到了 1991 年,Linus Torvalds 基于 GNU GPL 发布了 Linux 内核,后来的故事大家差不多都清楚了,随着 Linux 这位开源界超级巨星的出世,开源之路越走越好。开源软件现在已经无处不在,这些开源软件成为了各行各业基础设施的基本组成部分,同时它们也成为了推动创新的关键因素。

谈到开源,很容易联想到 Netflix,大名鼎鼎的 Netflix OSS 与 Hystrix、Zuul、Eureka 等项目都来自于它,它的开源贡献遍及了大数据、持续交付、通用运行时、数据持久化与 APM 等等领域。而谈到 Netflix 的开源,就不得不提到本文的主角,也就是此次的采访对象 Adrian Cockcroft,在加盟 AWS 之前,Adrian 就任职于 Netflix,他与开源的关系极为密切,并且建树颇丰

在 Netflix 的时候,Adrian 一手将公司带向了“云原生”架构,使 Netflix 开始转向云计算,并在日后成为该领域的巨头;与此同时 Netflix 积极参与到开源中,Adrian 创建并领导了 Netflix 的开源项目,由他一手打造的 Netflix OSS 平台,致力于解决大规模分布式系统的各类问题,它以前瞻的视野在架构上内化了 DevOps,使得各个使用该开源项目的公司构建的系统在可扩展性、可靠性、高效及高性能方面都有很好的表现,因此 Netflix OSS 也于 2015 年获得了 JAX 特别评审团奖。

在当年入职 AWS 之前,Adrian 感慨过“基础设施、软件包和服务现在就是 AWS + 开源工具”(The state of the art in infrastructure, software packages, and services is nowadays a combination of AWS and open source tools.),外人或许可以将这句话看作是他当年示好 AWS 的通关帖,但是其实 AWS 的意识与技术在业界领先,并且其提供的服务覆盖范围之广、受惠人群之众这点是毋庸置疑的,而鉴于开源的巨大影响力,他的这句话还是有一定道理的。

只是技术领域发展飞快,我们询问 Adrian 这句话放在今天如何,他回答得很果断,他认为当下这句话还是适用的。

Adrian 首先简单介绍了 AWS 在软件、基础设施等方面的成绩,随后关于开源方面,他解释:“你可以看到,当下最火热的趋势,包括机器学习和人工智能,它们底层的框架全都是开源的,现在的情况是大家都基于这些开源的框架在做甚至是商品化的产品的开发。”

确实,虽然开源也带来了一些问题,诸如代码安全、质量与版权等,并且也一直有反对开源的声音存在,但是在这场声势浩大的运动中,大部分公司企业、组织与个人还是积极投身于开源这样一个大环境中。

公司企业层面,IBM、Adobe、Red Hat、Canonical、Docker、HP、Oracle 与 Google 等对开源的贡献都不是一朝一夕、一点两点的。我们也看到微软这样的企业,从最初将开源视为敌对势力,在近几年却逐渐转身拥抱开源,甚至甘愿花 75 亿美元去收购开源界的另一位超级巨星 GitHub——全球最大的开源社区。值得注意的是,75 亿美元去收购一个开源平台,这本身就是对开源的肯定,也是开源当前发展得一时无两的铁证。

而目前支持开源的相关组织越来越多,规模也越变越大,并且社区生态也越来越好,包括但不限于以下这些:

  • 开放网络用户组,Open Network User Group (ONUG)
  • 开放容器倡议,Open Container Initiative (OCI) 
  • Linux 基金会,Linux Foundation
  • 云原生计算基金会,Cloud Native Computing Foundation(CNCF)
  • Open Source Initiative (OSI)
  • Apache 软件基金会,Apache Software Foundation(ASF)

更具体一点,Adrian 提供了一组由 Linux 基金会发布的数据,数据显示目前有超过 2300 万开源开发人员,超过 6400 万个 GitHub 代码库,开源代码量超过 41 亿行,每日新项目上线量达到 1100。这些数据背后是构成当下基础设施、软件包和服务的开源实质

所以在 Adrian 看来,当下他的“The state of the art in infrastructure, software packages, and services is nowadays a combination of AWS and open source tools”这句话并未过时。

为什么开源:独行快,众行远

分析了开源的影响,Adrian 也谈到了为什么开源会这样一步步“蚕食”着这个世界

Adrian 从他之前打造 Netflix 云原生架构的经历讲开:“当时我在 Netflix 要做的事情是打造一个以前并不存在的平台,然后把这个平台开源给整个行业,让它成为一个大家都使用的主流平台。”

当时的想法比较简单,Adrian 只是想把平台开放出来,让大家可以基于它做一些自己的开发。但是自那以后,“我们可以看到,你要再做类似的平台,一定是以开源这种方式进行的,不然根本就没戏”,Adrian 解释了开源的竞争力:“事实上,比如 AWS 有一个产品开发出来了,但是我们不开源,那么很快就会看到市面上有一个类似的产品被开源出来。这个时候就会出现竞争,大家会在这两个产品之间做选择。”

Adrian 补充了这个观点,他认为开不开源是对于产品的两种选择,当然都是有效的,在不考虑其它诸如产品能力等因素的情况下,如果选择开源的路线去走,那么事实上大家就都会去使用这一个产品而不是另起炉灶,而且基于这个开源的产品,更多的人也会做出更多的产品,那么说到底,其实大家就都只是最初开源的这个“大饼”上的一小块。“这样就达到了对于某类产品、甚至某个领域的‘控制权’,那么你的产品、你的公司也就会走得更远。

Adrian 将这总结成“独行快,众行远”:“独行固然会因为没有太多负担而走得更快,但是你想走得远,就应该一群人走。开源社区可能做事情速度会特别慢,比如你在开源一个项目之前会需要做许多文案工作,给使用者和开源贡献者非常明确的技术指引;同时开源也涉及到了专利版权等内容,这些都会拖慢开源的速度。但是因为是一群人走,所以大家会‘相互搀扶’,这其中也会产生各种各样的创新。”

开源下的技术新世界

Adrian 一直工作在技术发展前沿,本身对未来新生技术也非常痴迷,在开源这么一个大背景下,Adrian 和我们聊到了目前一些前沿技术的发展情况。

混沌工程、混沌架构

在分布式系统领域,其它工程实践不断追逐着速度与灵活性,而混沌工程(Chaos Engineering)却别树一帜地执着于降低系统的不确定性。混沌工程是指在生产环境的分布式系统中进行一些灾难试验,比如关掉某些区域的服务器、制造严重不平衡的流量,甚至是直接剪断电源传输线缆,以此来考验系统在动荡环境下的健壮性,从而增强对系统稳定运行的信心。简单地讲就是一种自动化、产品化、简化的灾备测试。它与以往的灾备最根本的区别在于“人工、手动”与“云端自动化”。

混沌工程的理念最初源自 Netflix,并且它还是 Adrian 领导下的架构团队中的一位工程师提出来的。

“2010 年的时候,我所管理的 Netflix 架构团队里边的一个工程师有一天突然有了一个关于自动化灾备测试的想法,他称之为“Chaos Monkey”(混沌猴子)。”

作为 Netflix 的对外布道师,Adrian 在当时做了大量的技术方面的演讲与博文的撰写等活动,把混沌工程的理念与相关技术向外推广。“随着相关工具的开源,不同公司都有了各自关于混沌工程的实践,并最终在 2011 年开始出现了实际的 Chaos Monkey 项目,并在之后不断衍生出 Latency、Janitor、Security Monkey 等各种猴子。”

Adrian 又解释,其实这一切还可以追溯到 2006 年,当年 AWS 的 CTO Werner Vogels 在 ACM 上发表了一篇介绍了亚马逊整体技术架构与服务模式的文章,而这些内容大大地影响了 Netflix。“Werner 最开始在 ACM 的这篇文章里发表的点子被 Netflix 采纳,所以就出来了混沌猴子的概念。”

“而 Werner 了解到了 Netflix 关于“猴子”的概念之后特别喜欢,于是在 2012 年的 re:Invent 大会上,他穿了一件定制的 T 恤进行演讲,衣服上就画了一只瞩目的猴子,这样一下子混沌猴子这个东西就火了起来。”

Adrian 去年做过关于混沌架构(Chaos Architecture)的演讲,他总结并具体解释了混沌架构的组成,包括四个层、两个团队和一个理念:

  • 四个层:基础设施、交换机制、应用程序和人
  • 两个团队:混沌工程团队与安全团队
  • 一个理念:建设性破坏。

采访中,Adrian 解释了“混沌工程”之于“混沌架构”,其实就是一套通用执行理论之于整体性的一套系统架构理论,前者关注“是什么”,后者聚焦于“怎么做”

“你看混沌架构里边就有一个混沌工程”,他打了一个比方:“你到商场里面坐电梯的时候,电梯里都有一个警示,说一旦发生火灾请不要使用电梯,要走紧急出口的通道。当你把这个消防避险的说明放到学校、医院等场景下,它还是可行的,同样具有指导意义。事实上大家在建筑方面有这样的消防避险指导,那在做软件系统工程的时候为什么就不能有同样的东西呢?混沌工程就是这样的一个‘指导’。而把场景切换到不同地方,就是‘混沌架构’的职责,我们去宣传混沌工程这么一种理念的时候,就需要把它结合到各个公司不同的场景中去,这就是从‘混沌工程’到‘混沌架构’的变化。”

关于混沌工程,Adrian 还指出,混沌工程的最佳实践是先把云系统建立起来,接着把猴子放进去进行测试,最后再把应用放进去,以这样一个顺序去操作,测试在猴子存在的情况之下,应用能不能够生存。但是当下很多人都做反了,他们先把应用在云上做好,然后再放猴子执行混沌工程,“如果是这样,那他们是做不了混沌工程的。”

此外,Adrian 将 2018 年称为混沌年,他在不久前的第一届混沌大会上也详细介绍了混沌工程的前世今生以及它的现状。

未来只需要 Serverless 化应用开发

云计算中的 Serverless 也是近几年的焦点,随着微服务架构、云、函数计算与大数据等技术的快速发展,目前 Serverless 正变得无处不在。

Adrian 认为如果现在要开始开发一个新的应用,一定要使用 Serverless 化来做,之后如果你在做的过程中发现这太难了,实在做不下去,那这时候再回到传统的容器方式去做。“现在我们在开发一个应用的时候,能够做 Serverless 化的部分我们就要逐渐把它的比例提高,在我看来,以后 Serverless 化就是唯一需要的一种应用开发方式,就这一种方式,最好不需要其它的。”

Adrian 对 Serverless 的乐观是源于他最近的见闻:“之前的 re:Invent 大会上我担任了一场黑客大赛的裁判,比赛要求 4 人组在 12 个小时内开发出一个应用。最后他们每个人都选择了 Serverless 的方式,并且在短时间内就开发出了非常复杂的应用。另外,也有很多人分享给我他们看到的 Serverless 化非常好的结果,比如原来需要几个月开发的复杂应用,使用 Serverless 方式几天就完成了。”

Adrian 解释 Serverless 化除了开发速度快之外,还有一方面的优势是运营成本低,他举了一个 Lambda 客户的例子,客户根本不知道使用 Lambda 的成本是多少,因为成本太低,跟其它开销一比,实在不值一提。

他说:“其实还有一些其它因素吧,但是这个东西很难用语言清晰地向别人传达,当下 Serverless 已经发展到了你可以直接跟质疑的人说‘你试用了一下就知道了’的地步。

云走向边缘

Adrian 在当天的演讲中比较了自己做数据中心和使用云计算的效果,结果显示它们的成本差别非常巨大,比如建构数据湖只要使用 S3 成本是很低的,如果自己使用云这样的成本去做数据中心,那是根本不可能的。Adrian 在采访中解释:“就是说云时代,市场现在已经存在着一个规模上的准入门槛,除非你一进来就有一个非常大的规模,否则你是没法和现有的大规模的云服务商去竞争的。”

他补充到:“事实上在欧美曾经有很多公司觉得,我也可以提供一个替代性的云服务,最后他们都放弃了,为什么呢?就是因为他们发现自己根本没法跟已有的云服务商竞争。”

另一方面,谈到云的发展,有一个逐渐普遍的观点是“随着 IoT 时代的不断发展,云将逐渐走向边缘,更多地下行去依靠边缘计算的能力”,前一阵子地平线创始人兼 CEO 余凯也表示了:PC 时代,所有的计算都是在 PC 进行“本地计算”;随着互联网发展,数据越来越往云端、中央上转,计算慢慢集中到了云端;而从移动互联网开始到现在物联网时代到来,更多的计算从云中央往边缘迁移的趋势已经逐渐显现

Adrian 认为云确实是在往边缘走,在往边缘下放一部分算力,包括 AWS 在内现在也在做一些边缘计算相关的东西。

“边缘计算”最早在 2003 年来源于知名 CDN 和云服务提供商 Akamai,最初应用于内容分发,它在更靠近实际用户的内容分发设备上负载更多算力,产生更快的网络服务响应,也卸载了一定网络流量。

随着 IoT 时代的到来,目前边缘计算主要在该领域快速发展,它可以在 IoT 边缘设备中完成一些计算而无需上传到云端,这大大提高了效率,也减轻了云的负载压力。同时由于更加靠近用户,还可以为用户提供更快的响应,可以直接在边缘端解决各种需求。

Adrian 解释到:“我们可以简单地把边缘计算理解成‘盒子里的云’,你可以把这个盒子放到任何一个地方,这个云部署就算完成了。像 AWS 的 Greengrass 解决方案,它可以让开发者在 IoT 设备上运行 Lambda 函数,实现边缘计算。而 Snowball Edge 使用了 Greengrass 方案,把 EC2 的服务器虚机放在 Snowball 里,达到不仅可以传输数据,还能承担本地处理和边缘计算工作负载的能力。”

嘉宾介绍

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)。

【注:此次采访中,AWS 首席云计算企业战略顾问张侠博士也补充了一些十分有价值的内容,特此表示感谢!】

加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部