亚马逊的云原生故事

管理员账号

2018-10-10

从 20 世纪 90 年代初开始,经过 20 年的发展,总部设在西雅图的亚马逊已经从网络书店成长为世界上最大的在线零售商。

今天,它就像著名的“亚马逊河”一样,销售的东西远不仅仅是书籍了。在 2015 年,亚马逊超过了沃尔玛成为美国最有价值的零售商。

在亚马逊耀眼的成长故事中,最有趣的一部分可以简单地归纳成一个问题:作为一个简单的在线书店网站,在没有设立任何零售网点的前提下,是如何成为世界上最大的零售商之一的?

不难看出,商业世界在全球各地不断增长的互联网推动力下,围绕着数字连接进行着转变和重塑。随着个人电脑变得越来越小,变成了今天人们随时随地使用的智能手机、平板电脑和智能手表,我们经历了销售渠道的指数级增长,这正在改变世界的商业方式。

亚马逊的首席技术官 Werner Vogels,见证了亚马逊从一个非常成功的在线书店,到世界上最有价值公司和零售商之一的技术演进。

Werner Vogels

2006 年 6 月,Vogels 在计算机杂志 ACMQueue 上接受了一段关于技术选型演进如何驱动亚马逊快速增长的采访。在采访中,Vogels 谈及了其背后的核心驱动力。

亚马逊技术演进的很大一部分原因是为了实现持续的增长,在实现超大规模的同时保持可用性和性能。

Vogels 说,亚马逊为了实现超大规模,必须向不同的软件架构模式迁移。他提到亚马逊开始是一个单体应用程序。随着时间的推移,越来越多的团队在同一应用程序中运行代码,代码库的所有权界限也开始变得模糊。
“没有隔离的结果,就是没有清晰的所有权。”

Vogels 指出,共享资源(例如数据库)使得整体业务难以扩展。无论是应用程序服务器还是数据库,共享资源的数量越多,团队对功能上线时的控制就越少。

你建立它,你运行它。

Vogels 谈及了云原生应用程序的本质:

团队对所构建的代码全权负责。他继续说:“在传统的模式下,开发和运维之间是隔离的,你把软件往他们中间一扔就不管了。但是在亚马逊,你建立它,你运行它。”

在曾经世界首屈一指的软件大会上,由主要发言人发表的最重要的引用之一就是“你建立它,你运行它”。这个词已经成为我们今天所熟知的一个 DevOps 流行语。

Vogels 在 2006 年谈到的许多做法,已经成为了如今蓬勃发展的流行软件运动的种子。DevOps 和微服务等实践活动可以与 Vogels 在十年前提出的想法相互印证。虽然像亚马逊这样的大型互联网公司正在开发类似的工具,但这些工具需要许多年的开发才能成熟到对外提供服务。

亚马逊 2006 年推出了名为 Amazon Web Services(AWS)的新产品。 AWS 背后的想法是提供一个平台,同亚马逊内部使用的平台一样,并将其作为服务向公众发布。亚马逊希望将这个平台背后的想法和工具商品化。Vogels 提出的许多想法已经被应用到Amazon.com 平台中。通过将平台作为服务向公众发布,亚马逊进入了一个称为公有云的新市场。

公有云背后的想法是很好的。用户可以按需配置虚拟资源,而无须担心基础架构。开发人员可以简单地租用虚拟机来运行他们的应用程序,而无须购买或管理基础设施。这是一种低风险的自助服务形式,有助于增加公有云的吸引力,也让 AWS 在行业中领先一步。

AWS 花了几年时间,才让构建公有云上服务和模式的方法变得成熟。虽然许多开发人员通过这些服务来构建新的应用程序,但是许多现存公司仍然最关心迁移的问题。之前的应用程序不是为了便携性而设计的。此外,许多应用程序仍然依赖于与公有云不兼容的遗留功能。

为了让大多数大公司能够使用公有云,他们需要改变开发应用程序的方式,而这就是云原生梦开始的地方。

本文选自《云原生Java:Spring Boot、Spring Cloud与Cloud Foundry弹性系统设计》

不紧不慢,云原生越走越近,跨过观望期,开始进入试用区间。本书是原理与实践相当益彰的典范,概念陌生者可以藉由其中娓娓道来的历史沿革而由底至顶理解Cloud Native,跃跃欲试者则可按图索骥,沿着专家铺就的blueprint一路狂飙。跟随本书,让你从此驾云有方。

读者评论

相关专题

相关博文

  • (三)spring cloud云服务架构代码结构详细讲解

    Omaye 2017-11-28

    上一篇我们介绍了spring cloud云服务架构 - particle云架构代码结构,简单的按照几个大的部分去构建代码模块,让我们来回顾一下: 第一部分: 针对于普通服务的基础框架封装(entity、dao、service、co...

    Omaye 2017-11-28
    497 1 4 4
  • Spring Cloud构建微服务架构—服务消费基础

    醜人 2017-11-14

    使用LoadBalancerClient 在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的...

    醜人 2017-11-14
    73 1 2 2
  • Spring Cloud构建微服务架构—配置中心

    醜人 2017-11-17

    Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务...

    醜人 2017-11-17
    185 2 2 2