壹 前言
隨著雲端計算的快速發展,企業正在積極探索在現代化軟體開發環境中如何提高研發效率、加速產品交付以及更好地支持內部開發團隊,為實現這些目標,平台工程概念應運而生。平台工程是軟體工程行業的新興領域,其主要目標是通過減少軟體交付的複雜性和不確定性,從而提高開發者的效率和生產力,加速業務價值的交付。本文將從平台工程興起原因、為什麼平台工程如此重要、什麼是平台工程,以及實踐平台工程等多個面向探討這一趨勢。
貳 科技發展現況
一、 平台工程的興起
Puppet公司在2023年發佈了一份DevOps報告[1],該報告的主要焦點關注於平台工程(Platform Engineering)。報告指出,擁有平台工程團隊的企業,他們不僅在開發速度方面取得了明顯的提升,同時系統的可靠性也有所增強,生產效率也大幅提高,並且工作流程變得更加規範化。平台工程是DevOps的延續和發展,目的是在DevOps基礎上,進一步提升軟體開發效率和開發者體驗。典型的DevOps強調團隊文化“你建立了,你營運它(You Build It, You Run It)”,通過整合開發和維運,實現工具鏈整合和自動化,目標是提高軟體迭代和維運效率。然而,隨著近年來湧現出各種複雜且多樣的DevOps和雲原生相關工具、產品和服務,開發者面臨了極大的技術複雜性認知負擔(cognitive load)。面對這些痛點,平台工程應運而生,平台工程的目標是從“能用”到“好用”,強調開發者自助服務(Self-Service)。引入了平台團隊(Platform Engineering Teams)和開發團隊(Development Team)的職能分工,以及內部開發者平台(Internal Developer Platform, IDP)和開發者入口網站(Developer Portal, DevPortal)等平台能力。其本質上是在軟體工程層面進一步提升效率與降低成本,隨著平台工程的發展,可以幫助企業進一步實現軟體快速迭代和雲原生技術落地。
Gartner連續兩年(2023與2024)將平台工程列為十大策略技術趨勢之一,如圖1所示[2-3],根據Gartner的預測,到2026年,將有80%的軟體工程組織建立內部平台團隊,提供可重複使用的服務、元件和應用交付工具。平台工程興起的背後有以下幾個驅動因素:
首先,平台工程實踐可以優化開發者的體驗,加速業務價值的交付。平台團隊通過提供自助服務、標準化流程等方式,減少了開發者的重複努力,使他們能更專注在創造業務價值的工作上。其次,平台工程改善了開發者的體驗和生產力,降低了他們對複雜的現代化IT技術堆棧的認知負擔,開發者無需關注基礎設施細節,可以專注在應用開發上。最後,平台工程提高了開發者自主獨立運行、管理和開發應用程式的能力,不再依賴手動支持,同時確保了可靠性和安全性,如此對開發者友善的組織環境也可協助企業留住和吸引關鍵人才。
綜上所述,平台工程成為趨勢是因為它提升了開發效率和質量,更好地激發了開發者的潛力,這對企業的數位轉型至關重要。
二、 平台工程概念
平台工程是一種現代化軟體開發和交付實踐,旨在提高開發者的生產力並實現價值的高效交付,通過以產品思維建立和維護內部開發者平台和開發者入口網站,使開發者能夠更專注於業務功能開發,而無需花費時間和精力去學習如何使用基礎設施和工具。這有助於降低開發者的技術學習曲線,改善開發者體驗以促進開發效率,提高開發者的生產力。本節將分別介紹Gartner定義的平台高階概念圖以及CNCF平台工程白皮書描述的平台能力。
Gartner定義的平台及其主要元件的高階概念圖,如圖2所示[4]。一個專門的平台工程團隊負責創建和維護數位平台(Digital Platform),其主要目標是通過提供可重複使用、可組合和可配置的平台元件、知識和服務,以及與複雜的基礎設施平台(Infrastructure Platform)進行協作,以滿足產品開發團隊的需求。各種雲端服務、基礎設施、儲存、安全等能力由外部的供應商提供,平台將這些服務進行抽象化並整合,透過統一介面呈現給產品開發團隊使用。產品開發團隊只需要透過平台使用各種能力,而不必自己配置多個供應商的服務。平台的具體功能完全取決於最終用戶的需求。平台團隊必須了解他們用戶群體的需求,確定工作優先順序,然後建構一個對目標受眾有幫助的平台。
CNCF 對於平台工程的具體能力要求,如圖3所示[5]。它基於DevOps工具和雲原生架構基礎設施能力,並拓展了平台工程的兩項關鍵要素:內部開發者平台(IDP)和開發者入口網站(DevPortal)。
首先,平台工程依賴於一系列基本要素,包括基礎設施提供方(如IaaS、PaaS、存儲和中間件)、CI/CD工具鏈(包括製品倉庫、CI和CD工具)、平台界面(包括配置管理、APIs和CLIs、文檔和搜索)以及相關的能力(如權限、可觀測性和安全性)。這些要素共同建構了一個全面的平台工程。
內部開發者平台(IDP)是平台工程中的一個關鍵元素,它是由平台團隊建構的,旨在整合應用程式的交付技術和工具鏈。IDP的主要價值在於降低開發者的認知負擔,實現開發者的自助,並提供應用程式建構的黃金途徑(golden path)。平台團隊會制定最佳實務和模板範本,指導產品開發團隊如何最好地使用平台能力,通過建立黃金路徑並實現開發者自助服務,平台團隊確保產品開發團隊能夠最佳地使用這些能力。平台團隊遵循最佳實踐,將其平台視為產品,並根據使用者研究進行建置、維護和持續改進。
開發者入口網站(DevPortal)是另一個關鍵元素,它是面向開發者服務的網站門戶,提供了所有軟體、工具和資源的全局整合視圖。其價值在於解決業務軟體信息孤島和內部研發維運工具碎片化的問題,使開發者能夠輕鬆地找到並訪問所需的資源。
IDP和DevPortal之間存在密切的關聯,內部開發者入口充當開發者訪問內部開發者平台功能的接口。通過這些元素的整合,平台工程旨在簡化開發者的工作流程,提供更好的開發體驗,並提高應用程式的交付效率。
三、 平台工程實踐原則
平台工程本質上是綜合技術學科,旨在建立和管理內部平台,從提高效率到降低風險,再到確保平台的質量。當組織中的開發團隊越來越多,出現了重複建設、缺乏協作、工具混亂等問題時,就是考慮建立平台工程的時機。平台工程可以通過標準化和自動化改善這些痛點,使組織能夠更好地應對快速變化的技術環境,並在競爭激烈的市場中脫穎而出。以下是平台工程的關鍵實踐原則:
(1) 最小可實施性
首先,平台工程要關注解決組織內常見的問題,避免平台功能無限擴散。與最終使用者合作確定對他們最有價值的技術能力和流程,並以此為基礎建構平台。平台團隊需要對每個能力領域的工具鏈支持進行合理抽象,使其能夠為多個團隊提供可重用的功能和模板。
(2) 平台即產品
平台團隊需要採用產品思維,將使用者體驗置於開發的核心。從使用者的角度出發,思考平台功能的建設,並專注於為使用者提供真正價值的內容。平台建設應遵循產品方法論,通過用戶研究和反饋建構解決方案,並不斷交付功能。良好的用戶體驗是驅動開發者採用平台的關鍵,平台需要提供簡單、直觀的界面,遵循UX最佳實踐。
(3) 自助式服務
自助服務功能讓開發者可以自主與按需使用平台上的資源,如测试環境、工具等,而無需等待手動審批或操作,極大提高效率。平台應提供自動化的工作流程和API來實現自助服務,自助服務應該與底層基礎設施和自動化解耦,以適應平台的不斷演進。除此之外,標準化是推動自動化的關鍵,也可以幫助加速開發流程,確保合規性和治理政策的一致性。即使應用程式在不同基礎設施堆棧上遵循不同流程,也可以通過自助平台實施相同的預設規則,使開發人員遵循相同的標準和互通性。
參 結論
平台工程強調提供自助性的工具和簡化流程,以提高開發者的生產力並實現高效的價值交付。這不僅關係到技術,還涉及到文化和流程的改變,對企業實現數位轉型和敏捷開發有更高的要求。這個領域的發展將幫助組織解決複雜性和不確定性的挑戰,並提供更多適應快速變化的技術環境的機會。近年PlatformCon大會[6]受到業界眾多的平台參與者持續關注,平台工程社區也在持續壯大,通過業界與平台社區的這些努力,平台工程將繼續發揮其關鍵作用,這有助於協助企業更好地導入平台工程,應對不斷變化的軟體工程挑戰,實現數位轉型目標,提供更好的產品和服務,滿足客戶需求。
肆 參考文獻
[1]Puppet, The State of Platform Engineering Report, Available at: https://www.puppet.com/resources/state-of-platform-engineering
[2]Gartner, Top 10 Strategic Technology Trends for 2023, Available at: https://www.gartner.com/en/articles/gartner-top-10-strategic-technology-trends-for-2023
[3]Gartner, Top 10 Strategic Technology Trends for 2024, Available at: https://www.gartner.com/en/articles/gartner-top-10-strategic-technology-trends-for-2024
[4]Gartner, What Is Platform Engineering?, Available at:https://www.gartner.com/en/articles/what-is-platform-engineering
[5]CNCF Platforms White Paper, Available at: https://tag-app-delivery.cncf.io/whitepapers/platforms/
[6]Platform Engineering Community,PlatformCon, Available at: https://platformcon.com/