云架构俭约之道七法则(The Frugal Architect)

news2024/11/23 3:06:58

在这里插入图片描述

文章目录

    • 一、前言
      • 关于 Law 与 Rule 的区别
    • 二、云架构俭约之道七法则
      • Design(设计方面)
        • Law 1:把成本作为非功能性需求
        • Law 2:可持续性系统需要将成本与业务相匹配
        • Law 3:架构设计是一系列权衡的取舍
      • Measure(评估方面)
        • Law 4:未被观察的系统导致未知的成本
        • Law 5:依托成本感知架构实现成本控制
      • Optimize(优化方面)
        • Law 6:成本优化是循序渐进的
        • Law 7:未经挑战的成功导致假设
    • 三、个人反思

一、前言

在今年 2023 亚马逊云科技的 re:Invent 大会中 Amazon.com 副总裁兼首席技术官 Werner Vogels 博士在主题演讲中,介绍了 The Frugal Architect(云架构俭约之道)这一架构设计法则理念。讲真的,当时并没有怎么上心点开这个视频,当看到这一部分的时候,突然一激灵,这一部分是我需要的,因为在过去的案例中深有感触,你的设计好坏,会影响很大的一部分成本,依稀还记得一个多服务的系统,在预估的时候,成本中心算下来要一千万花费,当时最头疼是客户显然很难接受,另外一个问题是我如何能够降低这个成本,完成最终的架构实施。

2004年Werner Vogels 加入亚马逊担任系统研究总监,2005年1月被任命为CTO和副总裁至今。

今年是Werner Vogels 第十二次在 re:lnvent 大会进行主讲。

Werner 凭借 20 年经验为技术专业提供了架构设计、衡量和优化方面的实用建议。他强调了技术领域的快速变化,呼吁持续学习。俭约不单指金钱,更关乎资源节约。科技进步和人工智能模型的更新带来了巨大的资源消耗挑战,必须引起高度重视。他认为成本是可持续性的近似衡量,这一点一直是他关注的焦点,也应成为大家的关注点。

Werner博士以荷兰文件传输服务公司 WeTransfer 的案例作为例证,该公司通过采用亚马逊云科技,成功降低了 2022 年服务器使用中的碳排放,减少了78%。这一改变源自他会上分享的七项黄金法则。

《The Frugal Architect》只有七页,每一页都突显了 Werner Vogels 想要强调的一项法则。这本书为架构师和开发者提供了关于架构设计、评估和优化的规范准则,形成了一份重要的教程。

在这里插入图片描述

在全球企业普遍强调“降本增效”的大环境下,《The Frugal Architect》的理念更显得及时。

关于 Law 与 Rule 的区别

注意:规则是人定的,但是他并不是死的硬性的规则,并且在 The Frugal Architect(云架构俭约之道)中这些规则被称为 Law(法则) 而不是 Rule

关于 Law 与 Rule 的区别,我觉得这里有必要提一下:

  • Law是万世不易四海皆准的真理,是天之律法;在中国古代那就是「经」。
  • Rule是人类制定的规则,是可以变动的,放中国古代那就是「纬」。

相对于 Rule,我们可以发现 Law 更接近本质,对常人(非理论革新者)来讲,Law 无法被推导,它处于理论或思维的原点,而 Rule 则常由一个或多个 Law 推导得出,其存在并非必须,我意思是说,前者只是后者体现出来的「现象」,如果没有 Rule,我们也可以由 Law 直接计算或推导得出,只是麻烦一些而已,但反过来要想由 Rule 得出相应的 Law 则是不可能的!

总之:可以理解为,Rule 是 Law 的现象,Law 是 Rule 的本质。

二、云架构俭约之道七法则

Design(设计方面)

Law 1:把成本作为非功能性需求

非功能性需求指定了可用于评判系统运作的标准,而不是具体的特性或功能。例如可访问性、可用性、可扩展性、安全性、可移植性、可维护性和合规性。经常被忽视的是成本。

在这里插入图片描述

公司之所以会失败,是因为他们在业务的各个阶段都没有考虑成本,从设计到开发再到运营,或者因为他们没有正确地衡量成本。数学很简单:如果成本高于收入,你的业务就面临风险。组织也需要将成本和可持续性视为非功能性要求。

通过早期和持续考虑成本影响,系统可以设计得平衡:特性、上市时间和效率。开发可以专注于保持精简高效的代码。而运营可以微调资源使用和支出,以最大化盈利能力。

核心要点:在设计架构的每一步都考虑成本因素

Law 2:可持续性系统需要将成本与业务相匹配

系统的可持续性取决于其成本与业务模式的良好匹配程度。在设计和构建系统时,我们必须考虑收入来源和利润点。重要的是找到你将从中获利的维度,然后确保架构符合这个盈利模式。

在这里插入图片描述

例如,在电子商务中,这个维度可能是订单数量。当订单增加时,基础设施和运营成本也会上升。这是可以接受的,因为如果你的系统架构良好,你就可以开始利用规模经济。重要的是基础设施成本对业务产生可衡量的影响。

作为建造者,我们需要思考收入,并利用这些知识来指导我们的选择。因为不顾一切成长会导致一连串的破坏,甚至是损失。

核心要点:偿还你的架构债

Law 3:架构设计是一系列权衡的取舍

在架构设计中,每个决策都伴随着权衡取舍。成本、弹性和性能是经常相互冲突的非功能性需求。

在这里插入图片描述

俗话说,“万物皆有可能失败。” 能够抵御失败意味着投资于弹性,但性能可能会付出代价。

找到技术和业务需求之间的合适平衡至关重要——找到符合风险承受能力和预算的最佳点。记住,节俭是关于最大化价值,而不仅仅是降低支出。为此,你需要确定愿意为什么付费。

核心要点:确立你的优先级

Measure(评估方面)

Law 4:未被观察的系统导致未知的成本

Werner 博士分享了一个阿姆斯特丹老房子的例子,将电表放在走廊上比藏在地下室的房子会使用更少的能源,其原因在于他们每天都可以看到能源消耗。

在这里插入图片描述

如果没有仔细的观察和测量,操作系统的真实成本将保持不可见。就像藏在地下室的公用事业计量器一样,缺乏可见性会导致浪费习惯。使计量器更加可见可以深刻地改变行为。

尽管观察需要投资,但不实施足够的监控是短视的。谚语警告说,“如果不能衡量它,就不能管理它。” 跟踪利用率、支出、错误等等对于成本管理至关重要。

当关键的成本指标置于工程师和他们的业务伙伴的核心位置时,更可持续的实践会自然而然地出现。持续的检查让你能够发现过度支出,并调整运营以削减开支。在可观测性方面的投资回报通常远远超过了开支。

最重要的是,将成本置于前沿可以鼓励可持续的实践。

核心要点:定义你的衡量单位

Law 5:依托成本感知架构实现成本控制

精简架构的本质是强大的监控与优化成本的能力相结合。良好设计的系统使你能够针对改进机会采取行动。为了实现这一目标,将应用程序分解为可调整的构建模块。

在这里插入图片描述

一种常见的方法是按重要性对组件进行分层。一级组件是至关重要的;无论成本如何都要进行优化。二级组件也很重要,但可以在不造成重大影响的情况下暂时降低规模。三级组件是“好有但不必须”的;让它们成本低廉且易于控制。

定义层级可以在成本和其他要求之间进行权衡。对组件的细粒度控制既优化了成本,又优化了用户体验。基础设施、编程语言、数据库都应该是可调整的。在架构和构建系统时要考虑收入和利润。成本优化必须是可衡量的,并与业务影响相关联。

核心要点:建立层级

Optimize(优化方面)

Law 6:成本优化是循序渐进的

成本效率的追求是一个持续的过程。即使在部署后,我们也必须重新审视系统,逐步改进优化。关键是不断质疑并深入探究。编程语言提供了性能分析工具来分析代码性能,虽然这些工具需要设置和专业知识,但它们能够进行细粒度的分析,从而导致可以减少毫秒级时间的变化。看似微小的优化在规模上积累起来会带来巨大的节省。

在这里插入图片描述

在运营中,大部分时间都花在运行现有系统上。有机会对资源使用进行分析,找出浪费并进行减少。在亚马逊,我们持续监控生产中的服务,以了解模式并修剪低效。节俭需要坚持不懈——通过逐步降低延迟和基础设施成本,我们可以优化提供服务的成本。

总是存在改进的空间……只要我们不断寻找。今天我们获得的节约为明天的创新提供了资金。

核心要点:持续优化

Law 7:未经挑战的成功导致假设

当软件团队在没有遇到重大失败或障碍的情况下取得重大成功时,就可能产生自满情绪。人们很容易过分自信于导致这些成功的方法、工具和实践。

在这里插入图片描述

软件团队经常陷入一种陷阱,就是假设他们当前的技术、架构或语言将永远是最佳选择,仅仅因为它们过去曾有效。这可能导致一种虚假的安全感,使人不愿质疑现状或探索可能更有效、更具成本效益或可扩展性的新选择。

在选择编程语言时经常会出现这种情况。“我们一直使用Java。”是我经常听到的一句话,它可能会扼杀创新。未经挑战的成功通过假设滋生了自满。我们必须始终寻求质疑、优化和改进的方法。

正如 Grace Hopper 所说,英语中最危险的短语之一是:“我们过去总是这样做。”

核心要点:证伪你曾相信的事情

三、个人反思

首先,看到像亚马逊这样庞大的公司的首席技术官在主题演讲中花了大量时间关注成本,这令人耳目一新(也令人惊讶)。随着公司努力在预算不断减少的情况下推动成功的产品创新,成本优化变得越来越重要,而上述一套可靠的原则将作为应对这些挑战的有用指南。

就我最同意的观点而言,最初的观点可能是最强烈的。在开发新产品时,成本不再处于次要地位。当你稍后考虑成本时,为时已晚,并且很难恢复早期未考虑成本的设计决策。我发现这在我们建设新管道的设计讨论中更多地被考虑在内,总的来说,人们似乎越来越关注成本,这是一件好事。

正确的架构都是关于权衡的,成本肯定会在决策中发挥作用。正确实施成本控制(第五法则)使这个过程变得更加简单。你的哪些组件是绝对不会出现故障的,哪些部分运行时间稍慢或偶尔出现故障是可以容忍的?了解这一点可以让你做出更好的成本驱动决策,例如使用按需实例与 Spot 实例、更容易出错的实例类型等。

适当的监控也很关键。虽然人们会从应用程序日志的角度考虑这一点,但不要忘记成本!正确标记所有资源并设置仪表板,并内置异常检测,以跟踪一段时间内的成本。 亚马逊云科技整合了计费和成本管理控制台,这使得你可以更轻松地在一个地方找到所需的一切。

成本优化是一个渐进的过程。虽然你总是想在一开始就考虑这一点,但障碍和挑战将会出现并迫使你转变方向。重要的是要牢记成本并继续将其作为决策过程的一部分。

最后但并非最不重要的一点是,质疑一切。良好的公司文化的标志是不仅允许而且鼓励这样做。你永远不知道什么时候你会发现事先没有考虑到的差距。

最后总结一下,Werner Vogels 在今年的 re:Invent 大会上分享了《The Frugal Architect》的架构设计法则。这些法则涵盖了关于成本、系统可持续性、权衡取舍、观察系统和成本优化的重要原则。他特别强调了将成本视为非功能性需求的重要性,以及对成本敏感的架构设计在实现成本控制方面的价值。而他的七项黄金法则不仅提供了技术层面的指导,更是对于技术人员应持续学习和不断优化的呼吁。这些法则不仅适用于技术架构,更关乎如何在一个不断变化的科技环境中保持敏锐和持续进步。

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

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

相关文章

Unity | 渡鸦避难所-2 | 搭建场景并添加碰撞器

1 规范项目结构 上期中在导入一系列的商店资源包后,Assets 目录已经变的混乱不堪 开发过程中,随着资源不断更新,遵循一定的项目结构和设计规范是非常必要的。这可以增加项目的可读性、维护性、扩展性以及提高团队协作效率 这里先做下简单的…

vivado约束方法2

排序约束条件 因为XDC约束是按顺序应用的,并且是基于明确的优先级排列的规则,您必须仔细检查约束的顺序。 Vivado IDE为您的设计提供了全面的可视性。要逐步验证约束,请执行以下操作: 1.运行相应的报告命令。 2.查看Tcl控制台…

微信小程序自定义提示框组件并使用插槽 tooltip

创建tooltip组件引用 创建一个自定义组件&#xff0c;例如命名为 tooltip tooltip.wxml&#xff1a;用于定义组件的结构&#xff1b; <!--components/tooltip/tooltip.wxml--> <view class"tooltip-wrapper" hidden"{{hidden}}" style"lef…

spingboot项目实战之若依框架创建新模块

前言 目前的脚手架系统很多&#xff0c;比较早接触诺依框架&#xff0c;以若依框架为参考如何创建新模块 步骤 1. 下载诺依框架&#xff0c;依照参考说明一步步&#xff0c;能做到系统运行起来。 2. 准备好mysql文件&#xff0c;创建新数据库表 3. 数据库管理工具navicat…

如何退回chrome旧版ui界面?关闭Chrome浏览器新 UI 界面

之前启用新UI的方式 Chrome 已经很久没有进行过大的样式修改&#xff0c;但近期在稳定分支中添加了新的 flags 实验性标志&#xff0c;带来了全新的设计与外观&#xff0c;启用方式如下&#xff1a; 在 Chrome 浏览器的搜索栏中输入并访问 chrome://flags 搜索“refresh 2023…

Leetcode 46 全排列

题意理解&#xff1a; 首先明确全排列是什么&#xff1f; 使用集合里所有的元素&#xff0c;使用不同的顺序进行排列&#xff0c;所有的排列集合即为全排列。 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 这里的元素不会…

《YOLOv8改进系列》专栏目录介绍

YOLOv8改进系列 &#x1f680; 专栏目录介绍 本专栏内容是紧跟最新、最前沿的改进方法&#xff0c;不仅适用检测任务&#xff0c;分类任务&#xff0c;分割任务&#xff0c;关键点任务同样适用。文章适用于多种场景&#xff0c;包括但不限于小目标、工业缺陷、轻量化等领域。 …

猫粮哪个牌子质量好性价比高?口碑比较好的主食冻干猫粮牌子推荐

猫咪生骨肉主食冻干猫粮喂养方式是越来越火了&#xff0c;作为一个离职的十年经验宠物护理师&#xff0c;对宠物健康营养方面的知识一直在研究&#xff0c;不光是为了我自己养的猫咪身体健康&#xff0c;也要为客户的猫咪健康负责&#xff01;现在很多养猫人士对主食冻干猫粮喂…

AE (3)_主观亮度和对比度调试

#灵感# 画面的亮度、对比度是最直接&#xff0c;观看者最先获得的感受。所以有必要花时间认真调整。 ------哈哈&#xff0c;虽然调试的时间其实不如磨清晰度多。 目录 举个图例&#xff1a; 三个参数AE、gamma、LTM&#xff1a; 调试顺序&#xff1a; 举个图例&#xff1…

beebox靶场A2 low级别身份验证通关教程

1. 断开的身份验证 - 验证码绕过 Broken Auth. - CAPTCHA Bypassing 打开burp抓包在页面上输入账号为bee 密码随便输&#xff0c;输入验证码开始抓包拦截&#xff0c; 发到重放器进行重放&#xff0c;发现只是一直提示密码错误&#xff0c;那证明只要不刷新页面验证码应该就不…

2023年第三届产业数字化【金铲奖】重磅来袭!

做具备产业数字化价值的企业、案例标杆、资本机构的见证者、发现者、陪伴者。 出品|产业家 一年一度的金铲奖来了&#xff01; 在过去的一年时间里&#xff0c;我们清晰地看到&#xff0c;产业数字化的潮水更加汹涌澎湃且势不可挡&#xff0c;越来越多的企业开始寻求数字化…

照片如何抠图换背景?分享三个一键抠图的方法

照片如何抠图换背景&#xff1f;通过使用一键抠图工具&#xff0c;您可以将图片中的主体从原始背景中分离出来&#xff0c;并将其放置在新的背景中。这种技术可以用于各种情况&#xff0c;例如在照片编辑中增加创意效果、改变照片的氛围或者为产品展示添加专业外观。通过抠图并…

LeetCode刷题--- 验证二叉搜索树

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 http://t.csdnimg.cn/ZxuNL个人专栏&#xff1a;力扣递归算法题 http://t.csdnimg.cn/ZxuNL 【C】 http://t.csdnimg.cn/c9twt 前言&#xff1a;这个专栏主要讲述递归递归、搜索与回溯算法&#x…

redis:一、面试题常见分类+缓存穿透的定义、解决方案、布隆过滤器的原理和误判现象、面试回答模板

redis面试题常见分类 缓存穿透 定义 缓存穿透是一种现象&#xff0c;引发这种现象的原因大概率是遭到了恶意攻击。具体就是查询一个一定不存在的数据&#xff0c;mysql查询不到数据也不会直接写入缓存&#xff0c;就会导致这个数据的每次请求都需要查DB&#xff0c;数据库压力…

ChatGLM3:打造更智能、更安全的代码解释器和工具使用体验

ChatGLM3 是由智谱AI训练的第三代大型语言模型&#xff0c;它不仅能理解和生成人类语言&#xff0c;还能执行代码、调用工具&#xff0c;并以 markdown 格式进行响应。为了提高用户体验&#xff0c;同时避免用户输入的注入攻击&#xff0c;ChatGLM3 采用了全新的对话格式。下载…

免费!视频下方人物(照片)介绍字幕制作pr字幕条模板素材

Premiere Pro模板&#xff0c;具有15个视频下方三分之一处添加人物介绍(图像)字幕pr字幕条模板素材下载。 适用于Premiere Pro 2019及以上版本。可以更改颜色更改样式。在视频的开头、中间和结尾使用。包括视频教程。不包括音乐。来自PR模板网&#xff1a;https://prmuban.com/…

el-table/avue-curd 相同列内容合并

1.效果 2.html 3.js spanMethod({ row, column, rowIndex }) {if (column.property deviceName) {if (rowIndex > 0 && row.deviceName this.data[rowIndex - 1].deviceName) {return {rowspan: 0,colspan: 1,};}let rowspan 1;for (let i rowIndex 1; i < …

conda的安装及使用 以pycharm 为例

下载 https://docs.conda.io/en/latest/miniconda.html 下载 window版本 74M且下着吧。 安装 一路next或agree &#xff0c;不同意人家也不会按装 。重要的是安装目录 让andconda当老大 pycharm的使用 创建项目时如下图选择 成功后进入项目的Terminal则如下图表示成功

macOS Sonoma 14.2RC(23C63)发布

系统介绍 黑果魏叔12 月 6 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 14.2 RC更新&#xff08;内部版本号&#xff1a;2323C633&#xff09;&#xff0c;本次更新距离上次发布隔了 49 天。 预计正式版会在下周到来。届时用户可以打开“设置”->“通用”->…

ATFX汇市:美联储12月利率决议来袭,或将连续第三次暂停加息

ATFX汇市&#xff1a;明日3:00&#xff0c;美联储将公布12月份利率决议结果&#xff0c;市场普遍预期联邦基金利率上限将维持在5.5%不变&#xff0c;美联储将连续第三次暂停加息。上周五公布的11月非农就业报告显示&#xff0c;新增非农就业人口19.9万人&#xff0c;远高于前值…