CNCF 白皮書 - 《平臺工程白皮書》
譯者按:
2022年,“平臺工程” 這個概念十分火熱,相關項目在 CNCF 社區里 star 數的增速也高居前列,它也落在 的炒作上升周期曲線上。
上還有大 V 的言論說 “ 已死,平臺工程才是未來“。
倡導開發者要去關注底層基礎設施,但不少開發者不愿意和基礎設施打交道,希望得到解放。
而企業發展確實需要自己基礎設施,則 “平臺工程” 統一了這兩個矛盾點,所以也有種說法:“平臺工程” 是 的下一站。
圖源 :
但關于平臺工程的詮釋,一直比較模糊。幾天前,CNCF 的應用交付技術小組(App- TAG) 發布了《平臺工程白皮書》(原文:),其主旨:在于把內部云 “平臺” 當作產品來規劃,通過門戶和 API,達到一致性用戶體驗,并通過 “黃金路徑”、自助化自動化、能力最優組合,最終賦能開發團隊,降低認知心智,提高生產率。
目前社區里的一些當紅項目,比如 就是 “平臺” 概念的極佳展現。同時,Argo、、 等也在不同方向,為平臺提供多維度的能力。這也印證了 一直倡導的「尋找云原生 “全局最優解”」,而 最新推出的 DCE 5.0 正是對此的一個落地和詮釋。DCE 5.0 社區版免費開放(在線安裝地址:),歡迎個人、機構、企業使用體驗云原生底座的性能,一起尋找 “最優解”。
接下來,讓我們一起來讀讀這個《平臺工程白皮書》吧。
01
概述
受到 成功推動跨職能合作的啟發,平臺工程 ( ) 也開始在企業中作為明確的協作形式而涌現。"平臺" 所提供的基礎能力、框架和經驗,很大程度上簡化并加速了內部用戶的工作(如應用程序開發者、數據科學家和信息處理者)。特別是在云計算方面,“平臺” 已經幫助企業實現了云計算長期承諾的價值:如快速產品發布、跨基礎設施的可移植性、更安全更彈性的產品,以及更高的開發者生產力。
本文旨在幫助企業技術決策者們(企業管理者、企業架構師、平臺組管理者),去調研、規劃、推廣內部的云計算平臺。我們相信 "平臺" 對企業的價值流 ( ) 會產生重要影響,但因為這個影響是間接性的,所以管理者們的共識和支持,對于平臺團隊的可持續性和成功是至關重要的。在本文中,我們將討論幾個要點:定義、衡量、實施和最大化平臺的價值。
目錄:
為什么需要一個平臺
平臺是什么
一個成功的平臺,應具備的屬性
一個成功的平臺團隊,應具備的屬性
實施平臺的挑戰
如何度量平臺的成功
平臺的能力
02為何需要
一個平臺?
平臺和平臺工程在云計算世界中是一個熱門話題。在深入平臺構建的定義、技術和度量之前,讓我們首先探討這火熱的平臺概念所提供的價值。
過去二三十年間的軟件流程改進,為開發者提供了豐富的基礎架構(如計算,網絡,存儲,開發者服務如構建、測試、交付和可觀測性等),顯著提高了開發的敏捷性。但這種自治和流程改進,也逐漸使得基礎服務的運營職責,(從基礎團隊)左移到了產品開發團隊,迫使他們在基礎架構方面花費越來越多的時間和認知精力,減少了他們為組織(和產品)產生價值的時間。
為了能讓開發團隊重新聚焦于他們的核心任務,和減少組織內重復工作,這個目標驅動著企業去實施云原生計算平臺。通過投資這個平臺,企業可以收獲:
減輕產品團隊的認知負擔,從而加速產品的開發和交付。
通過專家的配置和管理,提高依賴于平臺能力的產品的可靠性和彈性。
在團隊之間重用、共享平臺工具和知識,加速產品的開發和交付。
通過治理平臺能力,治理與其相關的用戶、工具和流程,來減少產品和服務在安全、監管和功能問題上的風險。
充分利用公共云和托管服務提供商,實現降本增效, 同時保持對用戶體驗的控制。
這些好處來源于三方面原因:一方面是因為少量平臺團隊可服務于許多產品團隊,從而放大了他們的影響;第二個方面是因為平臺團隊整合了常見功能的管理,并促進了治理;第三個方面是因為平臺團隊強調用戶界面和體驗優于一切。
平臺專家團隊不僅減輕了產品開發團隊的常規工作,還優化了這些產品中使用的平臺能力。平臺團隊還維護了一組公共的約定范式、知識和工具,在這共通的基礎上,開發者能夠快速為其他團隊和產品做出貢獻。同時,這種模式還能(通過技術手段)把治理和管控的目的融入模板、模式和能力中。最后,因為平臺團隊在公有云或私有化供應商之上,集中構筑了一致體驗,所以能使那些基礎但無差別的服務使用得更加高效:如數據庫、身份訪問、基礎架構操作和應用程序生命周期。
03什么是平臺
云原生計算平臺,是一個匯集了平臺用戶所需功能的集合。它確保了一致的體驗,集成了通用應用場景的典型服務能力。良好的平臺提供一致的用戶體驗來使用其服務,例如:Web 門戶、項目模板和自助式 API。
據 的說法[1]:“平臺團隊創建的能力,可以被眾多流程一致的產品開發團隊使用,而幾乎沒有額外的開銷.....平臺團隊最小化了團隊的資源和認知負擔....平臺團隊可以將不同產品的體驗統一起來。”
和 Evan 說過[2],“數字平臺是一組自助式 API、工具、服務、知識和支持的基礎,這些都被組織到一個統一的內部產品中。自治的開發團隊可以利用平臺,更快交付產品功能,減少協調。”
平臺支持的特定能力和場景,應由利益相關者和用戶的需求確定。雖然平臺 “提供” 這些能力,但需要注意的是,平臺團隊不應總是自己 “實現” 它們。可以讓托管服務提供商或專門的內部團隊來維護和實現,而平臺則是提供一致性的 “最薄合理層”,以滿足組織的要求。例如,一個非常簡單的 “平臺”: 可以是一個 wiki 頁面,包含從提供商獲取能力的方法和流程[3]。
由于這些平臺的目標用戶,不多不少,正是企業的內部使用者,因此我們通常將它們稱為 “內部” 平臺。
平臺和云原生架構息息相關,相比以前的其他范例,平臺更需把應用特定邏輯和通用能力分開。在類似云的環境中,資源和能力通常是獨立管理的,并與業務緊密集成;這些資源可能包括數據庫和對象存儲、消息隊列和代理、可觀測性采集器和儀表板、用戶目錄和身份驗證系統、任務執行器和協調器等等。內部平臺不單單向企業團隊提供這些資源能力,并以一種能夠被應用簡單集成的方式來提供。
平臺成熟度
最初,內部平臺能提供單一服務的能力和一致性體驗:比如 CI 的流水線 、數據庫或密鑰 () 存儲。隨著它們的成熟,內部平臺還提供了這些服務的 “組合”:比如用于關鍵場景(如 Web 應用程序開發、如數據分析(即 ))的自助式模板。
平臺的使用中,可能會經歷以下過程:
產品開發人員可以按需提供能力,并立即使用它們來運行系統,例如計算、存儲、數據庫或身份認證信息。
產品開發人員可以按需提供自服務的租戶空間,并使用它們來運行流水線管道和任務,存儲 和配置,和收集遙測數據。
第三方軟件的管理員,可以按需提供依賴項,例如數據庫,并輕松安裝和運行之。
產品開發人員可以從模板(包括運行時和開發時所需的服務)中,按需提供完整的環境,例如 Web 開發或 。
產品開發人員和經理可以通過自動化的工具和標準儀表板,觀察已部署服務的功能、性能和成本。
內部平臺通過單個能力或能力組合,提供一致、符合要求的體驗,最終使其用戶更輕松、更高效地交付有價值的產品。
04平臺的屬性
在定義了平臺是什么,以及為什么組織希望構建一個平臺之后,讓我們識別一些影響平臺成功的關鍵屬性。
1. 平臺即產品( as a ):平臺是為了滿足其用戶的需求而存在,類似于任何其他軟件產品,應基于這些需求進行設計和演進。平臺應提供必要的能力,優先支持大多數產品團隊的常見需求,而非優先考慮僅某個團隊使用的具體能力,以最大化提供的價值。
2. 用戶體驗:平臺應通過一致的界面,并專注于用戶體驗。平臺應努力滿足不同用戶的需求,這可能意味著 GUI、API、命令行工具、IDE 和門戶都要有。例如,平臺通常提供部署應用程序的能力。開發人員可以通過 IDE 來使用這種能力,測試人員可以使用命令行工具,而產品經理可以使用基于 GUI 的 Web 門戶。
3. 文檔和快速入門:文檔是成功軟件產品的關鍵方面。為了能夠使用平臺的產品,用戶需要文檔和示例。平臺應隨著適當的文檔一起交付,以滿足其用戶的需求。它還應提供工具,以加速使用平臺服務的新項目的上手。例如,平臺可以提供一個可復用的工作流,為在 上構建、掃描、測試、部署和觀察 Web 應用程序。這樣的典型工作流,可以作為一個新手上手模板和文檔,這個組合通常被稱為“黃金路徑”。
4. 自助式:平臺應是自助式的。用戶必須能夠自主且自動地請求和接收能力。這是允許一個平臺團隊能支撐許多產品團隊并按需“擴容”的關鍵。平臺能力應按需提供,并僅需最少的手動干預。例如,用戶應能運行命令行工具或在 Web 門戶上填寫表單來申請一個數據庫,并能看到它的 和認證信息。
5. 減少認知負擔:平臺的一個重要目標是減少產品團隊的認知負荷。平臺應封裝實現細節,并隱藏可能從其架構中產生的任何復雜性。例如,平臺可能將某些服務委托給云提供商,但不應向用戶暴露此類細節。同時,平臺應允許用戶按需配置和查看某些服務。用戶不應負責運維底層服務。例如,用戶經常需要一個數據庫,但他們不應該管理數據庫服務器。
6. 可選和可組合:平臺旨在使產品開發更加高效,而不是”成為障礙“。平臺應該是可組合的,并使產品團隊僅使用部分能力。當平臺不具備某些能力時,產品團隊還應能自己部署和使用外部組件。例如,如果平臺不提供數據庫,而這是產品所需的,那么產品團隊應能夠自行提供和運維 數據庫。
7. 默認安全:平臺應默認情況下是安全的,并提供符合組織定義的規則,和標準的合規性和驗證能力。
05平臺團隊
的屬性
平臺團隊負責平臺功能的接口和體驗,例如 Web 門戶、自定義 API 和 “黃金路徑模板”。一方面,平臺團隊與實施基礎設施和支持服務的團隊合作,以定義一致的體驗;另一方面,他們與產品和用戶團隊合作。收集反饋并確保這些體驗符合要求。
以下是平臺團隊應負責的工作:
研究平臺用戶需求并規劃 ;
在企業內宣貫和傳播平臺的價值;
管理和開發界面,包括門戶、API、文檔、模板、以及 CLI 工具;
最重要的是,平臺團隊必須了解平臺用戶的需求,以告知并不斷改進其平臺提供的功能和界面。了解用戶需求的方法包括用戶訪談、交互式黑客馬拉松、問題跟蹤和問卷調查,以及通過可觀測性工具直接觀察使用情況。例如,平臺團隊可以發布一個表單供用戶提交功能申請,主持 會議以分享即將推出的功能,并分析用戶的使用方式以調整優先級。
收集外部反饋和周到設計是平臺團隊工作的一方面;另一方面是主動對外營銷和宣傳。如果該平臺真正是根據用戶需求構建的,那么這些用戶將很高興使用所提供的功能。平臺團隊可以通過內部營銷活動,包括公告、引人入勝的演示以及定期反饋和溝通會議,來提高用戶采用度。這里的關鍵是在用戶所在的地方與他們會面,并讓他們踏上與平臺互動并從中受益的旅程。
平臺團隊不一定自己運維計算、網絡、存儲或其他服務。實際上一個內部平臺應盡可能依賴外部提供的服務和能力;平臺團隊只有在無法從托管供應商或內部基礎設施團隊那里獲得這些能力時,才應構建和維護自己的能力。相反,平臺團隊主要負責接口(即 GUI、CLI 和 API)以及平臺提供的服務和功能的用戶體驗。
例如,平臺中的網頁可能會有個按鈕來為應用程序提供身份認證;而該功能的實現可能是通過云托管的身份服務。內部平臺團隊可能會管理網頁和 API,但不會管理實際的服務實現。平臺團隊通常應僅在其他地方無法提供所需功能時才考慮創建和維護自己的功能。
06平臺的挑戰
雖然平臺承諾了很多價值,但它們也帶來了如下挑戰,實施者應牢記這些挑戰:
1. 平臺團隊必須像對待產品一樣對待他們的平臺,并與用戶一起開發它們;
2. 平臺團隊必須謹慎選擇優先級,以及初始合作的應用開發團隊;
3. 平臺團隊必須尋求企業領導層的支持并展示對價值流的影響。
也許最重要的是將平臺視為面向客戶的產品,其成功直接取決于其用戶和產品的成功;因此,平臺團隊與應用程序團隊等用戶合作,對平臺的功能和用戶體驗進行優先排序、規劃、實施和迭代至關重要。平臺團隊在沒有反饋的情況下發布功能和體驗,或者依靠自上而下強制推動采用,幾乎肯定會遭到用戶的抵制和不滿,并丟失很多承諾的價值。為了解決這個問題,平臺團隊應該從一開始就要有產品經理角色,來分享路線圖、收集反饋并普遍理解和代表平臺用戶的需求。
在采用平臺時,首先選擇正確的功能和體驗至關重要。經常需要且區分度不高的功能,如 CI 、數據庫和可觀測性,可能是一個很好的起點。平臺團隊也可以選擇首先關注少數優秀的應用程序團隊,根據來自他們的反饋改善了首次平臺體驗,他們未來還能把平臺宣傳給后續采用者。
最后,在大型企業中,獲得領導的支持至關重要。許多企業領導者將 IT 基礎架構視為與其主要價值流完全脫節的支出,并可能試圖限制分配給 IT 平臺的成本和資源。從而導致實施不力、承諾無法兌現和挫敗感。為了緩解這種情況,平臺團隊需要證明他們對產品和價值流團隊的直接影響和關系(見前兩段),將平臺團隊展示為產品團隊的戰略合作伙伴,共同為客戶提供價值。
如何賦能平臺團隊
平臺團隊面臨著許多導致認知負擔的挑戰。就像同行的應用程序團隊一樣,這一挑戰隨著產品的用戶的數量和多樣性而增加。
重要的是將平臺團隊的精力集中在他們特定業務所獨有的經驗和能力上。減輕平臺團隊負擔的方法包括:
1. 尋求在托管供應商的實施之上,構建最薄的可行平臺層;
2. 利用開源框架和工具包,創建供應用程序團隊使用的文檔、模板和能力組合;
3. 確保平臺團隊配備適合其領域和客戶數量的團隊成員。
07如何衡量
平臺的成功
企業很希望衡量他們的平臺投入,是否能實現上述討論的價值和屬性。此外,在本文中,我們一直強調將內部平臺視為產品的重要性,良好的產品管理取決于對產品的定量和定性的衡量。為了滿足這些要求,內部平臺團隊應不斷收集用戶反饋,并衡量用戶活動。
然而,與內部平臺的其他方面一樣,平臺團隊應該盡最小的努力來收集他們需要的反饋。我們會建議去建立一些指標(但在初期,對用戶行為進行簡單的調查和分析可能最有用)。
如下,是一些有助于企業和平臺團隊了解其平臺影響的指標類別。
用戶滿意度和生產力
許多平臺所追求的首要特性,是改善用戶體驗以提高生產率。而反映用戶滿意度和工作效率的指標包括:
組織效率
許多平臺尋求的另一個好處是:有效地為大量用戶群提供共同需求。這靠提供用戶自助服務并減少手動步驟和人工干預來實現的,同時實施“策略管理”以確保安全性和合規性。要衡量平臺在減少重復工作方面的收效,請考慮以下措施:
產品和功能交付
內部平臺的最終目標是更快地為客戶提供商業價值,因此它對企業自身產品和功能發布的收效,是平臺最好的成果展示。谷歌的 研究與評估 (DORA) 研究所建議[5]跟蹤以下指標:
通常,平臺團隊的一個關鍵目標,是使基礎設施等 IT 功能與企業的價值流(其產品)保持一致。因此,歸根結底,組織的產品和應用程序的成功,才是衡量平臺成功與否的真正標準。
08平臺能力
正如我們所描述的,云原生計算平臺提供并組合了來自許多提供商的功能和服務。這些提供商可能是同一企業內的其他團隊或第三方,如云服務提供商。簡而言之,平臺是從底層 “能力提供者” 到平臺用戶(如應用程序開發人員)的橋梁;并在此過程中實施和執行安全、性能、成本治理和一致體驗所需的實踐。下圖說明了產品、平臺和能力提供者之間的關系。