平臺工程101:Dev、Sec和Ops的自動化黏合劑
國際權威知名調研機構 Gartner 在《2023年最重要的10個技術趨勢》報告中將平臺工程(Platform Engineering)列為高速發(fā)展的技術趨勢之一,并預測到2026年80%的軟件企業(yè)都將搭建平臺團隊以為內部的工程師提供可復用的服務、組件以及工具來幫助應用交付。
?

何謂平臺工程(Platform Engineering)?
平臺工程是一門新興技術,專注于通過減少現(xiàn)代軟件交付的復雜性和不確定性來提高開發(fā)人員的生產力。它解決了規(guī)?;疍evOps的一些最大挑戰(zhàn),包括減少在整個應用生命周期內管理復雜工具和基礎設施網(wǎng)絡的負擔。無論是基礎設施配置、流水線、監(jiān)控還是容器管理等,自助服務平臺將所有這些復雜的問題放入黑盒中,進而為開發(fā)人員提供開箱即用的所有必要工具。
?
平臺團隊將基礎設施管理自動化,并使開發(fā)人員能夠從一個集中管理的技術平臺上自助獲取可靠的工具和工作流程。由于減輕了開發(fā)團隊的認知負擔,平臺工程是云原生軟件交付的一個重要轉向。
?
平臺工程 vs DevSecOps
正如我們之前諸多文章中闡述的那樣,DevSecOps 將安全左移到開發(fā)流程中,借助各類工具簡化部署、管理、監(jiān)控以及安全治理等工作,在獲得 DevOps 敏捷交付優(yōu)勢的同時還能保障軟件開發(fā)的安全。而平臺工程會借鑒 DevSecOps 的做法,采用這些工具、流程和最佳實踐,并將其產品化為可重復使用的服務和工具,以便在企業(yè)內部的不同開發(fā)團隊和實際場景中使用。
?
舉個例子,企業(yè)里的每個產品團隊都有證書輪換的需求,此時如果有一個統(tǒng)一的服務能解決這一需求將會省下許多麻煩,也就是需要解決方案可重復。那么如果有多個需求都與此類似,那么表明企業(yè)內部需要一個平臺來統(tǒng)一解決此類問題,而不是讓每個團隊都重復造輪子。
?
平臺工程是隨著DevOps的成熟和規(guī)模的擴大而出現(xiàn)的。在DevOps(或 DevSecOps)的前期階段企業(yè)內部的每個開發(fā)團隊都會創(chuàng)造符合其自身需求的實踐。例如,交付物可以是 Terraform 模板或 Terraform 模塊,工程師隨后可以 clone 并添加他們的配置,但在 clone 之后,就不再維護最初的那套模板或模塊了。于是如果產生問題,那么問題的解決方案通常存在于各個團隊內部。
?
隨著企業(yè)的成熟和發(fā)展壯大,DevSecOps 會走向后期成熟階段。在此階段,企業(yè)開始收集數(shù)據(jù)點并了解 DevSecOps 工具和實踐的影響,此時會發(fā)現(xiàn)不同團隊正在分別解決同樣的問題,這十分低效,因此企業(yè)內部各團隊需要借助統(tǒng)一的共享平臺來避免重復造輪子。
?
平臺工程的主要優(yōu)勢
如上文所述,平臺工程可以為研發(fā)團隊提供更好的開發(fā)體驗,這一小節(jié)我們將詳細聊聊平臺工程的主要優(yōu)勢。
?
1. 加速開發(fā)周期
在沒有平臺工程的情況下,許多開發(fā)流程是手動的。無論是手動創(chuàng)建和配置代碼倉庫,管理云基礎設施,還是創(chuàng)建CI/CD流水線,手動過程都需要時間,而且容易出錯,許多安全問題恰恰由于配置錯誤產生。
?
平臺工程非常注重流程的自動化。因此,在自動化平臺的幫助下,開發(fā)人員可以更快地傳輸他們的代碼?,F(xiàn)在,開發(fā)人員可以通過自助服務來啟動環(huán)境和交付他們的軟件版本,進而大大加快開發(fā)周期。一個與自動化測試集成的代碼流水線將可以在不影響質量或進度的情況下為你的客戶提供商業(yè)價值。因此,產品進入市場的時間將被縮短。
?
2. 消除操作的復雜度
基礎設施和應用程序的自助服務部署將會消除流程中的復雜度。平臺工程會自動化整個 DevOps 周期,進而提升生產力以及減輕開發(fā)人員的負擔。在傳統(tǒng)方法里,開發(fā)人員依賴于 DevOps 團隊創(chuàng)建和維護軟件部署。現(xiàn)如今,借助自助服務門戶,開發(fā)人員可以自主、快速交付新版本。這將會簡化企業(yè)內部的開發(fā)流程。
?
3. 將產品開發(fā)提升到新水準
有這樣一個場景:開發(fā)者需要對微服務應用程序進行一個微小的更改,首先進入 staging 階段,其次再進入生產環(huán)境。這是一個多集群 Kubernetes 環(huán)境。只有掌握了 Kubernetes、Helm chart 以及 Terraform 模塊的開發(fā)者才能夠自己完成所有的部署流程。但是規(guī)模較小的企業(yè)可能沒有預算來招聘這么多的資深開發(fā)者。那么,此時借助平臺工程師的幫助,開發(fā)人員無需將此類工作推卸給運維團隊,而僅需點擊幾下即可將代碼推送到任意環(huán)境,而無需了解復雜的底層架構。這改善了不同團隊成員之間的反饋迭代,使產品更加完善,進而為客戶帶來巨大的商業(yè)價值。
?
4. 通過環(huán)境自動化擴展應用程序
當前大多數(shù) CI/CD 設置主要聚焦于容器鏡像的更新。CI server 在配置中構建鏡像并更新鏡像路徑。然而,當你需要完成以下事項時,則變得有些復雜:
啟動新環(huán)境
移除環(huán)境鏡像或更改現(xiàn)有環(huán)境的配置
回滾新配置的環(huán)境
從環(huán)境中添加/移除資源?
平臺工程師為開發(fā)環(huán)境提供全面的環(huán)境自動化,開發(fā)人員可以創(chuàng)建、復制、移除和更新部署環(huán)境而無需了解底層架構知識。這意味著,甚至初級的UX開發(fā)也可以自助使用環(huán)境,這個環(huán)境已經完全配置了開發(fā)者需要部署和測試的一切。自動化環(huán)境的能力可以讓業(yè)務快速、高效增長。
?
上文所提到的平臺工程團隊的優(yōu)勢十分誘人,那么是否每個企業(yè)都需要采用呢?
?
企業(yè)何時需要平臺工程團隊?
如果企業(yè)內部已經有團隊跨職能來管理應用基礎設施、部署以及運維等工作,那么企業(yè)應該開始考慮平臺工程,因為這在不知不覺之間已經完成了平臺工程的部分內容。
?
另外,如果企業(yè)已經有一個成熟的產品,一個清晰的發(fā)展愿景并計劃開始擴展市場,那么此時也是搭建平臺團隊的好時機。
?
如果企業(yè)管理者希望開發(fā)團隊專注于產品的開發(fā),而不是被基礎設施配置、代碼流水線設置、密鑰管理等工作牽扯精力,那么企業(yè)需要一個平臺工程團隊。借助該團隊的幫助,應用開發(fā)人員可以輕松將代碼推送到生產環(huán)境中。
?
如果企業(yè)內部的工程團隊人數(shù)正在增長,同時云原生應用也需要擴展,那么僅僅有技術專家是不夠的,還需要團隊之間的合作。在一個開發(fā)團隊中,并不是所有的團隊成員在技術上都善于處理擴展操作。團隊中的一個薄弱環(huán)節(jié)會降低團隊的速度,減慢整個開發(fā)周期的速度。在這種情況下,平臺工程團隊將是理想的選擇。
?
另一方面,如果企業(yè)規(guī)模不大,僅有屈指可數(shù)的幾位開發(fā)人員來構建一個單體應用,那么平臺團隊對于該企業(yè)來說收益并不大。此時,企業(yè)需要首先專注于實現(xiàn)產品與市場的契合,并將任何重復的任務自動化,使開發(fā)人員能夠專注于創(chuàng)新。此后,開始將應用程序分割成單獨的服務,需要由多個工程團隊交付不同的價值時,可以開始引入平臺團隊,他們可以幫助你實現(xiàn)效率和穩(wěn)定性的最佳平衡。
?
平臺工程的實踐原則
平臺工程的原則和理論總結起來可以用一句話概括,即真正重要的是將平臺工程付諸實踐。平臺團隊一開始可以先從小處著手,聚焦于所有團隊都會用到的技術棧。換言之,平臺團隊不應該構建一個類似于“萬金油”的平臺,而是關注某個具體的技術,比如容器和K8S。
?
平臺搭建初期需要先確立目標,比如在不增加認知負荷的情況下實現(xiàn)開發(fā)者自助服務,或者在不強迫開發(fā)者學習以基礎設施為中心的技術的情況下實現(xiàn)運維工單數(shù)量的減少。
?
構建平臺最好的方式是采用產品的方法,即Platform as a Product,通過用戶研究、征求用戶反饋、獲得內部相關方的認可,進而平臺團隊可以全面了解開發(fā)者的痛點和整個組企業(yè)所面臨的共同挑戰(zhàn)。這些決定了開發(fā)人員需要什么特性,進而構建包含這些解決方案的黃金通道。
?
但平臺不止于此,成功的平臺團隊會持續(xù)保持與開發(fā)人員的溝通并跟蹤一些指標(如部署頻率、交付時間、穩(wěn)定性等)以確保開發(fā)人員采用了平臺并且對其開發(fā)體驗有所改善。
?
平臺團隊及其所提供的黃金路徑是將所有復雜設置黏合在一起的膠水,但由于平臺團隊只面向內部工作,許多企業(yè)錯誤地將其視為成本控制中心。平臺團隊應該努力爭取利益相關者群體的內部認同,以確保其內部平臺項目的長效性。
?
最后,也許也是最重要的一點,成功的平臺團隊應盡量避免重復造輪子。平臺工程的 landscape 正在不斷發(fā)展壯大,以解決廣泛的問題。平臺團隊可以通過盡可能地定制現(xiàn)成的解決方案來節(jié)省時間和創(chuàng)造更多價值。
?
總結
本文我們詳細介紹了平臺工程(Platform Engineering)這一新興技術,包括其與 DevSecOps 的關系、主要優(yōu)勢以及實踐原則,作為 DevSecOps 成熟化、規(guī)模化的產物,平臺工程可以幫助企業(yè)減輕開發(fā)人員的認知負擔和基礎運維的負擔,避免重復造輪子,幫助企業(yè)提升開發(fā)效率,進而產生更大的商業(yè)價值。