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