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,一经查实,立即删除!

相关文章

ThinkPHP框架审计--基础

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

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

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

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

【力扣】409.最长回文串

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

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

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

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

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

软件漏洞印象

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

计算机网络 —— HTTPS 协议

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

定点数的乘除运算

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

数据挖掘:一、Weka软件的基本操作

实验目的和要求 了解Weka软件的使用 实验环境 Windows11 Weka3.8.6 实验内容与过程 实验内容 1、了解Weka使用的一般步骤 2、利用Weka,对数据集进行关联规则挖掘及数据分类 3、记录操作步骤、使用的数据、最终的结果 实验过程 首先打开weka下载官网,选择合适

【从零开始的LeetCode-算法】383. 赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入&#…

【第二十四周】从大语言模型到多模态大模型的发展

摘要 大语言模型(Large Language Model, LLM)是指一类基于深度学习的人工智能系统,它们被设计用来理解和生成自然语言。这些模型通常是在大量的文本数据上进行训练的,通过学习文本中的模式和结构,它们能够执行各种各样…

https ssl免费证书申请,自动续期,acme、certd

本文为个人笔记,方便自己需要时查阅,同时提供出来给大家作为免费ssl证书自动续签需求的一种参考 大部分免费证书的有效期仅有3个月,所以证书管理会涉及到自动续期管理的问题 一、acme证书 大佬们常用的证书证书申请管理方式,提…

【计算机网络】实验13:运输层端口

实验13 运输层端口 一、实验目的 本次实验旨在验证TCP和IP运输层端口号的作用,深入理解它们在网络通信中的重要性。通过实验,我将探讨端口号如何帮助区分不同的应用程序和服务,使得在同一台主机上能够同时运行多个网络服务而不发生冲突。此…

【Redis】Redis基础——Redis的安装及启动

一、初识Redis 1. 认识NoSQL 数据结构:对于SQL来说,表是有结构的,如字段约束、字段存储大小等。 关联性:SQL 的关联性体现在两张表之间可以通过外键,将两张表的数据关联查询出完整的数据。 查询方式: 2.…

ElK 8 收集 MySQL 慢查询日志并通过 ElastAlert2 告警至飞书

文章目录 1. 说明2. 启个 mysql3. 设置慢查询4. filebeat 设置5. 触发慢查询6. MySQL 告警至飞书 1. 说明 elk 版本:8.15.0 2. 启个 mysql docker-compose.yml 中 mysql: mysql:# restart: alwaysimage: mysql:8.0.27# ports:# - "3306:3306&q…