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