Dapr 助力应用架构的可持续性
在文章亞馬遜可持續軟件工程實踐[1] 有這么一段我們為什么要關注“可持續發展”:
聯合國于 2015 年制定了一個全球框架《巴黎協定》[2],隨后各締約國紛紛制定了“碳中和”路徑和目標,對地球環境的健康發展做出承諾。今年兩會,中國也將“碳中和”和“碳達峰”寫入政府工作報告,目標在 2030 年前實現“碳達峰”,2060 年前實現“碳中和”。毋庸置疑,可持續發展已經成為不言而喻的社會共識。但在社會共識之下,還需要個人、企業、政府等各類社會主體的參與——其中體量龐大的科技企業是至關重要的參與者。
在探討應用程序的碳足跡時,我們通常應該考慮兩個角度。運行它使用了多少能量(即內核數量、執行時間、硬件效率等)以及產生多少能量對環境產生了影響,這稱為碳強度,取決于位置、時間和數據中心使用的能源類型(天然氣、煤炭、風能等)。2016 年的一項研究證明,大約 55% 的消耗能源取決于計算系統,其余 45% 用于支持計算(冷卻、UPS 等)。
2020 年標志著 IT 界開始形成全球共識:軟件和應用程序具有必須考慮的足跡,并且正在開發算法來評估這些足跡[3]。我最近一直在探索 Dapr 的創新,這是一個為分布式應用程序運行時創建的開源項目,目前是CNCF的孵化項目,項目官網:https://dapr.io/。根據其主頁介紹,“Dapr 是一個可移植的、事件驅動的運行時,它使任何開發人員都可以輕松構建在云和邊緣上運行的彈性、無狀態和有狀態的應用程序,并包含語言和開發人員框架的多樣性。”? Dapr 的主要夢幻般的特性確實是其實現的簡單性以及跨任何編程語言、框架和基礎架構工作的能力,它促使開發人員在接近他們的軟件架構時更容易開始考慮IT可持續性。我們從三個方面來談談Dapr 在可持續性方面給開發人員帶來的方便。
首先是Dapr 助力應用程序衡量自身的碳排放。在分布式解決方案中,我們通常可以有幾種不同的基礎設施環境和編程語言。理想情況下,這應該通過一個專用的微服務來完成,該微服務可以持續監控每種能源的碳排放,并且能夠為應用程序的其他部分提供這些信息。Dapr 在衡量其基礎設施的性能影響方面非常精確,并就如何衡量采用 Dapr 的微服務所使用的性能提供了指導。正如Dapr文檔中提到的,有一些方法可以檢索 CPU 和內存使用情況,這有助于消除總體碳影響。此外,以遞歸方式,此微服務還應監控其自身的碳排放。
第二點是Dapr 助力應用程序通過控制其 IaC(基礎設施即代碼)來驅動/改變其碳排放,碳排放并不是一個固定的數量,并且很大程度上取決于基礎設施所在數據中心的能源狀況,因此應用程序可以具有自動化,觸發全部或部分基礎設施向影響較小的站點或區域移動。對于某些地區來說,這可能不是立竿見影的,甚至是不可行的(例如需要考慮數據主權和延遲),但在適用的情況下, 分布式應用程序的高度優化的可持續基礎設施,可以保證在影響較小的環境中運行基礎設施(出于同樣的原因,可能是最便宜的),Dapr 非常容易就可以做到環境的適應性。從目前全球情況來看,亞馬遜、谷歌、微軟這三家世界級科技巨頭引領了“綠色云”改造。亞馬遜表示將提前十年達成《巴黎協定》,并在 2025 年實現 100% 可再生能源。并且還成立了 20 億美元的氣候承諾基金,投資那些能幫助亞馬遜達成目標的公司。谷歌大膽承諾,到 2030 年實現數據中心全天候無碳運行,而不是依靠每年的直接能源匹配。微軟(Microsoft)自 2012 年起實現碳中和,并承諾通過電力購買協議,到 2025 年實現數據中心完全使用可再生能源。而在中國,互聯網科技企業也都在不斷加大力量投入到碳中和改造中。今年 8 月國際環保組織綠色和平(Greenpeace)發布了中國科技巨頭《綠色云端2021》[5]排行榜,從能源信息披露、節能減碳表現、可再生能源方面合梳理了中國互聯網科技企業的氣候行動,相比去年,中國互聯網科技企業整體平均得分上升 11%。
第三點是Dapr 助力應用程序根據用戶行為驅動/改變其碳排放影響,應用程序可以根據功能的碳排放提供不同級別的功能,并根據功能的影響級別提供多樣化的用戶體驗,將知情權選擇留給最終用戶。有更多的空閑時間嗎?你為什么不試試這個稍微高一點的延遲水平,通過使用更環保的基礎設施來節省 xx% 的碳?你真的需要加載所有高分辨率圖片嗎?等等。這顯然會在編程方面帶來一些開銷,但其執行的美妙之處在于應用程序將定義并教育最終用戶對其影響發表意見,并且在一段時間后通過監控用戶所做的選擇,您還可以擁有關于他們希望如何與您的軟件交互的反饋。隨著時間的推移,您將清楚地了解哪種組合可以更好地平衡性能和節能。Dapr 偏愛異步架構模式,尤其是依賴于微服務之間的發布/訂閱交互。通過向外擴展和向內擴展來處理請求,可以在對用戶需求的動態響應和對我們希望為工作負載提供的資源的控制之間實現最佳折衷。
IT可持續性是我們在設計應用程序時必須開始考慮的工作了,優化工作負載以提高利用率,我們可以分散定時任務,降低負載峰值,達到調整 CPU 使用效率的目的。重要的是,優化并不是只考慮某一個地方就可以,需要我們在架構和系統層面去思考,每位開發者都可以從現在開始去理解“可持續性”相關的術語和原則,在工作中尋找優化負載的機會。Dapr 在架構和系統層面為我們設計 可持續的應用程序提供了秘密武器。
[1]亞馬遜可持續軟件工程實踐:?https://www.infoq.cn/article/9dIy3T8NEmohhPU9QFe2?
[2]巴黎協定:https://zh.wikipedia.org/wiki/%E5%B7%B4%E9%BB%8E%E5%8D%94%E5%AE%9A
[3]綠色軟件工程原理:?https://principles.green/
[4] Dapr :?https://dapr.io/
[5]綠色云端 :https://www.eet-china.com/mp/a69760.html
總結
以上是生活随笔為你收集整理的Dapr 助力应用架构的可持续性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈C#字符串构建利器StringBui
- 下一篇: 我的技术回顾那些与ABP框架有关的故事-