用技術應對氣候危機

前言

隨着氣候災害,極端天氣的頻繁出現,關於氣候變化的討論已經越來越多。各國政府,各行各業也逐漸將可持續發展提上議程。軟件作爲日常工作生活中不可或缺的一部分,它和氣候變化之間有什麼關係呢?我們作爲軟件從業者,又可以做些什麼來促進氣候目標的達成呢?本文將從軟件對可持續發展的影響出發,舉例介紹軟件如何從三個方面降低碳排放。然後就其中一個方向-軟件自身碳排放進行介紹,再到綠色軟件的定義,度量和原則。最後提出作爲軟件從業人員現在可以做些什麼。

軟件對可持續發展的影響

爲什麼軟件從業者需要關注可持續發展?

說起可持續發展,大部分時候,人們更容易聯想到能源,電力,建築,交通等行業對氣候變化的影響,而比較難將軟件和可持續發展關聯起來。但其實軟件和可持續發展之間也有着千絲萬縷的聯繫。它對可持續發展的影響主要分爲三個方面:

  • 軟件自身所帶來的的碳排放
  • 軟件的使用促進其他行業降低對氣候變化的影響
  • 通過軟件推動用戶形成綠色生活方式

雖然軟件自身並不會帶來直接的碳排放,但是由於軟件開發,運行和維護需要使用硬件和電力資源,由此而產生的碳排放不可小覷。數據顯示,ICT行業在全球碳排放的佔比從2007年的1-1.6%已經上升到3-3.6%,相當於航空行業的碳排放佔比。而這一趨勢還會逐漸升高,到2040年將達到14%。作爲軟件從業人員,我們需要思考,如何降低軟件所帶來的碳排放。

與此同時,軟件的使用也可以促進其他行業的減碳。比如雲計算,數字孿生,AI,IoT等相關技術的使用,可以幫助企業降本增效,減少對氣候變化的影響。比如:將數字孿生技術應用在汽車領域的產品設計中,通過軟件對產品的結構,材料進行模擬,提前對產品的性能進行評估,提升樣機制造通過率,從而減少成本,降低由此帶來的碳排放;利用AI,數學建模等技術對企業業務進行模擬,識別不同策略帶來的經濟收益,經濟成本和碳成本,幫助企業規劃可持續發展路徑;在物流行業,通過電子面單的使用,減少對紙質標籤的依賴,極大的降低了由此產生的環境影響。

更進一步,可持續發展目標的達成,需要人們生活習慣的改變。軟件作爲現代生活中必不可少的工具,通過在軟件中增加綠色相關功能,可以引導人們作出更加綠色的選擇。比如:谷歌在谷歌機票中增加了每個航班的碳排放信息,幫助用戶在選擇機票時瞭解出行對氣候變化的影響,增加選擇更清潔航班的可能性;支付寶的螞蟻森林產品,將用戶的綠色生活方式和能量積分進行關聯,引導用戶關注氣候變化問題。

軟件從業人員的工作會影響到這所有三個方面,因此需要更多的瞭解所設計的軟件產品如何對氣候變化產生影響,以及如何降低軟件所產生的碳排放,促進可持續發展目標的達成。

接下來,將着重介紹一下如何降低軟件自身所帶來的碳排放。即如何構建更加綠色的軟件。

軟件碳足跡

軟件自身對氣候變化的影響主要來自兩個方面,一個是運行軟件所使用的硬件在製造,運輸和回收過程中所產生的的碳排放,稱之爲硬件的內置碳排。另一個是軟件運行過程中所使用的電力導致的碳排放。雖然使用清潔電力是一個大的趨勢,但要達成100%的清潔電力仍然需要很多年的時間。從數據上看,2021年清潔電力在全球電力中的佔比只有14%左右

從碳足跡來看,軟件的碳排放主要發生在3個階段:

  • 用戶在終端設備上與軟件的交互
  • 數據在網絡中的傳輸
  • 數據在服務器端(數據中心)的計算和處理

要降低軟件的碳排放,需要在這幾個階段,從硬件和電力使用入手。很多硬件廠商和依賴大型數據中心的企業已經開始將碳排放作爲企業運營的重點。比如:蘋果公司在產品設計中提升可再生材料的使用,以降低產品生產過程中所產生的的碳排放;谷歌通過機器學習等技術提升數據中心的能源效率。此外,雲服務的使用和普及,也在一定程度上提升了硬件利用率,降低了單位軟件對硬件資源的依賴。

在這些基礎之上,如何構建更加綠色的軟件,進一步降低由於軟件開發,運行和維護而產生的碳排放,是作爲軟件從業者需要考慮的重點。

綠色軟件定義

那麼到底什麼是綠色軟件呢?簡單來說,綠色軟件指的是在交付和使用過程中產生更少碳排放的軟件。

這意味着兩個方面:

  • 軟件對資源的依賴更少,這個資源包括硬件和電力資源
  • 軟件在運行過程中使用更加清潔的電力

在設計和交付軟件的過程中,軟件從業者需要不斷從這兩個方面思考,以降低軟件對環境的影響。

如何評估一個軟件是否綠色

綠色軟件並沒有一個明確的評估標準,達到了多少就說明軟件是綠色的。綠色軟件的構建是一個持續優化和改進的過程。只有瞭解當前的軟件碳排放水平,才能更好地對後續的優化改進提供指引。

溫室氣體覈算體系中,一般會將企業的碳排放作爲整體進行評估。以軟件爲例,溫室氣體覈算體系會將構建軟件和運行維護軟件所需的所有硬件和電力彙總到一起來對碳排放量進行計算。這樣做可以方便企業進行碳排放的報告,但是對於指導IT部門進行實際減碳意義不大。舉個例子:企業的軟件碳排放從100tCO2e上升到了200tCO2e,從企業層面來看,由於軟件而產生的碳排放量大幅上升了。即便團隊採取了很多措施降低軟件碳排放,如果單從這一個指標來看,好像團隊的工作結果並不是很好。如果換一個視角,之前100tCO2e的碳排放只支持了10萬的用戶,但是現在200tCO2e的碳排放支持了100萬的用戶。從這個視角來看,單位碳排放支持了更多的用戶,軟件團隊所做的減排策略是有效的。因此,在評估軟件碳排放時,不能單純從總量進行計算。

爲了更好地指導軟件團隊在軟件減碳上的工作,綠色軟件基金會提出了“軟件碳排強度(Software Carbon Intensity)”的概念。相較於將軟件總碳排作爲評估標準,碳排強度引入了單位的概念。它的評估方式如下:

SCI = (E * I) + M per R

E指的是軟件開發和使用過程中所消耗的電力

I指的是電力碳排因子

M指的是軟件開發使用過程中所使用的硬件的內置碳排

R指的是軟件的功能單位,如果軟件以API調用量爲評估,那麼這個單位可以是API調用次數。如果是以用戶數據爲評估,這個單位可以是用戶數量

軟件從業者可以以軟件碳排強度爲指引,不斷優化軟件的碳排強度,以降低軟件對環境的影響。

綠色軟件原則

就像構建安全軟件一樣,構建綠色軟件並沒有一個固定方法,而是有一些指導原則和實踐。綠色軟件基金會將這些原則進行了彙總,主要包括以下8個方面:

圖1:綠色軟件的8個原則

提升軟件碳效率

提升軟件碳效率,就是要降低單次軟件運行所產生的碳排放。這是綠色軟件的總體原則,如何實現,需要進一步拆解。

提升軟件電力效率

軟件的運行離不開電力,無論是我們日常使用的手機,數據中心運行的機器,或者是開發過程所使用的設備,都需要電力的驅動才能夠工作。以往,開發和運行軟件所消耗的電力並不在我們的考慮範圍,在構建綠色軟件的時候,需要將這一因素融入軟件設計和開發過程中。比如,在不必要使用服務器時,將其關閉以節省電力。比如,在軟件架構設計的時候,優化對系統資源的佔用,降低運行軟件所需的電力。

使用更清潔的電力

清潔電力,指的是在電力生產過程中產生更少碳排放的電力。目前的清潔電力主要指的是由太陽能,風能,水能,核能和氫能轉換的電力。其中佔比最高的是水能,其次是風能,太陽能。通常情況下,電網中的電力是混合了各種來源的電力,我們使用的電力的碳排強度根據電力來源的不同而有所不同。電力碳排強度有區域性和時間性兩個不同的維度。比如,在四川省,由於大量使用了水電,因此它的整體碳排強度會更低一些。而在陝西,火電的佔比會更高一些,因此電力的碳排強度也會更高一些,而這一比例隨着新能源電力裝機量的提升也會有所變化。在時間維度上,太陽能和風能在時間上的變化,也會導致電力碳排強度的變化,比如太陽能在晚上無法發電,因此太陽能所產生的電力佔比就會下降。

針對這些特點,在構建軟件的過程中,需要將這個因素考慮進來,讓軟件儘可能運行在電力更加清潔的地區和時間段。比如,在使用雲服務的時候,可以選擇電力更加清潔的區域,下圖是AWS的各區域的電力碳排強度和價格分佈。可以看到eu-north-1這個區域的電力相較於us-east-2這個區域會更加清潔。可以考慮將軟件部署和運行這樣的區域(當然碳排只是衆多考慮因素中一個,需要綜合選擇)。

圖2:亞馬遜雲各區域的電力碳排放和成本分佈

降低軟件對硬件資源的依賴

和電力一樣,軟件的開發和運行也離不開硬件的支持。在構建軟件的時候,如果能夠兼容老一些硬件設備,可以降低硬件設備的更新換代,從而降低由於生產硬件而產生的碳排放。舉個例子:我現在所使用的iPhone 13 Pro的總體碳排放是88kg CO2e,如果我使用3年的時間,那麼年均排放是29kg,如果將使用時間延長到4年,那麼年均排放會是22kg。而使用這個iPhone多長的時間,很大程度上取決於運行軟件時的性能和速度。如果構建軟件時,能夠很好地支持在老設備上的性能,在一定程度上可以延長設備的使用時間。

圖3:iPhone 13 Pro的碳排放

提升硬件的能源效率

硬件的能源效率一般是硬件廠商重點關注的問題,但是軟件也可以在一定程度上提升能源效率。這主要源自能源比例(Energy proportionality),它用來衡量消耗的電力和提供的價值之間的關係。在硬件的電力使用中,有很大一部分是用於基礎運行的,就像我們買了250G的手機,實際可以使用的空間只有個200G,因爲有50G的空間用於系統存儲。因此,在硬件上運行的功能軟件越多,基礎電力均攤到每個功能上的比例就越小,也即提升了軟件對電力的使用效率。

因此,在設計軟件架構的時候,儘可能提升服務器的利用率,以提升服務器的能源效率,從而降低運行軟件所產生的碳排放。

降低網絡數據傳輸量和距離

網絡中的數據傳輸依賴於一系列的網絡設備,比如交換機,路由器,服務器等。隨着網絡中數據的傳輸量的增大,這一系列的設備也需要不斷地升級。而數據的傳輸距離越長,對網絡設備和電力的消耗也就越多。降低網絡數據的傳輸量和傳輸距離可以降低由於數據傳輸而帶來的碳排放。

在設計軟件的時候,需要從這個視角考慮。比如:在設計前後端交互時,減少不必要的數據傳輸;將數據在不同區域進行緩存,降低該區域請求數據的傳輸距離。

提升軟件碳適應能力

除了將計算遷移至更清潔的區域,在設計軟件時也可以基於當前的碳排強度來調整計算需求,從而提升軟件的碳適應能力。這樣的模式在生活中經常見到,比如:空調的環保模式,當開啓環保模式時,會減少不必要的電力浪費。軟件行業也有一些實踐,比如:在瀏覽視頻網站時,網站能夠實時檢查當前網絡速度,從而推薦低清晰度的方法,以保障視頻的流暢度,也減少了網絡傳輸需求。我們在設計軟件時,可以從這個視角進行考慮,在電力更加清潔的時候,運行更多的任務,在電力緊張的時候,減少任務量。

持續度量和優化

構建綠色軟件不是一次性的工作,它需要軟件團隊持續關注並優化。而優化的前提條件之一就是度量。沒有度量就無法知道所採取的行動是否有效。因此在構建綠色軟件時,需要構建相應的度量方法,並對其進行追蹤和優化。

度量可以從碳排放,電力,網絡數據傳輸量,成本等多個維度進行,重要的是它能夠反映軟件在碳排放上的改進。綠色軟件基金會的成員也提供了一些度量的開源工具,供軟件從業人員進行參考。在雲服務使用所產生的碳排放度量上,Thoughtworks也開源了CCF工具,幫助使用雲服務的企業評估由此而產生的碳排放情況。

以上就是構建綠色軟件時需要考慮的幾大原則。可以看到,相較於通過購買綠電,或者其他碳抵消的方式來降低軟件對環境變化的影響,綠色軟件更看重實際的減排。在可持續發展的大背景下,作爲軟件從業人員,需要開始將綠色因素應用到日常的工作中。

軟件從業者可以做什麼

關於綠色軟件的討論目前還處於非常早期的階段,相關的實踐也還沒有體系化的解決方案,但這並不妨礙我們作爲軟件從業人員開始着手降低軟件對環境變化的影響。可以從以下方面開始行動:

  • 加入綠色軟件相關社區,通過社區貢獻自己的想法,比如:綠色軟件基金會
  • 對綠色軟件相關實踐進行學習瞭解,比如:Linux基金會提供的綠色軟件的培訓認證
  • 降低日常開發過程中的浪費,比如:及時關閉不使用的服務器
  • 在軟件架構設計中應用更加綠色的實踐,比如:使用serverless架構,降低對服務資源的佔用
  • 將綠色軟件原則作爲團隊日常技術實踐的一部分

最後,借用一句老的口號“保護環境,人人有責”,在氣候環境越來越惡劣的當下,作爲軟件從業人員,我們也可以貢獻自己的一份力量,降低軟件行業的碳排放,推動本行業的可持續發展。


文/Thoughtworks 付瑩
原文鏈接:綠色軟件——軟件從業者的可持續發展之路 - Thoughtworks洞見

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章