圖片來源: 

Amazon

亞馬遜技術長Werner Vogels提出的節約架構(Frugal Architect),由三大類、七項軟體架構設計法則所組成,在第三部分談及架構與成本最佳化(Optimize),其中包含兩項法則。

首先,第六項法則-「成本最佳化是漸進的」,指出成本最佳化並非一蹴可幾,而是持續調整,逐步完善。Vogels表示,由於過往技術上的限制比較多,IT人員往往只能在較小的層面上持續修修補補,而這種從小地方逐步改善的作為,也讓他們練就了成本最佳化的能力。
但是,在運算資源容易取得的情況下,軟體開發團隊過於追逐速度,在快速開發之下,逐漸不再重視細節,然而一些不起眼的事情累積起來,就會造成很大的數位浪費。例如網站開發沒有重視檔案大小的問題,那麼使用者就有可能上傳解析度過高的照片或影片,而實際上對終端用戶體驗毫無助益卻徒增頻寬浪費;又或是開發人員為了方便,下班後不關閉測試環境的主機,讓它空轉浪費資源,而若有維持開機的必要,其實也可藉由縮減主機規格來降低成本與減少浪費。這些雖然都只是小事情,但若不加以重視,無形中就會造成很多隱藏的數位浪費。

至於軟體系統,則可透過應用程式效能分析(Profiling),以了解隱藏的數位浪費。Vogels表示,應用程式效能分析這項技術幾乎可說快要失傳了,但它卻是軟體持續最佳化的重要工具之一。他舉亞馬遜的某一項服務為例,效能分析讓他們發現網路通訊竟然占了整體耗能的四成以上,然而這個現象對該應用程式而言不合理,於是他們回頭檢視程式碼,才發現原來只是因為一個條件判斷陳述語法寫錯,經修改後耗能就降到三成以下。因此,要確保軟體系統沒有隱藏的數位浪費,就要持續進行效能分析與最佳化。

節約架構的最後一項、第七項法則:「無庸置疑的成功必將導致錯誤的臆斷」,如果軟體開發團隊未曾遭遇什麼困難就成功了,往往會因為複製過往成功經驗而埋下驕傲自滿的種子,無法持續精進與改善。Vogels以COBOL之母美國海軍准將Grace Hopper的名言:「英語中最危險的一句話就是:我們一直都是這樣做的。」提醒軟體開發團隊要打破技術本位的思維,以保持進步。

技術本位常見於軟體開發團隊固守擅長的程式語言,毫不考慮是否有更好的選擇,然而,殊不知程式語言也與成本效益有關。2017年有一項學術研究分析27種程式語言的能源消耗程度,發現C語言是其中最省電的程式語言,排名第二的是Rust,而Ruby的耗電量是C語言的69倍,Python的耗電量是C語言的75倍,分別排名倒數第三與倒數第二。Vogels指出,亞馬遜在開發Firecracker時就採用Rust,而S3後來也有很大的比例以Rust改寫,這除了考量成本與永續,還包括Rust的強型別、高效能與記憶體安全性等優點。

在演講最後,Vogels期許IT人員:「我們身處快速變動的時代,在不斷學習的同時,也要一直否定既有信念,把自我擺在一邊,重拾成本意識這個即將失傳的技藝,因為永續的需求已經如同一列貨運火車直駛而來,你既逃不掉,也不該逃避永續的趨勢,而在雲端架構中,從運算成本著手將會是最接近達成永續目標的作法。」他也說:「沒有人想要有限制,成本與永續固然會為軟體架構與營運帶來不少限制,然而創意往往就隨著突破這些限制而到來。」


節約架構 Frugal Architect

設計

I. 成本是必要的非功能性需求
II. 系統成本必須與公司獲利保持一致
III. 架構設計是一連串的權衡與取捨

量測

IV. 無法量測的系統必有隱藏的成本
V. 有成本意識的架構必有成本控制措施

最佳化

VI. 成本最佳化是漸進的
VII. 無庸置疑的成功必將導致錯誤的臆斷


 

熱門新聞

Advertisement