AWS的雲端架構框架-環境永續篇
可持續性層面側重於環境影響,尤其是能源消耗和能源效率,因為它們是架構師直接採取行動來減少資源使用的重要槓桿。而今有一堆的企業都在提倡的ESG(Environmental, Social, and Governance)也是AWS這一個層面所支援的.
在環境的永續的部分, AWS給了我們設計原則的概觀,最佳實踐以及在這個過程中我們需要回答的問題.
六個設計原則
AWS在雲端的環境永續層面上提出了六個設計原則,它們分別是:
- 理解我們對壞境的影響:衡量雲端上的系統服務的影響並為系統服務未來的影響建立模型。 包括所有影響來源,如客戶使用我們的產品所產生的影響,以及產品最終退役所產生的影響。 通過檢視每個工作單元所需的資源和碳排放量,將生產性輸出與雲端系統的總體影響進行比較。 使用這些資料來建立 KPI,評估在降低環境影響的同時還能有提高生產力的方法,並估計隨著時間的推移我們在系統服務的生命週期中所提議的變更帶來的影響。
- 訂定永續的目標:針對每個雲端上的系統,建立可長可久的目標,例如減少每個交易所需的運算和存儲資源。 模擬現有系統服務的可持續性改良的ROI,並為系統服務的擁有者提供投資於可長可久目標所需的資源。 規劃成長並建構我們的系統服務,以便業務的成長不會帶來太大的環境影響,以適當的單位衡量,例如每個使用者或每筆交易。 永續目標可幫助我們支援我們的企業或組織更廣泛的可持續發展目標、識別其迴歸並確定潛在改進區域的優先等級。
- 效率使用最大化:正確大小的系統服務並實施高效能的設計,以確保高使用率並最大程度地的提高底層硬體的能源效率。 由於每台主機的基本功耗,兩台以 30% 使用率運行的主機的效率低於一台以 60% 運行的主機。 同時,消除或最小化閒置資源、運算和存儲,以減少為系統服務供電所需的總耗量。
- 採用與適應更新的、更高效率的軟硬體產品:支持我們的合作夥伴和供應商進行的上游系統改良,以幫助我們減少雲端系統服務的影響。 持續監控和評估新的、更高效的軟硬體產品。 設計靈活性以允許快速使用新的高效技術。
- 使用託管服務:跨國的客戶群能有助於最大程度的使用資源,從而減少支援雲端系統所需的基礎設施數量。 例如,客戶可以通過將系統遷移到 AWS 並採用託管服務(例如用於serverless container的 Fargate)來分享電力和網路等常見資料中心組件的影響,AWS 負責資料中心的大規模運行並使其能高效運作。 使用有助於將影響降至最低的託管服務,例如使用 S3 lifecycle configuration或 EC2 Auto Scaling 將不常用到的資料自動移動到cold storage,來調整資源容量以滿足資源的需求。
- 減少雲端上的系統對下游系統的影響:減少使用我們的系統所需的能源或資源量。 減少或消除客戶升級其設備會用到我們的系統的需求。 使用device farms進行測試以了解預期的影響並與客戶進行實際測試以理解使用我們的系統的實際影響。
六個最佳實踐
它們分別是:
- 區域的選擇
- 使用者的行為模式
- 軟體與架構模式
- 資料模式
- 硬體模式
- 開發與部署流程
雲端的永續性是一項持續不斷的作業,主要關注我們系統服務所有組件的節能和效率,方法是從所運行的雲端資源中獲取最大效益並最大程度的減少系統所需的總體資源。 這項工作的範圍可以從最初選擇一種高效的開發語言、使用現代演算法、使用高效能的資料存儲技術、部署到正確大小和高效的運算單元,以及最大程度的減少永遠想要又快又好的終端客戶要用到昂貴硬體的需求。
區域選擇
根據組織的業務需求和永續目標,選擇我們要將系統服務放在哪一個區域。
以下問題是我們在考量環境永續層面時需要回答一些問題:
Q1: 我們怎麼選擇區域來達成組織的永續目標?
選擇AWS的區域是可再生能源和碳強度是低於其他區域。
使用者的行為模式
Q2: 我們如何利用使用者的行為模式達成永續性?
使用者使用我們的系統服務和其他資源的方式可以幫助我們確定實現永續發展目標的改進。 擴展基礎架構以持續匹配使用者的需求,並確保只部署讓使用者只會用到的最少資源。 讓系統的服務水準與使用者需求保持一致。 定位資源以限制使用者只使用他們需要的網路資源。 移除現有、未使用的資產或資源。 識別未使用的已建立的資源並停止產生這類不需要的資源。 為我們的團隊成員提供滿足其需求的設備,同時最大程度ㄉ的減少對環境永續性的影響。
隨著使用者的需求擴展基礎架構:識別使用率低下或沒有使用的時間,或擴展資源來容量不足並且提高使用效率。
使 系統的SLA 與永續性目標保持一致:定義和更新SLA(Service Level aggreements),例如可用性或資料保留期,以最大程度的減少支援系統運作時所需的資源數量,同時繼續滿足組織的業務要求。
停止未使用的資源建立和維護:分析應用程式資產(例如預定義的報告、資料集和靜態圖片)和數位資產的訪問模式,以識別冗餘、未充分利用和潛在的可以移除的資源。簡單的來說就是想盡辦法消除資源浪費同時又不會犧牲系統效能與承諾使用者的SLA.
針對使用者的地理位置優化系統服務的地理位置:分析網路訪問模式來確定我們的使用者從哪個地理位址連接我們的系統服務。選擇能夠減少使用者與系統服務地理距離所在的區域和服務,以減少支援系統服務所需的總體網路資源。
優化進行日常作業的團隊成員資源:優化提供給團隊成員的資源,以最大程度的減少永續性影響,同時支援他們的需求。例如,在使用率高的VDI上執行複雜的作業,例如rendering和compilation,而不是在使用率不高的高效能單一使用者系統上。
軟體與架構模式
Q3: 我們如何利用軟體和架構模式達成永續性?
實施用於執行運作平順和保持已部署資源的一致性高使用率的模式,以最大程度減少資源消耗。 由於使用者行為會隨著時間的推移而發生改變,組件可能會因缺乏使用而變得閒置。 修改模式和架構以整合未充分利用的組件,從而提高整體使用率。 淘汰不再需要的組件。 了解系統服務中組件的效能,並優化資源消耗最多的組件。
針對非同步和排程作業來優化軟體和架構:使用高效率的軟體設計和架構來最小化每個工作單元所需的平均資源。實施會讓組件使用率變得平均的機制,以減少各項作業之間的閒置資源並最大程度的減少負載來到高峰的影響。
刪除或重構(refactor)使用率低或沒用到的系統服務組件:監控系統的活動來識別因時間變化的各個組件資源使用率。移除未使用且不再需要的組件,並重構使用率低的組件,以減少資源浪費。
優化消耗最多時間或資源的代碼:監控系統服務活動來識別資源消耗最多的應用程式組件。優化在這些組件中運行的代碼,以最大程度的減少資源使用,同時提高效能。
優化對使用者設備的影響:了解使用者用於使用系統服務的設備、他們預期的產品生命週期以及更換這些設備的財務和永續性影響。實施軟體模式和架構,以最大程度的減少使用者更換設備和升級設備的需求。
使用最能支援資料訪問和存儲模式的軟體模式和架構:了解資料在系統服務中的使用方式、使用者怎麼用的、傳輸和存儲方式。選擇適合的技術以最大程度的減少資料處理和存儲要求。
資料模式
Q4: 我們如何利用資料模式達成永續性?
進行資料生命管理週期來減少支援系統服務所需的預先配置的存儲以及使用它所需要的資源。 理解我們的資料,並使用最能支援資料的業務價值及其使用方式的存儲技術和配置。 當需求減少時,將資料放置到更高效、效能更低的存儲體中,並刪除不再需要的資料。
進行資料分類政策:對資料進行分類以了解其對業務成果的重要性。使用這一類的資訊來確定何時可以將資料移動到更節能的存儲體或安全的刪除它。
資料訪問和存儲模式的技術:使用最能支援資料訪問和存儲方式的存儲體,以在支援系統服務的同時最大程度的減少資源配置。例如,SSD 比機械硬碟更耗能,並應該只用於會不斷存取的狀況下。對不常存取的資料使用節能的檔案等級的的存儲體。
用生命週期政策刪除不必要的資料:管理所有資料的生命週期並自動強制執行刪除的時間表,以最大程度的減少系統服務的總體存儲需求。
最大程度的減少block storage中的過度配置:為了最大程度的減少總體配置存儲,要建立具有適合系統大小的block storage。隨著資料的成長,使用彈性的儲存體,如EFS or S3,而無需調整連接到運算資源的EBS。
刪除不需要或冗餘的資料:僅在必要時複製資料以最大程度的減少總你存儲消耗。使用在file和block level刪除重複資料的備份技術。限制 RAID 的使用,除非需要滿足 SLA。
使用共享文件系統或object storage來放置公開資料:採用共享存儲和單一來源以避免資料重複並降低系統服務的總體存儲需求。只在有需求時從共享存儲體中獲取資料。分離未使用的volume以釋放資源。最大程度減少資料需要透過網路來移動。
只在我們的資料指無法重現時才備份資料:為了最大程度的減少存儲消耗,只備份具有業務價值或需要滿足合規性要求的資料。檢查備份策略並排除在資料恢復方案中沒有價值的暫時性儲存.
硬體模式
Q5: 我們的硬體管理和使用方式如何支援永續性目標?
尋找機會通過更改硬體管理實踐來減少系統服務的永續性影響。 最大程度的減少配置和部署所需的硬體數量,並為單一系統服務選擇最高效的硬體。
使用最少的硬體來滿足需求:使用雲端的功能,我們可以對系統服務進行頻繁的改版。根據我們的需求變化更新已部署的組件。
使用影響最小的instance type:持續追蹤新的insatnce type的發出並這一類的insatnce是具備效能改進,包括那些主要在支援特定系統(例如機器學習訓練和推理以及影音轉檔)的instance type。
使用託管服務:AWS負責託管服務中的硬體是維持高度的平均使用率和硬體的可持續性優化。使用託管服務將服務的永續性影響分配給使用這個硬體的所有租戶,從而減少我們單一企業的碳足跡的製造。
優化 GPU 的使用:GPU)可能是高功耗的來源,許多 GPU的系統是高度變動的,例如renderimg、transcoding以及機器學習訓練和建模。我們只在需要的時間內啟用 GPU ,並在不需要時自動停用它們,以最大程度的減少資源消耗。
開發與部署流程
Q6: 我們的開發和部署流程如何支援永續性發展目標?
尋找機會變更我們的開發、測試和部署實踐流程來減少對永續性的影響。
採用可以快速引入永續性改良的方法:在將可能的改良部署到生產環境之前對其進行測試和驗證。在計算改良的潛在未來效益時考慮測試成本。開發低成本的測試方法,以實現小型且快速的改良。
使我們的系統服務保持最新:最新的OS、libraries和應用程式可以提高系統效率,並更容易採用更高效能的技術。最新的軟體可能還包括更準確地衡量系統服務對永續性影響的功能,因為供應商提供的功能可以滿足他們自己的永續性目標。
提高構建環境的使用率:使用自動化和IaC,在只有需要時啟動pre-production環境,在不使用時將其關閉。一種常見的模式是安排與開發團隊成員的工作時間一致的可用時間段。休眠是一種有用的方式,可以保存狀態並只在需要時快速使資源上線。使用具有burst capacity的instance type(例如EC2的T系列)、Spot insatnce、彈性的資料庫服務、容器和其他技術,使開發和測試容量與資源使用保持一致。
使用託管設備群進行測試:託管設備群將硬體製造和資源使用的永續性影響分散到多個租戶。託管設備群提供多種設備類型,因此我們可以支援較舊、市場比較小的硬體,並避免不必要的設備升級對客戶的永續性影響。