隨著雲端運算的普及,無伺服器應用程式的永續發展議題日益受到重視。除了成本和效能,如何降低碳排放和環境影響也成為關鍵指標。本文將探討如何在開發和佈署過程中實踐永續發展,包含自動化流程、資源最佳化、團隊意識建立,以及設計檔案中納入永續發展考量。同時,也將分析 Adrian Cockroft 的觀點,並探討無伺服器技術的未來趨勢,如低程式碼、事件驅動架構、多雲協調等,為打造更環保的應用程式提供方向。

開發和佈署中的可持續性

正如您所見,除了成本和效能外,可持續性也是無伺服器應用程式的一個重要最佳化因素。以下提供了無伺服器應用程式開發和佈署中可持續性的最佳實踐:

  • 自動化每一個可能的開發和佈署任務。
  • 利用新的和改進的功能和服務。
  • 根據需要和最佳化每個資源。
  • 不同的 Lambda 函式不需要組態相同的 RAM 數量。相反,您可以根據記憶體使用情況監控指標來組態資源。同樣,您應該檢查每個微服務中的表、佇列、流、日誌等,並根據可持續性進行最佳化。

在工程團隊中引入可持續性

企業的可持續性努力通常從設定目標和制定實作這些目標的策略開始。業內專家 Adrian Cockroft 將組織分為兩類別:主要線上營運的組織(例如銀行和 SaaS 提供商)以及主要在物理世界營運的組織(具有倉函式庫營運、辦公空間和大量通勤員工)。前者主要移動電子,具有相對較低的碳足跡,而後者移動原子,具有相對較高的碳足跡。

當這些組織開始思考可持續性時,它們通常會集中精力於工作場所、採購、運輸、供應商、製造等方面。然而,隨著現代企業中數字營運的規模,將可持續性措施帶到數字團隊中至關重要。這個過程中的兩個基本步驟是:

  1. 意識:在技術團隊中建立可持續性意識。
  2. 行動:識別和實施團隊可以遵循的行動專案。

以下幾節將介紹如何對這兩個方面進行方法。

可持續性意識日

根據您的團隊工作模式和分佈,您可以組織一次線下或線上研討會,專門用幾個小時或整天來提高工程師對可持續性的意識。在研討會中,您可以將時間分成四個部分:

  1. 對團隊介紹可持續性。
  2. 技術、雲端和無伺服器架構中的可持續性。
  3. 社會生活中的可持續性責任。
  4. 可持續性日成果、行動和總結。

您的可持續性意識日可能會產生以下成果:

  • 識別採用可持續性措施的阻礙因素。
  • 識別團隊在開發中採用可持續性措施的機會。
  • 建立一個支援系統,以便工程師可以提出想法和疑慮。
  • 建立一個可持續性社群,以便與團隊互動、提供資訊並分享成就。

初始意識日後,定期召開會議以評估團隊進展並解決阻礙是有益的。這些會議是討論碳足跡報告(如圖 10-12 所示)和相關可持續性措施的理想機會。

設計檔案中的可持續性

在您的解決方案設計檔案中,請記錄所有與可持續性相關的想法和建議,以確保在實施過程中採用適當的可持續性模式和實踐。這有助於確保您的解決方案從一開始就考慮了可持續性因素。

參考第 6 章瞭解解決方案設計的重要性,以及附錄 C 中的解決方案設計檔案範本。

伺服器無法(Serverless)技術的永續發展重點

在現代軟體開發中,永續發展是一項重要的責任。這項責任從瞭解和承認永續思考的必要性開始,伴隨著您構建和操作伺服器無法解決方案的整個過程。它需要意識和行動。

永續重點領域

決定伺服器無法團隊應該將其永續努力集中在哪些領域以最大化影響,取決於其領域、工作負載型別、應用專業等。您可能會發現特定的雲端服務,可以在其中應用永續實踐。

例如,如果您在資料處理領域工作,您的服務可能會處理大量資料,流經多個 AWS 服務和資料儲存。這種情況下,您的主要永續重點將是採用資料和儲存的永續模式。您的努力可能會集中在最佳化 DynamoDB、S3 等的使用上。

或者,您可能是高速度團隊的一部分,執行多次每日發布到生產環境。在此環境中,幾個自動提取請求、整合、測試和佈署管道將處於進行中。這種團隊的一個重點領域可能是開發、測試/QA、預發布等中構建和雲資源的最佳(和永續)使用。

永續審核檢查清單

第 1 章討論了 AWS Well-Architected Framework,其中包括永續性作為其中一項支柱。為了將框架的原則應用於伺服器無法應用程式,AWS 提供了一個伺服器無法應用程式鏡頭,涵蓋了伺服器無法開發所特有的細節。許多構建伺服器無法應用程式的團隊根據伺服器無法應用程式鏡頭的最佳實踐建議編製了一個清單,並將其用作新服務開發的一部分審核步驟。

您可以根據本章描述的模式和實踐建立一個類別似的永續性關注清單。它將引導工程師熟悉並應用永續性思考,當他們設計和構建伺服器無法應用程式時。

專家訪談

阿德里安·科克羅夫特(Adrian Cockcroft)是 Netflix 在其開創性的遷移至 AWS 期間的雲架構師。他是 DevOps、微服務和混沌工程的早期實踐者和倡導者,幫助將這些概念推廣到更廣泛的受眾。在 2022 年夏季從亞馬遜退休之前,阿德里安在公司擔任了幾年的副執行長,深入參與了幫助亞馬遜本身(世界上最大的公司之一)及其企業和公共部門客戶(透過 AWS,一家最大的科技公司之一)的雙重挑戰。

問:阿德里安,您有著輝煌的職業生涯,跨越了數十年,為許多開創性的倡議做出了貢獻。在您的職業生涯中,您何時開始關注永續性問題,什麼是觸發點?

我有應用物理學和電子學學位,並且自 2006 年斯特恩報告(Stern Report)關於氣候變化潛在經濟影響發布以來,我一直在關注氣候危機的科學。我想幫助推動對氣候變化的否認,並在 2009 年為我的房子增加了太陽能板,並在 2011 年購買了我的第一輛電動汽車。

問:雖然軟體行業中有許多人致力於創造一個可持續的世界,但在採用永續性原則和實踐作為開發過程的一部分時,往往存在差距。你認為進展如此緩慢的原因是什麼,你認為我們需要採取什麼措施來改善軟體團隊中的永續性思考?

永續性是那些非功能性需求,人們往往忽略它們,直到它們變成問題。安全開發實踐在遭受網路攻擊後變得重要,永續性實踐現在變得重要,因為人們正在呼吸著煙霧並逃離火災和颶風。揭露法規正在全球傳播,因此大公司很快就需要對其碳足跡和氣候危機對其業務的風險進行説明。硬體和軟體的端對端供應鏈碳足跡需要被管理和儀表化。有很多建議供軟體團隊考慮。我貢獻了 AWS Well-Architected Guide for Sustainability,Green Software Foundation 已經釋出了並正在開發有用的標準,如 Software Carbon Intensity 規範。

問:您一直很積極地倡導雲供應商更好地顯示其碳足跡,並提出了實時碳足跡計算標準。您希望從 AWS 和其他領先的雲供應商那裡看到什麼新的措施?

所有雲供應商都在做一個很好的工作,以去除其能源供應和供應鏈中的碳。這是世界上最前瞻性的行業之一,它們已經委託了數十吉瓦的可再生能源供應商進行私人使用。然而,AWS 在透明度方面遠遠落後,提供的資訊解析度低於其他雲供應商,而且仍然需要揭露第 3 節排放和資料中心功率使用效率,這些資訊 Azure 在 2021 年就已經分享了。所有雲供應商目前都提供每月資料,資料延遲了幾個月,只有用於稽核報告才有用。我在 2023 年 3 月提出了一個提案,導致 Green Software Foundation 啟動了一個專案,以開發一個實時標準,這個標準足夠準確,以支援碳監測和最佳化工具的開發。

問:伺服器無法和使用受控服務的採用確實促進了雲的可持續性。但由於這一點,有一個誤解,即實作雲操作中的可持續性僅僅是雲供應商的責任。在這方面,您會給採用伺服器無法的組織什麼建議?

我們已經習慣了分享安全責任,同樣的事情也適用於可持續性。雲供應商負責雲的可持續性,而客戶則負責以可持續的方式使用雲。伺服器無法將最大量的責任轉移到雲供應商和相關服務,但仍然重要的是要高效地構建和營運應用程式。大部分伺服器無法應用程式中的成本最終都會落在資料函式庫後端和日誌記錄上,因此使用良好的歸檔過程和壓縮來減少長期儲存容量可能會有所幫助。

問:AWS 預計到 2030 年為所有區域提供 100% 可再生能源。在您看來,AWS 在其可持續性旅程中的下一個大重點領域是什麼?

有三個方面與可持續性相關。第一個是衡量和減少直接排放,轉向可再生能源,並在此過程中報告進展。AWS 在這個方面做得很好。它在 2023 年中期釋出了一份更新,其中包括了一份長長的區域列表,這些區域現在已經是 100% 可再生能源,這意味著 AWS 生成和購買與其使用量相同數量的可再生能源。這是使用「市場方法」計算的,這也是 Google 使用的方法。兩種方法都是必要的。

第二個方面是所有關於供應鏈的事情,瞭解您的購買有多可持續,對供應商施加壓力以清潔其產品,並向客戶披露資訊。AWS 在與其供應商合作方面做得很好,但它沒有向其客戶提供必要的資訊,以便正確地將其使用 AWS 的碳足跡歸屬於個別產品及其客戶。AWS 比 Azure 和 Google 落後了幾年,並且需要專注於趕上。

第三個方面是氣候風險衡量和報告。這包括對建築物、通訊基礎設施從海平面上升、火災、極端天氣和受影響員工等物理風險,以及市場風險,因為高碳產品被替代。這是一個未來幾年內需要關注的大領域,並且有自己的立法報告規則即將出臺。例如,AWS 表示它小心地確保區域內的區域不會同時失敗。但如果一個區域有位於洪水泛濫區或“龍捲風走廊”中的區域,那就是一些客戶可能需要了解的風險,以便他們可以模擬自己的風險。目前沒有任何雲供應商具有氣候風險資訊(截至 2023 年底),我認為這個領域將需要在未來幾年內得到關注。

準備未來:伺服器無法

我們才剛剛開始探索伺服器無法技術,它還有幾十年的生命力。 —Jeff Barr

當一頭小牛出生時,它會接觸到一個完全新的生態系統,離開母親子宮的舒適環境。它需要一個好的清潔(由玄貓完成)才能使它的眼睛感知新的環境。

當你第一次接觸伺服器無法技術時,你的感受可能與新生的小牛類別似。技術看起來很複雜;你聽到很多意見;人們爭論伺服器無法的定義;你看到一切都是分散式的;很多東西都是為你管理好的;你陷入非同步處理中,周圍的世界變得事件驅動。你感到自己正在被伺服器無法淹沒。

但很快,小牛就開始看到事物——尤其是它的朋友和家人站在四條腿上。它想要站起來並努力站穩自己的蹄子,這是一個艱難而費力的過程。但為了克服這個挑戰並完成這個艱苦的行為,小牛必須重新連線大腦並改變思維方式,以便以不同的方式看待周圍的世界。

本文早期章節豐富了你所需的細節,以啟動向伺服器無法思維方式的轉變,幫助你以不同的方式看待技術。不再只是團隊中的一名程式設計師,每天都在編寫程式碼,你成了一名多技能工程師,可以使用受控服務構建伺服器無法微服務。你學會瞭如何構建模組化和可擴充套件的伺服器無法應用程式,使其壽命更長。

伺服器無伺服器技術的未來趨勢

隨著技術的不斷演進,伺服器無伺服器技術也在不斷發展。瞭解未來的趨勢對於企業和開發者來說至關重要。

低程式碼和無函式的承諾

低程式碼和無函式的概念是伺服器無伺服器技術的一個重要趨勢。這意味著開發者可以使用更少的程式碼和更簡單的函式來實作複雜的應用程式。這種趨勢是由於雲端計算提供商不斷增加對於管理服務的支援,從而減少了開發者需要編寫的程式碼量。

事件驅動架構的復興

事件驅動架構是一種設計模式,它根據事件和訊息的處理。這種架構在伺服器無伺服器技術中尤其重要,因為它允許開發者建立更靈活和可擴充套件的應用程式。事件驅動架構的復興是由於其在處理複雜系統和大資料中的優勢。

多雲協調

多雲協調是指在多個雲端計算提供商之間協調和管理資源的能力。這種能力對於企業來說尤其重要,因為它允許他們使用最適合其業務需求的雲端計算服務。然而,多雲協調也帶來了挑戰,例如如何在不同的雲端計算提供商之間進行協調和管理。

根據程式碼的基礎設施

根據程式碼的基礎設施是一種新的趨勢,它允許開發者使用程式碼來定義和管理基礎設施。這種方法可以提高基礎設施的靈活性和可擴充套件性,但是也帶來了挑戰,例如如何管理和維護基礎設施。

可觀察性作為程式碼

可觀察性作為程式碼是一種新的趨勢,它允許開發者使用程式碼來定義和管理應用程式的可觀察性。這種方法可以提高應用程式的可維護性和可擴充套件性,但是也帶來了挑戰,例如如何管理和維護可觀察性。

內容解密:

  • 伺服器無伺服器技術的未來趨勢包括低程式碼和無函式、事件驅動架構的復興、多雲協調、根據程式碼的基礎設施和可觀察性作為程式碼。
  • 低程式碼和無函式的概念是伺服器無伺服器技術的一個重要趨勢。
  • 事件驅動架構的復興是由於其在處理複雜系統和大資料中的優勢。
  • 多雲協調是指在多個雲端計算提供商之間協調和管理資源的能力。
  • 根據程式碼的基礎設施是一種新的趨勢,它允許開發者使用程式碼來定義和管理基礎設施。
  • 可觀察性作為程式碼是一種新的趨勢,它允許開發者使用程式碼來定義和管理應用程式的可觀察性。
  flowchart TD
    A[伺服器無伺服器技術] --> B[低程式碼和無函式]
    A --> C[事件驅動架構的復興]
    A --> D[多雲協調]
    A --> E[根據程式碼的基礎設施]
    A --> F[可觀察性作為程式碼]

圖表翻譯:

  • 圖表展示了伺服器無伺服器技術的未來趨勢,包括低程式碼和無函式、事件驅動架構的復興、多雲協調、根據程式碼的基礎設施和可觀察性作為程式碼。
  • 圖表使用流程圖來展示這些趨勢之間的關係。
  • 圖表中,每個節點代表了一個趨勢,箭頭代表了這些趨勢之間的關係。

從商業價值視角來看,匯入永續性考量到無伺服器應用程式開發和佈署流程中,不僅僅是回應環保趨勢,更是提升企業長期競爭力的關鍵策略。透過自動化、資源最佳化、以及持續整合新的雲端服務,企業得以降低營運成本、提升效率,並將資源集中於核心業務創新。然而,技術團隊需要意識到永續性並非單純的成本縮減議題,更涉及到企業社會責任以及對未來世代的承諾。技術限制深析顯示,目前在實時碳足跡計算標準化以及供應鏈碳排放透明度方面仍有待加強,這也意味著企業需要主動參與並推動相關標準的制定。展望未來,玄貓認為,隨著低程式碼/無函式、事件驅動架構、多雲協調等技術的發展,永續性將融入軟體開發的每個環節,成為評估技術方案不可或缺的指標。對於追求長遠發展的企業而言,及早將永續性融入技術策略,才能在競爭激烈的市場中保持領先地位。