"新堆栈”的真实故事,一次又一次,是关于具有巨大服务器需求的公司如何受到现有架构无法满足这些需求的限制,如何为自己解决问题,然后转而将其解决方案转售给 剩下的世界。 我们多么快地忘记了最早的例子,但也许仍然是最好的,是亚马逊。

“如果你回到2001年,”亚马逊AWS产品管理高级经理Rob Brigham表示,“亚马逊零售网站是一个庞大的单体架构。”

布里格姆星期三在亚马逊举行的2015年拉斯维加斯发布会上发表了一个主要参与人数很多的主要舞台。 他随行的幻灯片显示了一个公认的“2001”单体,这次高耸于辉煌的华盛顿山湖旁边,可能就在附近。 他对亚马逊的历史时机或者他自己的历史时机的聪明才智只是嗤之以鼻。

“现在,不要误会我的意思。 它的架构分为多层,这些层中有很多组件,“Brigham继续说道。 “但他们都非常紧密地联系在一起,他们表现得像一个巨大的巨石。 现在,许多创业公司,甚至是大公司内部的项目,都是以这种方式开始的。 他们采取一体化的方法,因为它很快就能快速行动。 但随着时间的推移,随着该项目的成熟,随着您在其上添加更多开发人员,随着它的增长和代码库变得越来越大,架构变得越来越复杂,这个整体将为您的流程增加开销,而软件开发生命周期也是如此。 开始减速。“

Brigham提出了软件开发生命周期(SDLC)作为开发团队结构的主题 - 特别是,当处理像Amazon.com这样的单一应用程序在2001年面临的实质内容时,开发人员将彼此区分开来,将团队从最终目标中分离出来。他们真正革命性地解决这个问题的方法成为了导致云计算创建的原型之一(美国宇航局的星云项目是其中之一)。

Brigham还透露的是,原始Amazon.com的非常类似tarball的粘性激发了另一个革命性的概念:服务架构的解耦。也许亚马逊没有发明微服务,也许它不是敏捷方法的先驱。但进化并不总是首先在一个地方发生。有大量证据表明亚马逊确实主动提出了这些概念。

Brigham讲述了亚马逊工程团队的故事,该工程团队在2000年有一项艰巨的任务,即协调数百名开发人员的进程内更改,解决他们之间的所有冲突,将它们合并为一个版本,并生成等待的主版本要移入生产的队列。 “即使你有那么庞大的新版本,”他说,“它仍然会在这个交付渠道上增加很多开销。整个新的代码库需要重建。所有测试用例都需要重新运行,以确保没有任何冲动。然后你需要整个应用程序,并将它全部部署到你的完整生产车队。“

亚马逊的方法不是摆脱管道,而是简化它。该公司的持续部署工具 - CodeDeploy,CodePipeline和CodeCommit - 围绕真正的云原生Web应用程序构建,其中该管道的各个部分可以编写脚本并自动化。 Rob Brigham表示,从世纪之交开始,亚马逊制造的建筑和物流变化直接导致了它现在为开发团队提供的工具。

上个月,Pivotal工程师Rohit Kelapure在详细描述整体架构的分解中描述了SpringOne 2GX会议的记忆,亚马逊的Brigham将他和他的同事们如何“将其分开”与Amazon.com单体相关联面向服务的架构。

“我们完成了代码,并提取了功能单元,这些功能单元只用于一个目的,我们用网络服务接口包装了这些功能单元,”他说。例如,有一项服务在零售商的产品详细信息页面上呈现“购买”按钮。另一个人有结账时计算正确税的功能。

在它们创建时,这些单一用途的功能似乎很容易实现。但想象一下数百个开发团队,其中一些由当时的数十个开发人员组成(而不是更舒适的“两个比萨”大小,不超过八个),其简单,单一用途的功能必须合并在一起一周又一周......以及之后的月份,随着SDLC的结构变得更大更庞大。

解耦管道

单一功能问题的解决方案是创建一个规则,开发人员必须遵守该规则,这些功能只能通过自己的Web服务API与世界其他地方进行通信。 “这使我们能够创建一个非常高度分离的体系结构,”Brigham说,“只要这些服务符合标准的Web服务接口,这些服务就可以彼此独立地迭代而不需要任何协调。”

服务的去耦使创建第一个自动部署系统之一,与原型的大部分时间今天亚马逊提供的客户 - 适当命名的“阿波罗”它帮助引进管道模型亚马逊的文化,它可能是Brigham在会议中明智地应用了一些自由编辑,因为这个过程不可能很简单。

但他对这方面很直率:通过能够看到管道作为图形化的东西,具有大小和形状,亚马逊的工程师可以更加确定他们需要多少改变他们的流程。当然,它们可以实现自动化,但为什么要实现冗余自动化?

“我们仍然注意到代码更改要花费很长时间才能从开发人员签到,到生产中运行,客户可以使用它,”他说。 “因此,作为一家以数据为导向的公司,我们对此进行了研究。 我们测量了代码更改在整个部署生命周期中跨越多个团队所花费的时间。 当我们将这些数据相加,并查看结果,并查看平均花费的时间时,我们坦率地感到尴尬。 这大约是几个星期。“

打破这些行动有助于工程师意识到这个管道中段的顺序和排列导致了“死时间” - 没有发生任何事情的间隔。 这尤其发生在部门之间的人工交接之间 - 其个性化应该引入流程完整性的交接,但实际上,这导致了低效率,浪费的空间和长长的队列。

“对于像亚马逊这样以效率而自豪的公司 - 对于一家在我们的履行中心内使用机器人来移动实体商品的公司,一家希望使用无人机将包裹部署到您家门口的公司 - 您可以想象它有多疯狂, “他说,”我们在软件交付过程中使用人来传递这些虚拟位。“

Brigham的演讲引发了CodePipeline的演示,其中包括在部署管道中发生的事件的内联脚本,以及与Amazon和GitHub上的私有存储库的集成。 亚马逊在这一点上表示,它正在避免将开发商店锁定为亚马逊品牌的做事方式,这与其合作伙伴生态系统之外的一些人所说的相反。

在这一点上你可能会想到Rob Brigham正在向合唱团讲道,或者说他正在捕鱼以获得亚马逊应该为这个行业创造的一些应得的赞誉。 事实上,令人尴尬的是,虽然这可能是为了观众中的很多人并观看现场直播而承认,亚马逊2001年的故事是他们2015年的故事。

「微服务架构」亚马逊引领其自有微服务架构的原因相关推荐

  1. 苹果亚马逊同一天公布无损音质服务、 Google与Flutter、Snap 的 AR 战事等|Decode the Week...

     Decode the Week ≠音视频技术周刊  Credit:Si Ping /News Briefing.  苹果与亚马逊同一天公布无损音质服务  苹果公司宣布今年 6月 将无损音质引入 Ap ...

  2. 基于亚马逊云科技无服务器服务快速搭建电商平台——部署篇

    概览 受疫情影响消费者习惯发生改变,刺激了全球电商行业的快速发展.除了依托第三方电商平台将产品销售给消费者之外,企业通过品牌官网或者自有电商平台销售商品也是近几年电商领域快速发展的商业模式. 独立站电 ...

  3. 限时免费学习课程内容:亚马逊云科技云概念、亚马逊云科技服务、安全性、架构。

    AWS被广泛应用于外企和一些大厂,花30分钟学一学,以后面试益处多多.限时免费学习课程内容:亚马逊云科技云概念.亚马逊云科技服务.安全性.架构. 亚马逊云科技云从业者精要知识 开始观看   本课程面向 ...

  4. 亚马逊aws服务取消_亚马逊网络服务(AWS)

    亚马逊aws服务取消 Amazon Web Services (AWS) has been much a talk since more than a decade. The credit goes ...

  5. WirelessCar借助亚马逊云科技的安全服务,实现车端到云端的数据安全

    2022年7月18日亚马逊云科技宣布,全球领先的互联汽车服务提供商WirelessCar(维瑞联行)选择亚马逊云科技为首选云服务提供商,构建领先的互联汽车解决方案,打造全场景服务能力.借助亚马逊云科技 ...

  6. 每日新闻丨华为被拘留前员工再回应;亚马逊云发布量子计算服务Braket预览;硅谷“六巨头”10年避税超千亿美元...

    趋势洞察 工信部:前10月规模以上互联网业务收入9902亿元 同比增21% 工信部发布的数据显示,1-10月,我国规模以上互联网和相关服务企业完成业务收入9902亿元,同比增长21%,增速同比提高3个 ...

  7. 十周年探路云计算 亚马逊引领风向标

    作者|沐由 编辑|阿冒 2021年是亚马逊云科技成立的15周年,也是云计算诞生的15周年.自2006年亚马逊发布第一个云计算服务Amazon S3后,全球便迎来了云计算新时代.从云计算诞生到今天,亚马 ...

  8. 登录亚马逊显示内部服务器出错,亚马逊账号无法登录怎么办?是什么原因导致的?...

    原标题:亚马逊账号无法登录怎么办?是什么原因导致的? 大家在亚马逊开店的过程中是否有遇到账号登录不上的情况呢?亚马逊账号登录不上,如下图, 这是很多卖家会在论坛里问到的问题,很多卖家表示明明自己输入的 ...

  9. 文心一言云服务下周上线/ 亚马逊再裁9000人/ 首款GPT-4医用软件问世…今日更多新鲜事在此...

    日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大噶好,今天是3月21日星期二,打工人,勇敢冲(:з」∠) 科技圈又发生了哪些新鲜事,一起来和日报君看看- 亚马逊再裁员9000人 北京时间3月 ...

最新文章

  1. 单实例的写法最保险的写法应采用静态方式的预生成 ,不要用双重检查的懒汉模式等,JDK1.6之后加了volatile也要谨慎,需要考证是否解决这个问题
  2. 《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...
  3. リアルタイム3Dニャンニャン 汉化补丁
  4. 麻省理工Hadi Salman新作:ViT架构可以有效抵御图像补丁攻击
  5. mysql数据库整体备份和恢复_MySQL 数据库的备份和恢复
  6. linux 系统修复 启动盘,linux服务器系统盘坏且系统盘为软raid的修复方法
  7. HTTP, WWW-Authenticate, Authorization 验证授权 | Apache验证 | Python处理
  8. 目前3个最受欢迎的免费、开源文件加密软件评测
  9. JNI_编程技术__网文整理(中)
  10. spacy 英文模型下载_spaCy
  11. java写netcdf_[转]netcdf入门
  12. C#中使用DirectX实现视频播放
  13. C 学习笔记 —— 高级指针话题
  14. 企业搭建APP怎么正确选择云服务器配置?
  15. 【Rust日报】2020-10-02 移动操作系统SailfishOS支持Rust了
  16. 带你了解EMC——什么是EMC?
  17. Chrome密码导入
  18. python 使用 numpy 判断两个向量是否平行
  19. 电信百兆宽带使用攻略
  20. 阿里云云栖社区强烈推荐的十本经典机器学习相关书籍

热门文章

  1. java dwg文件_如何用java实现dwg的预览图?
  2. html百度站内搜索代码,百度站内搜索如何安装 百度站内搜索代码如何部署使用...
  3. python的数据类型包括内置的_python基础(三)-数据类型与内置方法1
  4. 墨画子卿第四章第2节:如意随心
  5. 运营笔记:微信推广运营的这些中肯建议,请收藏!
  6. body软件 human_Human body
  7. 多疗程40Hz tACS对阿尔茨海默病患者海马灌注的影响
  8. python超声成像_Python与医疗图像4
  9. 遥感知识-像元二分模型
  10. 试产机器发现元器件损毁 风险排查过程