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呼吁,不要将科技孤立于社会之外,而是要主动以科技助力解决人类面临的种种挑战。"现在去构建"一个更美好的世界,正是科技人的终极使命!

相关推荐
步步精BBJconn几秒前
步步精科技:专注信号连接器领域的技术革新
科技
ShenZhenDingYue1 分钟前
水下机器人:科技助力水下救援的新力量|鼎跃安全
科技·机器人·水下机器人·应急救援·水下救援·水下搜救
lucy153027510794 分钟前
【青牛科技】D2577——高效升压型DC-DC转换器,固定52KHz开关频率,可以提供最高3A 输出电流能力,具有低纹波,出色的线性调整率与负载调整率等特点
科技·单片机·智能家居·信号处理·工控主板·汽车音响
xcLeigh30 分钟前
ASP.NET|日常开发中连接Sqlite数据库详解
数据库·sqlite·asp.net
AI服务老曹32 分钟前
云、边、端分布式一体化计算架构,进行统一调度和统一监控的智慧物流开源了
人工智能·分布式·重构·架构·开源·音视频
跟着珅聪学java1 小时前
maven 创建父子项目教程
java·数据库·maven
老友@1 小时前
Spring Boot 配置多数据源并手动配置事务
数据库·spring boot·oracle·mybatis·事务管理
MongoDB 数据平台1 小时前
印闪网络:阿里云数据库MongoDB版助力金融科技出海企业降本增效
数据库·mongodb·阿里云
技术路上的苦行僧1 小时前
分布式专题(4)之MongoDB快速实战与基本原理
数据库·分布式·mongodb
studying_mmr1 小时前
MongoDB
数据库·mongodb