讓人印象深刻的是,一些項目同樣變得如此復雜,例如Kubernetes(添加到許多通用編程語言和其他工具中)。以至于需要添加許多其他工具和依賴項才能有效地使用它們。
在云計算資源時代,一直存在著繼續(xù)將更多基于云的資源用于解決問題的誘惑,由于對成本的影響很小,企業(yè)從其所提供的靈活性中獲得了很多優(yōu)勢。
開發(fā)人員并不想重復編寫代碼,所以使用框架和依賴項來希望幫助專注于真正重要的事情。
并且需要工具來處理需求、測試和構建應用程序、協(xié)調(diào)基礎設施、運行連續(xù)流程等。由于這些比較抽象,失去了對技術堆棧和應用程序內(nèi)部發(fā)生的事情的直接洞察。開發(fā)人員添加了越來越多的工具來幫助了解所忽略的內(nèi)容。這包括可觀察性,云原生計算基金會(CNCF)和其他基金會也致力于幫助明確通過依賴關系嵌套引入的安全風險,例如軟件材料清單。
目前,由于一些不同的原因,云計算服務增長對成本的影響現(xiàn)在開始影響企業(yè)的預算,幫助估計、監(jiān)控和簡化成本的工具數(shù)量也在增長。Linux基金會甚至還有一個子基金會,即云成本優(yōu)化基金會,旨在幫助提高圍繞有效云計算使用的技術和實踐的技能和意識。
隱藏的影響
但是,這種云計算服務、框架的擴散以及向其中投入其他服務開發(fā)還有另一個意想不到的副作用,就是對環(huán)境的不利影響。人們很容易忘記的是,所有代碼推送、工具、構建、應用程序和流程的背后是運行這些有效負載的物理位置上的真實硬件。
那么碳排放問題有多大?獲得準確的數(shù)字具有挑戰(zhàn)性,其中涉及大量的猜想和推斷,但互聯(lián)網(wǎng)碳排放通常占到全球碳排放量的3.7%左右。
這一數(shù)字與人們更加關注的航空業(yè)大致相同,并且增長迅速。然而,“互聯(lián)網(wǎng)”這個范圍有點模糊,尤其是考慮到人們廣泛使用的IT技術。如果考慮一下人們每天間接使用的基礎設施和應用程序,互聯(lián)網(wǎng)技術的全球影響可能要高得多。即使僅考慮“互聯(lián)網(wǎng)”,目前的用戶群約占全球人口的50%,而且這個數(shù)字在未來幾年將大幅增長。
進一步調(diào)查云計算碳足跡項目
行業(yè)專家Adrian Cockroft就類似的主題進行了探討。他提到云計算碳足跡項目是衡量應用程序及其運行基礎設施的有用工具。
該項目需要一些配置,并通過分析統(tǒng)計數(shù)據(jù)并對其執(zhí)行排放計算來提供對AWS、谷歌云平臺和Azure托管資源的見解。該計算如下:
總體碳排放量=運營排放量+隱含排放量
·運營排放量=(云計算服務的使用量)x(云計算能源轉(zhuǎn)換系數(shù),kWh)x(云計算供應商,能源使用效率(PUE))x(電網(wǎng)排放系數(shù),噸)
·隱含排放量=用于計算數(shù)據(jù)中心服務器制造過程的估計二氧化碳排放量
該項目是開源的,因此開發(fā)人員可以添加其他提供者或從其他地方輸入。它主要由Thoughtworks維護,當然,作為一個復雜的應用程序,它有自己的開銷和影響。但必須從某個地方開始,現(xiàn)在這是一個很好的起點。
首先,使用模擬數(shù)據(jù)運行,可以通過首先克隆存儲庫并安裝依賴項來完成。
git clone --branch latest https://github.com/cloud-carbon-footprint/cloud-carbon-footprint.git
cd cloud-carbon-footprint
yarn install
yarn start-with-mock-data
(1)用戶界面概述
用戶界面(UI)由幾個關鍵區(qū)域組成:
·提供者、帳戶、服務和日期的過濾器。
·隨著時間的推移使用碳排放量、電力和成本的摘要。
·與減少碳排放所需的航班、電話費和樹木相比,排放量是多少?
·按服務、地區(qū)和賬戶劃分的排放量。
·提供者的區(qū)域強度圖。
(2)監(jiān)控應用程序
要設置云計算碳足跡來衡量應用程序,可以人工編輯api和cli文件夾中的.env文件或運行yarn guided-install命令以使用向?qū)нM行配置。在此將谷歌云平臺用于測試應用程序。
由于評估應用程序的碳足跡通常需要更長的時間,而構建足夠復雜的應用程序也需要一些時間,所以選擇構建簡單的東西,逐漸增加其復雜性,然后通過假設應用程序?qū)⒃谝荒甑拇蟛糠謺r間里有大約1000個并發(fā)用戶。為此采用JMeter模擬了短暫的用戶負載。主要使用基于歐盟地區(qū)的服務器,該應用程序?qū)⑹褂霉雀柙破脚_、Cloud SQL以及他們需要的所有其他輔助服務,其中包括表單、工件注冊表和計費。這已經(jīng)表明,一個簡單的應用程序可以開始引入一些其他間接服務。有一個GitHub存儲庫,其中包含設置SQL數(shù)據(jù)庫和表所需的所有代碼。
·從一個用JavaScript編寫的強制性“hello world”應用程序開始,它將“hello world”輸出到控制臺。
·然后添加了Express JS,它在訪問特定端點時輸出“hello world”。
·然后添加了一個數(shù)據(jù)庫,在本例中為Cloud SQL,它從表中加載三行,并在加載端點時輸出這些行。它還在URL參數(shù)中檢查了正確設置的API密鑰。
·最終添加了有意的處理復雜性,它采用大型for循環(huán)的形式。
(3)應用程序的影響
下圖顯示了結(jié)果,但這些值是在將它們與假設相乘之前。
應用程序的碳影響
基本的hello world應用程序的影響很小。在添加Express后,碳排放量會躍升。添加SQL時躍升得更高,而較大的for循環(huán)實際上添加得很少,這讓人感到驚訝。另一個令人驚訝的事情是,之后碳排放影響沒有下降到零,這可能是SQL服務在空閑時使用了資源。
在Cloud SQL方面,它是迄今為止最大的資源消耗者,約占總影響的98%。這不應該讓人感到驚訝,但確實如此。該應用程序沒有緩存或SQL優(yōu)化,但幾乎沒有做任何事情。
服務行業(yè)的碳影響
然后將測量值相乘,應用程序在峰值運行時會產(chǎn)生以下等效影響:
·1架從倫敦到紐約的單程航班。
·可以為14萬部署手機充電。
·種植了十年的20株幼苗以減少碳排放。
這些數(shù)字聽起來并不高,但需要記住的是,這是一個簡單的應用程序。將它們乘以在那里運行的大量應用程序,就會開始看到事情是如何累積起來的。
能夠做些什么?
可以通過簡化和思考低效的服務來提供幫助。
人們可能對可觀察性感興趣并且已經(jīng)在這樣做,并知道如何做到這一點,或者想學習如何做到這一點??捎^察性生態(tài)系統(tǒng)中的許多工具也有助于了解環(huán)境影響。效率低下的服務通常是造成更大影響的根源。
可以考慮為某些服務編譯代碼或使用編譯語言。如果還沒有這樣做,可以考慮更新可能包含內(nèi)存泄漏或效率提升的依賴項。
考慮直接影響或間接影響的應用程序功能。幫助客戶簡化他們存儲指標的功能減少了各種開銷,同時也減少了對云計算服務的影響。
最后,定期對云資源進行審計,并考慮使用自動化工具來幫助解決這個問題。而不需要的資源除了浪費資金之外,還會對環(huán)境帶來不利影響。
更廣泛的思考
并非所有云計算供應商都是相同的,有些云計算供應商更擅長提供運行更加綠色環(huán)保服務的工具和選項。同樣,一些數(shù)據(jù)中心所在的某些位置比其他數(shù)據(jù)中心更環(huán)保,并且具有更高的能源使用效率(PUE)。如果可以選擇,需要使用碳排放影響較小的數(shù)據(jù)中心。而位置對于效率的影響也很重要。使用更靠近用戶的數(shù)據(jù)中心可以減少在全球范圍內(nèi)傳輸數(shù)據(jù)的碳排放。同樣,使用位置良好的CDN不僅有助于提高用戶的應用程序速度,而且由于傳輸時間和長度更短,再次降低了影響。
令人驚喜的是,全球主要的三個云計算提供商現(xiàn)在都擁有可持續(xù)性工具。谷歌公司最近舉辦了一場關于可持續(xù)云計算的活動。
不要忘記前端
前端是許多應用程序的重要組成部分,并且希望已經(jīng)成為可觀察性堆棧的一部分,因為前端不僅會影響企業(yè)的成本或環(huán)境,還會影響用戶的成本或環(huán)境。當最終用戶在他們的機器上運行前端代碼時,將前面提到的所有這些影響乘以一個難以定義的數(shù)量。這種性能影響會對環(huán)境產(chǎn)生額外的影響。
幸運的是,前端社區(qū)已經(jīng)在考慮這個問題,并且已經(jīng)有一段時間了。
向前看并且更廣泛地思考
有些國家和地區(qū)可能很快就會開始強制對網(wǎng)站和服務進行碳排放影響的審計。審計可能會開始變得越來越普遍,就像軟件材料清單一樣。與許多監(jiān)管案例一樣,符合監(jiān)管的要求通常是值得的,甚至有助于影響監(jiān)管可能采取的形式。
企業(yè)可以向其供應商索取影響報告,并將報告提供給客戶。它們表明企業(yè)關心超出其收入的事情,并且可以獲得競爭優(yōu)勢。
可觀察性已經(jīng)提供了分析應用程序影響所需的工具,現(xiàn)在可以構建儀表板和其他監(jiān)控功能來開始監(jiān)控。
版權聲明:本文為企業(yè)網(wǎng)D1Net編譯,轉(zhuǎn)載需注明出處為:企業(yè)網(wǎng)D1Net,如果不注明出處,企業(yè)網(wǎng)D1Net將保留追究其法律責任的權利。