節約架構 (The Frugal Architect) 的七大原則
2024年1月26日
上週讀到台大資工系的 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+ 的讀者可以看到