节约架构 (The Frugal Architect) 的七大原则
2024年1月27日
上周读到台大资工系的Shih-Hao Hung 教授分享的贴文,谈到「失传的技艺」,该贴文是延续 ITHome 的主题报导,该主题报导摘要了 Amazon 技术长 Werner Vogels 的演讲,并提到「在云端运算资源垂手可得的今日,虽然传统硬体的限制越来越少了,软体开发人员可以更聚焦在功能创新与更快推出上市,但也因此忽略成本效益的重要性,有鉴于重视成本效益几乎已成失传的技艺,亚马逊技术长提出节约架构设计法则,呼吁将成本意识纳入软体架构设计,进而达成永续目标。」
Shih-Hao Hung 教授谈到「用白话来说,如今许多软体开发者只想用现成的、易用的框架快速打造应用,忽视系统的成本与效率,而且长期如此,会造成严重的资源浪费,当然会影响盈利。」
并接着说「我常告诉学生,我们做系统效能优化的,只要愿意好好学,不断累积知识和经验,会越做越得心应手。想入门的学生,要先学好计算机结构和作业系统,并且了解实际系统,借此建立『设计』的基础和成本的概念,才有能力改进原有的设计;其次是动手在实际系统或是模拟器上利用工具『量测』效能之后,洞悉效能的瓶颈,才能遂行第三阶段的『最佳化』」
关于在做设计与开发时,把成本放在脑中,Amazon 技术长 Werner Vogels 其实有出了一个 The Frugal Architect,谈七个简单但有用的原则,因为篇幅缘故,这边翻译前三个让大家参考。
[原文在这]原则ㄧ:将成本视为一种非功能性需求
非功能性需求定义用来评估系统运作的标准,而不是具体特定的功能。常见的例子包括无障碍性、可用性、可扩展性、安全性、可移植性、可维护性以及合规性。然而,其中经常被忽略的是:成本。
许多公司因忽略成本考量,从设计、开发到运营阶段都失衡,或是缺乏适切的成本衡量机制,最终走向失败。这道理再简单不过: 如果成本高于营收,营运的永续就会有风险。
从最开始就持续将成本纳入考量,可协助系统在功能、上线时效和效率之间取得平衡。开发阶段能聚焦于精简高效的代码,运营阶段则能微调资源使用和支出,以最大化盈利。
原则二:能永续经营的系统,在成本与商业模式上需要相互契合
一个系统的持久性取决于其成本与商业模式的契合程度。在设计和建构系统时,我们必须考虑收益来源和利润杠杆。找出关键的获利指标,然后确保系统架构与其相辅相成,这至关重要。
例如,在电子商务中,关键指标可能是订单数量。订单增加时,基础设施和运营成本也会上升。但这没关系,因为如果系统的架构良好,您可以开始利用规模经济的优势。重要的是,基础设施成本对业务要有可衡量的影响。
作为系统的建构者,我们需要考虑收益,并利用这些知识来指引我们的选择。因为不计成本的增长只会带来一系列的破坏。
原则三:架构是一系列的取舍
在架构的世界里,每个决策是权衡与取舍。成本、韧性、效能等非功能性需求之间,往往互相角力。
俗话说「世上没有永不失灵的事物,一切皆有可能在任何时候出状况」,提高系统的容错能力,意味着需要在韧性上做额外的投资,而这往往会影响系统的效能表现。
因此,技术与业务需求之间,找到最佳平衡点至关重要。这个平衡点需要考虑风险承受能力和预算等因素。请记住,节约是寻求最大化价值,而非一味地降低成本。做到这一点,就需要明确界定你愿意为哪些方面付出多少代价。
阅读完整内容
The Frugal Architect 的完整七个原则,我们有完整翻译放在E+ 工程师成长计画 的《Amazon 技术长谈 The Frugal Architect 的七个原则》一文当中,有订阅 E+ 的读者可以看到