Dapr 助力應用架構的可持續性

image

在文章亞馬遜可持續軟體工程實踐[1] 有這麼一段我們為什麼要關注「可持續發展」:

聯合國於 2015 年制定了一個全球框架《巴黎協定》[2],隨後各締約國紛紛制定了「碳中和」路徑和目標,對地球環境的健康發展做出承諾。今年兩會,中國也將「碳中和」和「碳達峰」寫入政府工作報告,目標在 2030 年前實現「碳達峰」,2060 年前實現「碳中和」。毋庸置疑,可持續發展已經成為不言而喻的社會共識。但在社會共識之下,還需要個人、企業、政府等各類社會主體的參與——其中體量龐大的科技企業是至關重要的參與者。

在探討應用程式的碳足跡時,我們通常應該考慮兩個角度。運行它使用了多少能量(即內核數量、執行時間、硬體效率等)以及產生多少能量對環境產生了影響,這稱為碳強度,取決於位置、時間和數據中心使用的能源類型(天然氣、煤炭、風能等)。2016 年的一項研究證明,大約 55% 的消耗能源取決於計算系統,其餘 45% 用於支援計算(冷卻、UPS 等)。

2020 年標誌著 IT 界開始形成全球共識:軟體和應用程式具有必須考慮的足跡,並且正在開發演算法來評估這些足跡[3]。我最近一直在探索 Dapr 的創新,這是一個為分散式應用程式運行時創建的開源項目,目前是CNCF的孵化項目,項目官網://dapr.io/。根據其主頁介紹,「Dapr 是一個可移植的、事件驅動的運行時,它使任何開發人員都可以輕鬆構建在雲和邊緣上運行的彈性、無狀態和有狀態的應用程式,並包含語言和開發人員框架的多樣性。」  Dapr 的主要夢幻般的特性確實是其實現的簡單性以及跨任何程式語言、框架和基礎架構工作的能力,它促使開發人員在接近他們的軟體架構時更容易開始考慮IT可持續性。我們從三個方面來談談Dapr 在可持續性方面給開發人員帶來的方便。

首先是Dapr 助力應用程式衡量自身的碳排放。在分散式解決方案中,我們通常可以有幾種不同的基礎設施環境和程式語言。理想情況下,這應該通過一個專用的微服務來完成,該微服務可以持續監控每種能源的碳排放,並且能夠為應用程式的其他部分提供這些資訊。Dapr 在衡量其基礎設施的性能影響方面非常精確,並就如何衡量採用 Dapr 的微服務所使用的性能提供了指導。正如Dapr文檔[6]中提到的,有一些方法可以檢索 CPU 和記憶體使用情況,這有助於消除總體碳影響。此外,以遞歸方式,此微服務還應監控其自身的碳排放。

第二點是Dapr 助力應用程式通過控制其 IaC(基礎設施即程式碼)來驅動/改變其碳排放,碳排放並不是一個固定的數量,並且很大程度上取決於基礎設施所在數據中心的能源狀況,因此應用程式可以具有自動化,觸發全部或部分基礎設施向影響較小的站點或區域移動。對於某些地區來說,這可能不是立竿見影的,甚至是不可行的(例如需要考慮數據主權和延遲),但在適用的情況下, 分散式應用程式的高度優化的可持續基礎設施,可以保證在影響較小的環境中運行基礎設施(出於同樣的原因,可能是最便宜的),Dapr 非常容易就可以做到環境的適應性。從目前全球情況來看,亞馬遜、Google、微軟這三家世界級科技巨頭引領了「綠色雲」改造。亞馬遜表示將提前十年達成《巴黎協定》,並在 2025 年實現 100% 可再生能源。並且還成立了 20 億美元的氣候承諾基金,投資那些能幫助亞馬遜達成目標的公司。Google大膽承諾,到 2030 年實現數據中心全天候無碳運行,而不是依靠每年的直接能源匹配。微軟(Microsoft)自 2012 年起實現碳中和,並承諾通過電力購買協議,到 2025 年實現數據中心完全使用可再生能源。而在中國,互聯網科技企業也都在不斷加大力量投入到碳中和改造中。今年 8 月國際環保組織綠色和平(Greenpeace)發布了中國科技巨頭《綠色雲端2021》[5]排行榜,從能源資訊披露、節能減碳表現、可再生能源方面合梳理了中國互聯網科技企業的氣候行動,相比去年,中國互聯網科技企業整體平均得分上升 11%。

第三點是Dapr 助力應用程式根據用戶行為驅動/改變其碳排放影響,應用程式可以根據功能的碳排放提供不同級別的功能,並根據功能的影響級別提供多樣化的用戶體驗,將知情權選擇留給最終用戶。有更多的空閑時間嗎?你為什麼不試試這個稍微高一點的延遲水平,通過使用更環保的基礎設施來節省 xx% 的碳?你真的需要載入所有高解析度圖片嗎?等等。這顯然會在編程方面帶來一些開銷,但其執行的美妙之處在於應用程式將定義並教育最終用戶對其影響發表意見,並且在一段時間後通過監控用戶所做的選擇,您還可以擁有關於他們希望如何與您的軟體交互的回饋。隨著時間的推移,您將清楚地了解哪種組合可以更好地平衡性能和節能。Dapr 偏愛非同步架構模式,尤其是依賴於微服務之間的發布/訂閱交互。通過向外擴展和向內擴展來處理請求,可以在對用戶需求的動態響應和對我們希望為工作負載提供的資源的控制之間實現最佳折衷。

IT可持續性是我們在設計應用程式時必須開始考慮的工作了,優化工作負載以提高利用率,我們可以分散定時任務,降低負載峰值,達到調整 CPU 使用效率的目的。 重要的是,優化並不是只考慮某一個地方就可以,需要我們在架構和系統層面去思考,每位開發者都可以從現在開始去理解「可持續性」相關的術語和原則,在工作中尋找優化負載的機會。Dapr 在架構和系統層面為我們設計 可持續的應用程式提供了秘密武器。

[1]亞馬遜可持續軟體工程實踐: //www.infoq.cn/article/9dIy3T8NEmohhPU9QFe2 

[2]巴黎協定://zh.wikipedia.org/wiki/%E5%B7%B4%E9%BB%8E%E5%8D%94%E5%AE%9A

[3]綠色軟體工程原理: //principles.green/

[4] Dapr : //dapr.io/

[5]綠色雲端 ://www.eet-china.com/mp/a69760.html 

[6]服務調用性能: //docs.dapr.io/operations/performance-and-scalability/perf-service-invocation/

Tags: