前言
隨著氣候?yàn)?zāi)害,極端天氣的頻繁出現(xiàn),關(guān)于氣候變化的討論已經(jīng)越來(lái)越多。各國(guó)政府,各行各業(yè)也逐漸將可持續(xù)發(fā)展提上議程。軟件作為日常工作生活中不可或缺的一部分,它和氣候變化之間有什么關(guān)系呢?我們作為軟件從業(yè)者,又可以做些什么來(lái)促進(jìn)氣候目標(biāo)的達(dá)成呢?本文將從軟件對(duì)可持續(xù)發(fā)展的影響出發(fā),舉例介紹軟件如何從三個(gè)方面降低碳排放。然后就其中一個(gè)方向-軟件自身碳排放進(jìn)行介紹,再到綠色軟件的定義,度量和原則。最后提出作為軟件從業(yè)人員現(xiàn)在可以做些什么。
軟件對(duì)可持續(xù)發(fā)展的影響
為什么軟件從業(yè)者需要關(guān)注可持續(xù)發(fā)展?
說起可持續(xù)發(fā)展,大部分時(shí)候,人們更容易聯(lián)想到能源,電力,建筑,交通等行業(yè)對(duì)氣候變化的影響,而比較難將軟件和可持續(xù)發(fā)展關(guān)聯(lián)起來(lái)。但其實(shí)軟件和可持續(xù)發(fā)展之間也有著千絲萬(wàn)縷的聯(lián)系。它對(duì)可持續(xù)發(fā)展的影響主要分為三個(gè)方面:
- 軟件自身所帶來(lái)的的碳排放
- 軟件的使用促進(jìn)其他行業(yè)降低對(duì)氣候變化的影響
- 通過軟件推動(dòng)用戶形成綠色生活方式
雖然軟件自身并不會(huì)帶來(lái)直接的碳排放,但是由于軟件開發(fā),運(yùn)行和維護(hù)需要使用硬件和電力資源,由此而產(chǎn)生的碳排放不可小覷。數(shù)據(jù)顯示,ICT行業(yè)在全球碳排放的占比從2007年的1-1.6%已經(jīng)上升到3-3.6%,相當(dāng)于航空行業(yè)的碳排放占比。而這一趨勢(shì)還會(huì)逐漸升高,到2040年將達(dá)到14%。作為軟件從業(yè)人員,我們需要思考,如何降低軟件所帶來(lái)的碳排放。
與此同時(shí),軟件的使用也可以促進(jìn)其他行業(yè)的減碳。比如云計(jì)算,數(shù)字孿生,AI,IoT等相關(guān)技術(shù)的使用,可以幫助企業(yè)降本增效,減少對(duì)氣候變化的影響。比如:將數(shù)字孿生技術(shù)應(yīng)用在汽車領(lǐng)域的產(chǎn)品設(shè)計(jì)中,通過軟件對(duì)產(chǎn)品的結(jié)構(gòu),材料進(jìn)行模擬,提前對(duì)產(chǎn)品的性能進(jìn)行評(píng)估,提升樣機(jī)制造通過率,從而減少成本,降低由此帶來(lái)的碳排放;利用AI,數(shù)學(xué)建模等技術(shù)對(duì)企業(yè)業(yè)務(wù)進(jìn)行模擬,識(shí)別不同策略帶來(lái)的經(jīng)濟(jì)收益,經(jīng)濟(jì)成本和碳成本,幫助企業(yè)規(guī)劃可持續(xù)發(fā)展路徑;在物流行業(yè),通過電子面單的使用,減少對(duì)紙質(zhì)標(biāo)簽的依賴,極大的降低了由此產(chǎn)生的環(huán)境影響。
更進(jìn)一步,可持續(xù)發(fā)展目標(biāo)的達(dá)成,需要人們生活習(xí)慣的改變。軟件作為現(xiàn)代生活中必不可少的工具,通過在軟件中增加綠色相關(guān)功能,可以引導(dǎo)人們作出更加綠色的選擇。比如:谷歌在谷歌機(jī)票中增加了每個(gè)航班的碳排放信息,幫助用戶在選擇機(jī)票時(shí)了解出行對(duì)氣候變化的影響,增加選擇更清潔航班的可能性;支付寶的螞蟻森林產(chǎn)品,將用戶的綠色生活方式和能量積分進(jìn)行關(guān)聯(lián),引導(dǎo)用戶關(guān)注氣候變化問題。
軟件從業(yè)人員的工作會(huì)影響到這所有三個(gè)方面,因此需要更多的了解所設(shè)計(jì)的軟件產(chǎn)品如何對(duì)氣候變化產(chǎn)生影響,以及如何降低軟件所產(chǎn)生的碳排放,促進(jìn)可持續(xù)發(fā)展目標(biāo)的達(dá)成。
接下來(lái),將著重介紹一下如何降低軟件自身所帶來(lái)的碳排放。即如何構(gòu)建更加綠色的軟件。
軟件碳足跡
軟件自身對(duì)氣候變化的影響主要來(lái)自兩個(gè)方面,一個(gè)是運(yùn)行軟件所使用的硬件在制造,運(yùn)輸和回收過程中所產(chǎn)生的的碳排放,稱之為硬件的內(nèi)置碳排。另一個(gè)是軟件運(yùn)行過程中所使用的電力導(dǎo)致的碳排放。雖然使用清潔電力是一個(gè)大的趨勢(shì),但要達(dá)成100%的清潔電力仍然需要很多年的時(shí)間。從數(shù)據(jù)上看,2021年清潔電力在全球電力中的占比只有14%左右。
從碳足跡來(lái)看,軟件的碳排放主要發(fā)生在3個(gè)階段:
- 用戶在終端設(shè)備上與軟件的交互
- 數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸
- 數(shù)據(jù)在服務(wù)器端(數(shù)據(jù)中心)的計(jì)算和處理
要降低軟件的碳排放,需要在這幾個(gè)階段,從硬件和電力使用入手。很多硬件廠商和依賴大型數(shù)據(jù)中心的企業(yè)已經(jīng)開始將碳排放作為企業(yè)運(yùn)營(yíng)的重點(diǎn)。比如:蘋果公司在產(chǎn)品設(shè)計(jì)中提升可再生材料的使用,以降低產(chǎn)品生產(chǎn)過程中所產(chǎn)生的的碳排放;谷歌通過機(jī)器學(xué)習(xí)等技術(shù)提升數(shù)據(jù)中心的能源效率。此外,云服務(wù)的使用和普及,也在一定程度上提升了硬件利用率,降低了單位軟件對(duì)硬件資源的依賴。
在這些基礎(chǔ)之上,如何構(gòu)建更加綠色的軟件,進(jìn)一步降低由于軟件開發(fā),運(yùn)行和維護(hù)而產(chǎn)生的碳排放,是作為軟件從業(yè)者需要考慮的重點(diǎn)。
綠色軟件定義
那么到底什么是綠色軟件呢?簡(jiǎn)單來(lái)說,綠色軟件指的是在交付和使用過程中產(chǎn)生更少碳排放的軟件。
這意味著兩個(gè)方面:
- 軟件對(duì)資源的依賴更少,這個(gè)資源包括硬件和電力資源
- 軟件在運(yùn)行過程中使用更加清潔的電力
在設(shè)計(jì)和交付軟件的過程中,軟件從業(yè)者需要不斷從這兩個(gè)方面思考,以降低軟件對(duì)環(huán)境的影響。
如何評(píng)估一個(gè)軟件是否綠色
綠色軟件并沒有一個(gè)明確的評(píng)估標(biāo)準(zhǔn),達(dá)到了多少就說明軟件是綠色的。綠色軟件的構(gòu)建是一個(gè)持續(xù)優(yōu)化和改進(jìn)的過程。只有了解當(dāng)前的軟件碳排放水平,才能更好地對(duì)后續(xù)的優(yōu)化改進(jìn)提供指引。
溫室氣體核算體系中,一般會(huì)將企業(yè)的碳排放作為整體進(jìn)行評(píng)估。以軟件為例,溫室氣體核算體系會(huì)將構(gòu)建軟件和運(yùn)行維護(hù)軟件所需的所有硬件和電力匯總到一起來(lái)對(duì)碳排放量進(jìn)行計(jì)算。這樣做可以方便企業(yè)進(jìn)行碳排放的報(bào)告,但是對(duì)于指導(dǎo)IT部門進(jìn)行實(shí)際減碳意義不大。舉個(gè)例子:企業(yè)的軟件碳排放從100tCO2e上升到了200tCO2e,從企業(yè)層面來(lái)看,由于軟件而產(chǎn)生的碳排放量大幅上升了。即便團(tuán)隊(duì)采取了很多措施降低軟件碳排放,如果單從這一個(gè)指標(biāo)來(lái)看,好像團(tuán)隊(duì)的工作結(jié)果并不是很好。如果換一個(gè)視角,之前100tCO2e的碳排放只支持了10萬(wàn)的用戶,但是現(xiàn)在200tCO2e的碳排放支持了100萬(wàn)的用戶。從這個(gè)視角來(lái)看,單位碳排放支持了更多的用戶,軟件團(tuán)隊(duì)所做的減排策略是有效的。因此,在評(píng)估軟件碳排放時(shí),不能單純從總量進(jìn)行計(jì)算。
為了更好地指導(dǎo)軟件團(tuán)隊(duì)在軟件減碳上的工作,綠色軟件基金會(huì)提出了“軟件碳排強(qiáng)度(Software Carbon Intensity)”的概念。相較于將軟件總碳排作為評(píng)估標(biāo)準(zhǔn),碳排強(qiáng)度引入了單位的概念。它的評(píng)估方式如下:
E指的是軟件開發(fā)和使用過程中所消耗的電力
I指的是電力碳排因子
M指的是軟件開發(fā)使用過程中所使用的硬件的內(nèi)置碳排
R指的是軟件的功能單位,如果軟件以API調(diào)用量為評(píng)估,那么這個(gè)單位可以是API調(diào)用次數(shù)。如果是以用戶數(shù)據(jù)為評(píng)估,這個(gè)單位可以是用戶數(shù)量
軟件從業(yè)者可以以軟件碳排強(qiáng)度為指引,不斷優(yōu)化軟件的碳排強(qiáng)度,以降低軟件對(duì)環(huán)境的影響。
綠色軟件原則
就像構(gòu)建安全軟件一樣,構(gòu)建綠色軟件并沒有一個(gè)固定方法,而是有一些指導(dǎo)原則和實(shí)踐。綠色軟件基金會(huì)將這些原則進(jìn)行了匯總,主要包括以下8個(gè)方面:

圖1:綠色軟件的8個(gè)原則
提升軟件碳效率
提升軟件碳效率,就是要降低單次軟件運(yùn)行所產(chǎn)生的碳排放。這是綠色軟件的總體原則,如何實(shí)現(xiàn),需要進(jìn)一步拆解。
提升軟件電力效率
軟件的運(yùn)行離不開電力,無(wú)論是我們?nèi)粘J褂玫氖謾C(jī),數(shù)據(jù)中心運(yùn)行的機(jī)器,或者是開發(fā)過程所使用的設(shè)備,都需要電力的驅(qū)動(dòng)才能夠工作。以往,開發(fā)和運(yùn)行軟件所消耗的電力并不在我們的考慮范圍,在構(gòu)建綠色軟件的時(shí)候,需要將這一因素融入軟件設(shè)計(jì)和開發(fā)過程中。比如,在不必要使用服務(wù)器時(shí),將其關(guān)閉以節(jié)省電力。比如,在軟件架構(gòu)設(shè)計(jì)的時(shí)候,優(yōu)化對(duì)系統(tǒng)資源的占用,降低運(yùn)行軟件所需的電力。
使用更清潔的電力
清潔電力,指的是在電力生產(chǎn)過程中產(chǎn)生更少碳排放的電力。目前的清潔電力主要指的是由太陽(yáng)能,風(fēng)能,水能,核能和氫能轉(zhuǎn)換的電力。其中占比最高的是水能,其次是風(fēng)能,太陽(yáng)能。通常情況下,電網(wǎng)中的電力是混合了各種來(lái)源的電力,我們使用的電力的碳排強(qiáng)度根據(jù)電力來(lái)源的不同而有所不同。電力碳排強(qiáng)度有區(qū)域性和時(shí)間性兩個(gè)不同的維度。比如,在四川省,由于大量使用了水電,因此它的整體碳排強(qiáng)度會(huì)更低一些。而在陜西,火電的占比會(huì)更高一些,因此電力的碳排強(qiáng)度也會(huì)更高一些,而這一比例隨著新能源電力裝機(jī)量的提升也會(huì)有所變化。在時(shí)間維度上,太陽(yáng)能和風(fēng)能在時(shí)間上的變化,也會(huì)導(dǎo)致電力碳排強(qiáng)度的變化,比如太陽(yáng)能在晚上無(wú)法發(fā)電,因此太陽(yáng)能所產(chǎn)生的電力占比就會(huì)下降。
針對(duì)這些特點(diǎn),在構(gòu)建軟件的過程中,需要將這個(gè)因素考慮進(jìn)來(lái),讓軟件盡可能運(yùn)行在電力更加清潔的地區(qū)和時(shí)間段。比如,在使用云服務(wù)的時(shí)候,可以選擇電力更加清潔的區(qū)域,下圖是AWS的各區(qū)域的電力碳排強(qiáng)度和價(jià)格分布??梢钥吹絜u-north-1這個(gè)區(qū)域的電力相較于us-east-2這個(gè)區(qū)域會(huì)更加清潔??梢钥紤]將軟件部署和運(yùn)行這樣的區(qū)域(當(dāng)然碳排只是眾多考慮因素中一個(gè),需要綜合選擇)。

圖2:亞馬遜云各區(qū)域的電力碳排放和成本分布
降低軟件對(duì)硬件資源的依賴
和電力一樣,軟件的開發(fā)和運(yùn)行也離不開硬件的支持。在構(gòu)建軟件的時(shí)候,如果能夠兼容老一些硬件設(shè)備,可以降低硬件設(shè)備的更新?lián)Q代,從而降低由于生產(chǎn)硬件而產(chǎn)生的碳排放。舉個(gè)例子:我現(xiàn)在所使用的iPhone 13 Pro的總體碳排放是88kg CO2e,如果我使用3年的時(shí)間,那么年均排放是29kg,如果將使用時(shí)間延長(zhǎng)到4年,那么年均排放會(huì)是22kg。而使用這個(gè)iPhone多長(zhǎng)的時(shí)間,很大程度上取決于運(yùn)行軟件時(shí)的性能和速度。如果構(gòu)建軟件時(shí),能夠很好地支持在老設(shè)備上的性能,在一定程度上可以延長(zhǎng)設(shè)備的使用時(shí)間。

提升硬件的能源效率
硬件的能源效率一般是硬件廠商重點(diǎn)關(guān)注的問題,但是軟件也可以在一定程度上提升能源效率。這主要源自能源比例(Energy proportionality),它用來(lái)衡量消耗的電力和提供的價(jià)值之間的關(guān)系。在硬件的電力使用中,有很大一部分是用于基礎(chǔ)運(yùn)行的,就像我們買了250G的手機(jī),實(shí)際可以使用的空間只有個(gè)200G,因?yàn)橛?0G的空間用于系統(tǒng)存儲(chǔ)。因此,在硬件上運(yùn)行的功能軟件越多,基礎(chǔ)電力均攤到每個(gè)功能上的比例就越小,也即提升了軟件對(duì)電力的使用效率。
因此,在設(shè)計(jì)軟件架構(gòu)的時(shí)候,盡可能提升服務(wù)器的利用率,以提升服務(wù)器的能源效率,從而降低運(yùn)行軟件所產(chǎn)生的碳排放。
降低網(wǎng)絡(luò)數(shù)據(jù)傳輸量和距離
網(wǎng)絡(luò)中的數(shù)據(jù)傳輸依賴于一系列的網(wǎng)絡(luò)設(shè)備,比如交換機(jī),路由器,服務(wù)器等。隨著網(wǎng)絡(luò)中數(shù)據(jù)的傳輸量的增大,這一系列的設(shè)備也需要不斷地升級(jí)。而數(shù)據(jù)的傳輸距離越長(zhǎng),對(duì)網(wǎng)絡(luò)設(shè)備和電力的消耗也就越多。降低網(wǎng)絡(luò)數(shù)據(jù)的傳輸量和傳輸距離可以降低由于數(shù)據(jù)傳輸而帶來(lái)的碳排放。
在設(shè)計(jì)軟件的時(shí)候,需要從這個(gè)視角考慮。比如:在設(shè)計(jì)前后端交互時(shí),減少不必要的數(shù)據(jù)傳輸;將數(shù)據(jù)在不同區(qū)域進(jìn)行緩存,降低該區(qū)域請(qǐng)求數(shù)據(jù)的傳輸距離。
提升軟件碳適應(yīng)能力
除了將計(jì)算遷移至更清潔的區(qū)域,在設(shè)計(jì)軟件時(shí)也可以基于當(dāng)前的碳排強(qiáng)度來(lái)調(diào)整計(jì)算需求,從而提升軟件的碳適應(yīng)能力。這樣的模式在生活中經(jīng)常見到,比如:空調(diào)的環(huán)保模式,當(dāng)開啟環(huán)保模式時(shí),會(huì)減少不必要的電力浪費(fèi)。軟件行業(yè)也有一些實(shí)踐,比如:在瀏覽視頻網(wǎng)站時(shí),網(wǎng)站能夠?qū)崟r(shí)檢查當(dāng)前網(wǎng)絡(luò)速度,從而推薦低清晰度的方法,以保障視頻的流暢度,也減少了網(wǎng)絡(luò)傳輸需求。我們?cè)谠O(shè)計(jì)軟件時(shí),可以從這個(gè)視角進(jìn)行考慮,在電力更加清潔的時(shí)候,運(yùn)行更多的任務(wù),在電力緊張的時(shí)候,減少任務(wù)量。
持續(xù)度量和優(yōu)化
構(gòu)建綠色軟件不是一次性的工作,它需要軟件團(tuán)隊(duì)持續(xù)關(guān)注并優(yōu)化。而優(yōu)化的前提條件之一就是度量。沒有度量就無(wú)法知道所采取的行動(dòng)是否有效。因此在構(gòu)建綠色軟件時(shí),需要構(gòu)建相應(yīng)的度量方法,并對(duì)其進(jìn)行追蹤和優(yōu)化。
度量可以從碳排放,電力,網(wǎng)絡(luò)數(shù)據(jù)傳輸量,成本等多個(gè)維度進(jìn)行,重要的是它能夠反映軟件在碳排放上的改進(jìn)。綠色軟件基金會(huì)的成員也提供了一些度量的開源工具,供軟件從業(yè)人員進(jìn)行參考。在云服務(wù)使用所產(chǎn)生的碳排放度量上,Thoughtworks也開源了CCF工具,幫助使用云服務(wù)的企業(yè)評(píng)估由此而產(chǎn)生的碳排放情況。
以上就是構(gòu)建綠色軟件時(shí)需要考慮的幾大原則??梢钥吹?,相較于通過購(gòu)買綠電,或者其他碳抵消的方式來(lái)降低軟件對(duì)環(huán)境變化的影響,綠色軟件更看重實(shí)際的減排。在可持續(xù)發(fā)展的大背景下,作為軟件從業(yè)人員,需要開始將綠色因素應(yīng)用到日常的工作中。
軟件從業(yè)者可以做什么
關(guān)于綠色軟件的討論目前還處于非常早期的階段,相關(guān)的實(shí)踐也還沒有體系化的解決方案,但這并不妨礙我們作為軟件從業(yè)人員開始著手降低軟件對(duì)環(huán)境變化的影響??梢詮囊韵路矫骈_始行動(dòng):
- 加入綠色軟件相關(guān)社區(qū),通過社區(qū)貢獻(xiàn)自己的想法,比如:綠色軟件基金會(huì)
- 對(duì)綠色軟件相關(guān)實(shí)踐進(jìn)行學(xué)習(xí)了解,比如:Linux基金會(huì)提供的綠色軟件的培訓(xùn)認(rèn)證
- 降低日常開發(fā)過程中的浪費(fèi),比如:及時(shí)關(guān)閉不使用的服務(wù)器
- 在軟件架構(gòu)設(shè)計(jì)中應(yīng)用更加綠色的實(shí)踐,比如:使用serverless架構(gòu),降低對(duì)服務(wù)資源的占用
- 將綠色軟件原則作為團(tuán)隊(duì)日常技術(shù)實(shí)踐的一部分
最后,借用一句老的口號(hào)“保護(hù)環(huán)境,人人有責(zé)”,在氣候環(huán)境越來(lái)越惡劣的當(dāng)下,作為軟件從業(yè)人員,我們也可以貢獻(xiàn)自己的一份力量,降低軟件行業(yè)的碳排放,推動(dòng)本行業(yè)的可持續(xù)發(fā)展。
文/Thoughtworks 付瑩
原文鏈接:綠色軟件——軟件從業(yè)者的可持續(xù)發(fā)展之路 - Thoughtworks洞見