2024 亚马逊云科技re:Invent:Werner Vogels架构哲学,大道至简 六大经验助力架构优化

在2024亚马逊云科技re:Invent全球大会第四天的主题演讲中,亚马逊副总裁兼CTO Dr.Werner Vogels分享了 The Way of Simplexity,繁简之道,浓缩了Werner在亚马逊20年构建架构的经验。

Werner表示,复杂性总是会“悄无声息”地渗透进来,让系统变得更加复杂。复杂性本身是件好事,因为它意味着添加更多功能。所以“复杂性”并不是问题,而“管理复杂性”才是个问题。

历史悠久的"两个披萨团队",奠定繁简之道

早在30多年前,亚马逊老板在公司成立初期为他的团队制定了“两个披萨规则”,并认为较大的团队难以管理,并且可能会因责任越来越大而不堪重负,而一个小团队(大约 10 人左右)则确保员工团队的规模合适,以实现最高效率和生产力。

复杂性的本质

在2024亚马逊云科技re:Invent大会上,Werner开场视频讲述了世界上最大的存储系统之一Amazon S3的故事,以及通过Two-Pizza team工作法,保有高效创新的团队。“每年我都被大家的热情所感染”,Werner说自己参与过13次re:Invent大会,在2012年首届亚马逊云科技re:Invent大会上首次提出的“21世纪架构”的理念,今年——Werner引入了“繁简之道”(The Way of Simplexity)的概念:“要真正控制你的系统,你需要管理复杂性。”

Vogels认为,复杂性并非问题本身,而是如何管理复杂性至关重要。他提出两类复杂性:

  • 有意识的复杂性:随新功能需求而产生
  • 无意的复杂性:导致系统脆弱和低效

随时间变化,需求的扩展、安全等等需要解决的问题逐步积累,系统的复杂性就逐渐上升。“有意识的复杂性”是必要的,新功能需要与之匹配的系统规模。“无意的复杂性”就可能造成真正的问题,导致系统变得脆弱、低速。Werner说:首先要识别这两种复杂性。办法也很简单:警示信号有很多,如发布功能速度放缓、系统频繁升级、调试耗时、模式不一致等。那么如何管理复杂度?“保持可演进性”,Werner指出,“达尔文早已认识到,要成功形成一个复杂有机生物,唯一的方式就是无数次连续微小修正。”引用赫拉克利特的观点:世界处于不断的变迁之中。如果系统不持续演进,客户会认为公司的技术已经落伍。

可演进性:持续微小修正

Werner指出,构建可控演进的架构,是应对复杂性、生存下去的关键所在。

Amazon S3的发展历程是最佳例证:

  • 2006年启动时仅有6个微服务
  • 目前已发展到超过300个微服务
  • 团队从一开始就明确:一年后的架构将不同于初始设计

可演进性是一种长期策略,旨在应对复杂性的持续变化,而可维护性则是确保系统在短期内正常运行亚马逊云科技为Amazon S3持续添加新功能,却令客户几乎无感知其变化。

系统扩展看似简单,但随着内在复杂度增加,难度呈指数级上升。我们无法预测未来,但可以:

  • 设计灵活、可扩展的架构
  • 应对未知挑战
  • 需要远见卓识的技术规划
  • 不断打磨架构本身

**只有构建出能够以可控方式演进的系统架构,我们才能从容应对复杂性的持续变化,在保证系统核心价值的同时,不断融入创新,满足不断升级的需求。**这是科技巨头架构设计的核心,也是每个技术团队应该学习的宝贵经验。

模块化解耦:将复杂系统拆分

Werner以Amazon CloudWatch为例,Amazon CloudWatch作为亚马逊云科技的关键基础服务,其架构演进生动诠释了"去大化小"的设计理念:

随着系统不断扩展,Amazon CloudWatch每天处理成百上千亿的指标,其复杂性不断攀升。

亚马逊云科技的架构优化策略:

  • 将CloudWatch拆分为低耦合、高内聚的小组件
  • 定义清晰、规范的API接口
  • 提供简单的前端服务

"去大化小"的架构思路,将复杂的大系统分解为简单、灵活、可组合的微服务,这是应对复杂性的可演进路径。

微服务架构的关键特征:

  • 每个组件职责明确
  • 变更成本低
  • 可持续优化和演进
  • 能在关键时刻平滑过渡

面对新功能,有两种主要策略:

  1. 扩展现有代码
    • 开发速度快
    • 风险:增加系统复杂度
    • 可能产生"超级服务"
  2. 创建新微服务
    • 开发周期较长
    • 优点:保持服务复杂度可控
    • 架构更清晰、更具可扩展性

重点是在开发速度和系统可维护性之间寻求平衡。

组织与架构对齐,充分领悟领导力准则

亚马逊云科技副总裁及杰出工程师Andy Barfield登台加入Werner演讲,阐释了第三条经验。他表示,Amazon S3服务已经存在18年了,在构建越来越复杂系统的同时,必须承认,组织的复杂性与正在构建的软件一样复杂。

首先,成功的团队不能自满。即使一切顺利,你仍然需要时刻留意可能出现的问题,并不断提出质疑。正是这种“挑战现状、指出漏洞并找到问题”的精神,帮助保障Amazon S3的持久性。

第二,主人翁精神。交给团队一个问题,并赋予他们决策权和空间去解决它。领导者的职责是赋予团队决策权,同时保持一种紧迫感,帮助他们按时交付。

一方面要赋能团队,授权并信任他们;另一方面也要建立良好的问责机制,营造积极向上的文化氛围,推动持续改进。只有组织与技术架构相互匹配、相互支撑,才能真正释放团队的创新活力,攻克复杂性。

单元化架构:控制"爆炸范围"

Werner强调,管理复杂性的一个关键策略是采用基于单元的架构(Cell-based Architectures),即将系统拆分为更小、职责更明确的独立单元。这些单元比传统团队负责的部分更为细化,它们独立运作,能够精确地控制故障的影响范围——即所谓的“爆炸范围”。这意味着当某个单元发生故障或需要升级时,影响仅限于该单元本身,从而避免了连锁反应导致整个系统的瘫痪。

结合亚马逊的实际案例,Werner深入阐述了这一设计哲学。理想情况下,每个单元的设计应达到一个平衡点:既足够大以处理预期的最大工作负载,又足够小以便进行全面测试。这种权衡旨在确保单元长期维护的可靠性和安全性,同时尽量减少对客户体验的影响。单元化设计通过隔离故障影响,提高了系统的可靠性、弹性和安全性,使得单个单元更容易管理和演进。

配合云原生技术如容器和服务网格,单元化架构不仅降低了系统的整体复杂性,还最大限度地增强了系统的可靠性和弹性,确保为客户提供一致且优质的体验。其最佳实践在《What is a cell-based architecture》一文中有所详细描述

系统可预测性:降低不确定性

Werner指出,不确定性是管理复杂度的另一关键问题。不确定性通常很难处理,想象一下:你的任务是设计一个配置系统,但是现有系统的客户正在不断地重新配置他们的任务和参数,而且客户的数量级是数以百万计;这时,一种常见的方法是使用小规模事件驱动的体系结构,更改配置并存储在数据库中。每发送一个事件或队列,我们就相应调整系统。但如果这种情况持续发生,系统负载均衡所必须承担的重新配置的负载量,就会变得相当可怕。

但是,我们所采用是一种更简单的方法,将所有的调整存储在一个文件中,该文件包含一组固定的记录,负载均衡器在固定的循环中,每隔几秒钟从该文件中获取新的配置,并处理所有记录。此时重新配置就是完全可预测的,可简单地构建高度可预测系统,持续地从Amazon S3中取出一个文件,避免积压、瓶颈,自然而然地自我修复——这就是持续工作模式。

另一个利用持续工作模式的例子是Amazon Route53的健康检查。配置健康检查之后,无论节点是否可用,健康状况检查器只会定期推送出完整的配置文件到聚合器,聚合器合并所有请求,然后将其推送到一个更大的表中,并推送Amazon Route53。这就实现了不会每次都触发调整,只有当DNS请求到达并被解析到一组IP地址时,系统才会检查表中的记录。这样,系统就是高度可预测的。而这是特意设计出来的。化繁为简需要有意识地配置和调整,设计可预测的系统,以减少不确定性。

自动化:简化复杂重复流程

“自动化是另一条重要经验”,Werner说。有些过程需要人工参与,但对于大量功能而言,自动化是关键所在。Werner以安全领域为例,亚马逊云科技每天要处理超过1万亿次DNS请求,并且每天都会自动发现12.4多万个恶意域名——这是人工系统无法复制的自动化过程。因此,我们不应该问“我们应该自动化什么?”,而应该问的是“我们还有哪些没有自动化?”我们应该将一切无需判断决策的事务都自动化。

例如,客户可以使用Amazon Bedrock Serverless Agentic工作流程,创建智能化的票据分级系统。在这些系统中,针对特定用例场景训练的自主AI代理可以自行解决问题,在必要时才升级给人工处理。自动化是应对复杂性、提高效率的重要手段。当我们将大量重复性工作交给机器去执行时,不仅能极大降低人工操作的复杂度和出错率,还可以让人类的注意力集中在真正需要判断和创造的环节上。

精益求精-基于微秒级精准时钟,更进一步降低分布式系统复杂度

在分享全部六点繁简之道的经验后,Werner讲述了“复杂性的负担”,亚马逊云科技正在通过构建更简单、更高效的系统,帮助客户将自主构建系统的复杂性转移到亚马逊云科技云服务上来。他强调了亚马逊云科技CEO Matt Garman在主题演讲中发布的Amazon Aurora DSQL扩展功能这一典型案例,相比较于传统云数据库,它不仅消除了全球部署及资源管理的复杂度,更将跨区域强一致性和低延迟,以及全球同步时钟的复杂性转移给了云。

同时,Werner深入解读了Amazon Aurora DSQL背后的核心技术与逻辑,包括关键的繁简之道思路、从前端到存储的5级传输架构,以及打破了分布式系统时间无用论,微秒级时间精准同步的Amazon Time Sync Service。正是这一系列突破性的技术,为客户提供跨区域、强一致、低延迟的Amazon Aurora DSQL。

Werner说,时间可能是最根本的构建模块。亚马逊云科技的微秒级精准时钟和时间同步服务,将帮助客户显著降低复杂度。

社会责任的承担:NOW GO BUILD CTO Fellowship

在主题演讲的最后,Werner表示,作为科技从业者,“我们有责任帮助客户解决世界上最棘手的问题。”正是出于这一理念,去年他与救济技术组织(Tech To The Rescue)领导的AI for Changemakers组织以及亚马逊云科技社会责任团队合作,设立了“NOW GO BUILD CTO Fellowship”。该计划旨在支持那些利用人工智能和云计算推动积极变革的首席技术官们。

科技的力量是双刃剑,能造福世界,也可能带来不利影响。作为科技从业者,我们肩负着更大的社会责任。Werner呼吁,不要将科技孤立于社会之外,而是要主动以科技助力解决人类面临的种种挑战。“现在去构建”一个更美好的世界,正是科技人的终极使命!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Web 开发学习中:过滤器与 Ajax 异步请求

一、过滤器 Filter: 过滤器的概念与用途 在一个庞大的 Web 应用中,有许多资源需要受到保护或进行特定的预处理。过滤器就像是一位智能的守卫,站在资源的入口处,根据预先设定的规则,决定哪些请求可以顺利访问资源&…

ThinkPHP框架审计--基础

基础入门 搭建好thinkphp 查看版本方法,全局搜version 根据开发手册可以大致了解该框架的路由 例如访问url http://127.0.0.1:8094/index.php/index/index/index 对应代码位置 例如在代码下面添加新方法 那么访问这个方法的url就是 http://127.0.0.1:8094/index.…

浅谈Python库之‌Requests

一、‌Requests的介绍 Requests 是一个简单易用的 HTTP 库,用于发送各种 HTTP 请求。它由 Kenneth Reitz 创建,并广泛用于 Python 社区中。 二、‌Requests的特点 1、人性化的 API:简洁的接口使得编写请求代码变得简单直观。 2、跨平台&…

如何在vue中使用ECharts

一. 打开ECharts官网,点击快速入门 下面是ECharts官网的链接 https://echarts.apache.org/ 二.在vue中使用 1.首先先引入Echarts js文件 如下图,下面的第一张图片是官网的实现,第二章图片是我根据官网的实现 2.给ECharts 创建一个DOM容器 3. 使用ec…

网络原理之 IP 协议

目录 1. IP 协议报文格式 2. 网段划分 3. 地址管理 1) 动态分配 2) NAT 机制 (网络地址转换) 3) IPv6 4. 路由选择 1. IP 协议报文格式 IP 协议是网络层的重点协议。 网络层要做的事情,主要就是两方面: 1) 地址管理 制定一系列的规则&#xff…

HyperMesh CFD功能详解:后处理功能Part 2

Clips Clips 按钮包含两个工具。Box Clip用于空间上的裁剪,Scalar Clip可以根据物理量的范围裁剪。 示例:Box Clips 裁剪 示例:Scalar Clips 裁剪 通过裁剪,仅显示density范围是10~20的等值面 示例:显示效果控制 部分透…

Java项目实战II基于微信小程序的跑腿系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在快节奏的现代生活中&…

【机器学习与数据挖掘实战案例01】基于支持向量回归的市财政收入分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…

windows下nacos启动报错:java.lang.unsatisfiedLinkError: C:\USers\乱码AppData\xxx.dll

问题 看了许多别的帖子,大家都是因为缺少dll包,下载安装 Microsoft Visual C 2015 Redistributable 就可以。但我试过了不行。思来想去,之前正常的时候用的JDK版本是17,后面别的项目用1.8给切换回来了。然后尝试配置环境变量将JD…

JavaEE 【知识改变命运】03 多线程(3)

文章目录 多线程带来的风险-线程安全线程不安全的举例分析产出线程安全的原因:1.线程是抢占式的2. 多线程修改同一个变量(程序的要求)3. 原子性4. 内存可见性5. 指令重排序 总结线程安全问题产生的原因解决线程安全问题1. synchronized关键字…

并发在前端中的应用?

‌并发在前端中的应用主要体现在处理多个请求和优化页面加载速度方面‌。前端并发处理通常涉及在极短时间内发送多个数据请求,例如在页面渲染时同时请求多个数据。通过并发处理,可以显著减少页面加载时间,提升用户体验。 前端并发处理的具体…

【力扣】409.最长回文串

问题描述 思路解析 因为同时包含大小写字母,直接创建个ASCII表大小的桶来标记又因为是要回文子串,所以偶数个数的一定可以那么同时,对于出现奇数次数的,我没需要他们的次数-1,变为偶数,并且可以标记出现过…

计算机视觉在科学研究(数字化)中的实际应用

计算机视觉是一种利用计算机技术来解析和理解图像和视频的方法。.随着计算机技术的不断发展,计算机视觉被广泛应用于科学研究领域,为科学家提供了无限的可能。 一、生命科学领域 在生命科学领域,计算机视觉被广泛用于图像识别、分类和测量等…

springboot381银行客户管理系统(论文+源码)_kaic

摘 要 伴随着信息技术与互联网技术的不断发展,人们进到了一个新的信息化时代,传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须,提升管理高效率,各种各样管理管理体系应时而生,各个领域陆续进到…

JMX 组件架构即详解

JMX架构由三个主要组件构成: ‌MBeans(Managed Beans)‌:代表可管理的资源,是JMX的核心。MBean可以是Java类或接口,提供了管理操作的接口,如获取系统信息、设置参数等。‌MBeanServer‌&#x…

LLMs之ICL:《Bayesian scaling laws for in-context learning》翻译与解读

LLMs之ICL:《Bayesian scaling laws for in-context learning》翻译与解读 导读:这篇论文的核心议题是理解和建模大型语言模型(LLM)的上下文学习(ICL)能力。文章从贝叶斯学习的角度出发,提出了一…

基于单片机和测频法的频率计设计及proteus仿真

摘要: 传感器广泛应用在自动化测量中,该文利用 51 单片机 2 个 16 位定时器和测量频率中的测频法设计了测量方波的频率计,并用LCD1602 液晶显示频率、 proteus 仿真,测试结果表明设计思路正确、误差小。 关键词: 单片机;测频法;频率计; proteus 1 概述 传感器能感受到…

软件漏洞印象

软件漏洞印象 软件安全性检测 软件安全静态分析:学术界一度十分热衷的偏理论性方法软件漏洞动态挖掘,工程界普遍采用动态漏洞挖掘方式,即Fuzz技术,也称为模糊测试 漏洞利用 vs. 漏洞修复 对于已发现的软件漏洞 黑客会基于Meta…

计算机网络 —— HTTPS 协议

前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书? 2.中间人能否调…

定点数的乘除运算

原码一位乘法 乘积的符号由两个数的符号位异或而成。(不参与运算)被乘数和乘数均取绝对值参与运算,看作无符号数。乘数的最低位为Yn: 若Yn1,则部分积加上被乘数|x|,然后逻辑右移一位;若Yn0&…