2023亚马逊云科技 re:lnvent 进入第四天,**Amazon.com 副总裁兼首席技术官 Werner Vogels 博士**在主题演讲中,为我们带来了**云架构俭约之道(The Frugal Architect**)这一全新理念。**Werner 从他过往20年经验中摄取灵感,为架构师和构建者们提供了有关架构设计、衡量、优化的范本教程**。他表示:“作为技术人员,我们生活在一个变化如此之快的世界中,我们总是需要不断学习。请坐下来,拿出你的笔记本,从这一刻开始做笔记。”
![image.png](https://dev-media.amazoncloud.cn/cf3ed87d2d94470aaabcc35ecb092043_image.png "image.png")
**他指出,俭约之道的关键点不仅在于节省金钱成本,更重要的是节约资源**。而现在,技术发展与 AI 模型更新带来的大量资源消耗已经是一个亟待关注的问题。他说:“成本是可持续性的近似代理,这是我关注的问题,也应该是你们关注的问题。” Werner 博士引用了一家荷兰文件传输服务公司 WeTransfer 的例子,他们通过使用亚马逊云科技,在2022年实现了从服务器使用中减少78%的碳排放。而这一改变源自接下来讲到的七大黄金法则——Werner 博士从他20年来的架构经验讲起。
![image.png](https://dev-media.amazoncloud.cn/fbaa9ee8453d4588b4f35e0a11d3c4fb_image.png "image.png")
### **企业架构的七大黄金法则**
#### **法则一:把成本视作非功能性的需求**
**核心要点:在设计架构的每一步都考虑成本因素**
![image.png](https://dev-media.amazoncloud.cn/7343c651cfcb4dc1b32d7d83c93bd512_image.png "image.png")
在设计系统时,像安全、合规性和可访问性这样的事项是非功能性、不可谈判的要求。它们不会直接影响特定的特性或功能,但对系统的运行是必要的。
Werner 博士在演讲中分享道:“**组织也需要将成本和可持续性视为非功能性要求**。如果成本不是设计过程的一部分,组织就有可能面临成本超过收入的风险。”
**通过在早期阶段思考并持续考虑成本的影响,我们可以针对性地设计系统,以实现特性、上市时间和效率之间的平衡**。如此一来,开发团队可以专注于维护精益高效的代码。运营团队则可以微调资源使用和支出,以最大化盈利能力。
#### **法则二:可持续的系统是和业务充分共识成本的系统**
**核心要点:偿还你的架构债**
![image.png](https://dev-media.amazoncloud.cn/ae1455f640a342acbafe05e726795f9c_image.png "image.png")
**技术团队不应独自进行系统设计,而应在架构设计过程中与业务团队紧密合作,进行成本考量,并确认所使用的收入模型以及盈利维度**。遵循这一原则,就能够构建其遵循资金流的架构,并能够匹配相应的定价模型。
例如,在电子商务领域,一个关键维度可能是订单数量。随着订单数量的增加,基础设施和运营成本也会相应上升。然而,如果系统架构良好,就可以开始利用规模经济。重要的是,基础设施成本对业务的影响应该是可以衡量的。
**作为构建者,我们需要考虑收入,并利用这些知识来指导我们的选择**。因为不惜一切代价的增长会导致一系列的损失。
#### **法则三:在持续的取舍与权衡中搭建架构**
**核心要点:确立你的优先级**
![image.png](https://dev-media.amazoncloud.cn/157eebd406514bf08b0115378cf868b3_image.png "image.png")
在架构中,每个决策都伴随着一系列的权衡。**成本、弹性和性能是经常相互矛盾的非功能性需求。**
俗话说,“万事皆有不确定性” 。能够防御失败意味着需要投资于弹性,但同时性能可能会付出代价。**关键是要在技术和业务需求之间找到正确的平衡点,找到与您的风险容忍度和预算相一致的最佳点**。请记住,节俭是为了最大化价值,而不仅仅是最小化支出。为了做到这一点,您需要确定您愿意支付的费用。
##### **重磅发布 Amazon Management Console myApplications**
**通过提供全面的仪表板来监控和管理应用程序的成本、健康状况、安全性和性能**,增强了亚马逊云科技管理控制台的体验。
![image.png](https://dev-media.amazoncloud.cn/e72e25fb49ba460fac2e5a104046e04a_image.png "image.png")
##### **重磅发布 Amazon CloudWatch Application Signals**
**自动化工具和运营应用,旨在解决监控具有多个相互依赖服务的分布式系统的复杂性**。它提供了一个预构建的仪表板,可用于追踪关键应用程序业务指标,如请求量、可用性和延迟。
![image.png](https://dev-media.amazoncloud.cn/a4df7e0058ce4a4fa05410f5a23f4264_image.png "image.png")
#### **法则四:未观测到系统将带来未知成本**
**核心要点:定义你的衡量单位**
![image.png](https://dev-media.amazoncloud.cn/682da823444045198e1b3ba46e670a16_image.png "image.png")
Werner 博士分享了一个阿姆斯特丹老房子的例子,将电表放在走廊上比藏在地下室的房子会使用更少的能源,其原因在于他们每天都可以看到能源消耗。
换句话说,如果您不观测系统,就无从知道它们的成本。而当您了解每个级别的成本时,虽然观察需要投资,但当关键成本指标放在工程师和他们的业务伙伴的核心位置时,更可持续的实践会自然而然地出现。持续的检查会让您发现过度支出的问题,并调整操作以削减开支。**可观测性的投资回报通常远远超过成本。**
最重要的是,**将成本放在前面可以鼓励可持续的实践。**
#### **法则五:通过成本感知的架构,实施成本控制**
**核心要点:建立层级**
![image.png](https://dev-media.amazoncloud.cn/4db55d3ba41943179a7b6ad9143a730b_image.png "image.png")
**俭约云架构的本质是强大的监控和优化成本的能力**。设计良好的系统可以让您有进一步创建成本控制的机会。**常见的方法是按关键性分层组件**。第一层组件是必不可少的,无论成本如何,都要进行优化。第二层组件很重要,但可以在没有重大影响的情况下暂时缩小规模。第三层组件是是有效但非必要的,需易于控制且可以根据需要降低成本。
**定义层次结构可以在成本和其他要求之间进行权衡。对组件进行细粒度控制可以优化成本和体验**。基础设施、语言、数据库都应该是可调整的。以收入和利润为目标来设计和构建系统。成本优化必须是可衡量的,并与业务影响相关联。
#### **法则六:成本优化是渐进的**
**核心要点:持续优化**
![image.png](https://dev-media.amazoncloud.cn/0f7f31236412410a8485295761305af5_image.png "image.png")
**追求成本效率是一个持续的旅程**。即使在部署之后,我们也必须重新审视系统,以逐步改进优化,关键在于不断质疑和深入探究。编程语言提供了分析代码性能的分析工具,虽然这些工具需要设置和专业知识,但它们可以进行细粒度的分析,从而导致毫秒级的变化。看似微小的优化在规模上累积起来,可以节省大量的开支。
在运营中,可能存在大部分时间都花在运行现有系统上的情况。对资源使用情况进行分析,并识别浪费的机会较少。在亚马逊,我们不断监控生产中的服务,以了解模式并优化低效率。俭约需要坚持不懈——通过逐步减少服务延迟和基础设施成本,我们可以优化服务成本。
如果我们不断寻找,总会有改进的空间。我们今天节省下来的资金将为明天的创新提供资本。
#### **法则七:走出惯性,远离盲目**
**核心要点:证伪你曾相信的事情**
![image.png](https://dev-media.amazoncloud.cn/217311d5345640b49cb46e213dca3181_image.png "image.png")
当软件团队在未遭遇重大失败或阻碍的情况下取得显著成功时,他们可能会滋生出自满情绪。这是一种潜在的危险倾向,因为它可能导致团队成员对那些已取得成功的策略、工具和实践过于自信。
当涉及到编程语言时,软件团队常常容易陷入这样的误区,即他们假设当前使用的技术、架构或编程语言永远是最佳选择,仅仅因为它们在过去的表现良好。然而,这种心态可能会产生一种虚假的安全感,阻碍他们质疑现有的方法和探索新的选项,**我们必须始终寻找质疑、优化和改进的方法**。
正如 Grace Hopper 所说,英语中最危险的短语之一是:“我们一直都是这样做的。”这句话的危险性在于它阻碍了学习和改进。
### **新时代下的预测与见解**
“技术可以成为一种力量,”在 Werner 博士分享的第二篇章,他分享了像 Thorn、国际水稻研究所和 CergenX 这样的组织的故事,这些组织正在使用 AI 方案来解决现实中遇到的实际问题。这些“传统”的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)和人工智能技术正在为农业、行政和医疗领域做出重大贡献。**在新式 AI 层出不穷的时候,回归 “AI for Now” 和 “AI for Good” 的初心是这些场景中的核心关键点。**
这些努力激发了 Werner 博士的灵感,他开始创建一个有益的以放射学为重点的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)系统,通过脑出血扫描来识别中风,突出在这种医疗紧急情况下,时间的关键性。这个系统现在公开可用,名为“Explainable Intracranial Hemorrhage Detection for Radiologist Workflow Prioritization”,Werner 博士指出: “你应该记住,并不是所有的事情都需要用这些大语言模型来完成。人工智能只是做出预测,决策则要靠专业人士做出。”
这个系统的创建强调了 Werner 博士的重要观点“现在是成为构建者的最好时代。” **他将以 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) 为代表的系列 AI 开发者工具推向了聚光灯下,并鼓励构建者们“保持好奇,持续学习”,“如果我能做到,你也可以”**。这些工具可以作为开发者学习技术的起点,并协助正确配置功能以符合最佳实践。
![image.png](https://dev-media.amazoncloud.cn/bc86548b6761489b89b45b1835b83127_image.png "image.png")
##### **重磅发布 Amazon SageMaker Studio Code Editor**
**是 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio 中的一个完全托管的代码编辑器**,可以帮助您更轻松地编写、调试和部署[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)应用程序。
![image.png](https://dev-media.amazoncloud.cn/5839ea4330c54e59b35f423ab1e07b9d_image.png "image.png")
##### **重磅发布 Amazon Q in Code Catalyst and in your IDE**
**提供亚马逊云科技构建专家助手服务,集成接入 [Amazon CodeCatalyst](https://aws.amazon.com/cn/codecatalyst/?trk=cndc-detail) 和 IDE 中。**[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) 可以基于文字和从系统层面了解问题和过程,开发者可通过问题、调整、迭代方式使用 Q 来精细化构建每一段开发管道。
![image.png](https://dev-media.amazoncloud.cn/995bcb202013482fb2d988841492fee7_image.png "image.png")
##### **重磅发布 Amazon Application Composer in VS Code**
**提供可视化应用构建的基础设施即代码(IaC)服务**,可在 Visual StudioCode 中直接组合使用,通过交互构建器可以从初始草图开始创建可部署的代码。
![image.png](https://dev-media.amazoncloud.cn/0c6340adc87849219b178f171ca493bb_image.png "image.png")
最后,Werner 博士为参会者带来了一个特别的惊喜,而本场主题演讲也在现场开发者们的欢呼中落下帷幕。
##### **重磅发布 Amazon Inspector CI/CD Container Scanning**
**可支持 CI/CD 容器镜像安全扫描**。您可以使用集成开发工具直接从 CI/CD 管道中扫描容器镜像中的软件漏洞。
![image.png](https://dev-media.amazoncloud.cn/df57bea496274969809d9cb4b87bba99_image.png "image.png")
![image.png](https://dev-media.amazoncloud.cn/0914ad668be741a99870a94c7eb3ea15_image.png "image.png")
![开发者尾巴.gif](https://dev-media.amazoncloud.cn/7141fe5d5ef94c5ebb6881ed502f2ef5_%E5%BC%80%E5%8F%91%E8%80%85%E5%B0%BE%E5%B7%B4.gif "开发者尾巴.gif")