聊聊我所理解的平臺(tái)工程
圖片
Gartner 將平臺(tái)工程列為 2024 頂級(jí)戰(zhàn)略技術(shù)趨勢(shì)之一
說(shuō)起平臺(tái)工程(Platform Engineering) ,經(jīng)常聽(tīng)到有人說(shuō)是:新瓶裝(平臺(tái)工程)舊酒(DevOps)。
今天根據(jù)過(guò)去自服務(wù)平臺(tái)的實(shí)踐經(jīng)驗(yàn),聊聊我所理解的平臺(tái)工程。
說(shuō)到平臺(tái)工程,不可不免地要聊聊云原生,不過(guò)這里不會(huì)針對(duì)是否轉(zhuǎn)向云原生進(jìn)行討論。
云原生的三駕馬車(chē):微服務(wù)、Kubernetes、DevOps。根據(jù)過(guò)往的實(shí)踐經(jīng)驗(yàn),我認(rèn)為云原生技術(shù)平臺(tái)的核心能力(包括但并不限于)可概括為:
容器平臺(tái):專(zhuān)注于容器化技術(shù)和 Kubernetes 編排,實(shí)現(xiàn)應(yīng)用的彈性、高效存儲(chǔ)和網(wǎng)絡(luò)通信。這為微服務(wù)和 DevOps 的實(shí)現(xiàn)提供了基礎(chǔ)架構(gòu)支持。
微服務(wù)平臺(tái):集中管理微服務(wù),包括統(tǒng)一的服務(wù)治理、配置管理、API 網(wǎng)關(guān)和支持多樣的微服務(wù)框架,以適應(yīng)復(fù)雜的服務(wù)交互和靈活的開(kāi)發(fā)需求。
監(jiān)控平臺(tái):提供全方位的監(jiān)控系統(tǒng),包括日志收集、性能指標(biāo)監(jiān)控、鏈路跟蹤、實(shí)時(shí)告警以及監(jiān)控?cái)?shù)據(jù)的可視化展示,助力于系統(tǒng)的穩(wěn)定運(yùn)行和故障迅速定位。
DevOps 集成平臺(tái):集成持續(xù)集成和持續(xù)部署(CICD)流程,以及文檔中心和代碼質(zhì)量管理,實(shí)現(xiàn)自動(dòng)化、高效和標(biāo)準(zhǔn)化的軟件開(kāi)發(fā)和運(yùn)維流程。
對(duì)于風(fēng)靡多年的云原生(近來(lái)也有降溫的趨勢(shì)?),業(yè)界的褒貶不一:提升了研發(fā)效率和資源的利用率,;浪費(fèi)資源、部署維護(hù)困難、可觀(guān)測(cè)性變差等等。
云原生技術(shù)所面臨的眾多負(fù)面反饋,很大程度上源于其本身的復(fù)雜性。云原生平臺(tái)向開(kāi)發(fā)人員展現(xiàn)了過(guò)多的復(fù)雜性。
云原生技術(shù),盡管帶來(lái)了許多優(yōu)勢(shì),比如靈活性、可擴(kuò)展性和高效的資源利用,但同時(shí)也引入了一定的復(fù)雜性:
技術(shù)棧的復(fù)雜性:云原生環(huán)境通常涉及到容器化、微服務(wù)架構(gòu)、CI/CD、以及基于 Kubernetes 的容器編排等技術(shù)。這些技術(shù)各自有其學(xué)習(xí)曲線(xiàn),并且技術(shù)之間需要集成并協(xié)同工作,增加了系統(tǒng)的整體復(fù)雜性。
管理和運(yùn)維的復(fù)雜性:在云原生環(huán)境中,應(yīng)用程序通常被分解為多個(gè)微服務(wù),每個(gè)微服務(wù)部署在不同的容器中,這使得監(jiān)控、日志記錄、故障排查和性能優(yōu)化變得更加復(fù)雜。
網(wǎng)絡(luò)復(fù)雜性:微服務(wù)架構(gòu)意味著服務(wù)之間有大量的網(wǎng)絡(luò)通信,再疊加容器、混合多云的網(wǎng)絡(luò)環(huán)境,管理這些服務(wù)間的網(wǎng)絡(luò)流量、確保高可用性和網(wǎng)絡(luò)安全,以及實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)等都增加了網(wǎng)絡(luò)管理的復(fù)雜性。
可觀(guān)測(cè)性和監(jiān)控的挑戰(zhàn):確保對(duì)在不斷變化的環(huán)境中運(yùn)行的眾多微服務(wù)有足夠的可見(jiàn)性,需要復(fù)雜的監(jiān)控和日志系統(tǒng)。
安全挑戰(zhàn):云原生架構(gòu)中的分布式和動(dòng)態(tài)性質(zhì)引入了新的安全挑戰(zhàn)。例如,需要確保容器安全、服務(wù)間通信的安全,以及在動(dòng)態(tài)環(huán)境中持續(xù)地管理和更新安全策略。
這些復(fù)雜性給開(kāi)發(fā)人員帶來(lái)了顯著的摩擦和認(rèn)知負(fù)擔(dān),從而降低了他們的開(kāi)發(fā)體驗(yàn)。在專(zhuān)注于業(yè)務(wù)開(kāi)發(fā)的開(kāi)發(fā)人員與底層基礎(chǔ)設(shè)施之間,形成了一個(gè)模糊的交界區(qū)域。平臺(tái)工程正是專(zhuān)注于這個(gè)模糊地帶,旨在縮小這一差距并簡(jiǎn)化開(kāi)發(fā)流程。
平臺(tái)工程是一個(gè)膠水層。
圖片
平臺(tái)工程是一門(mén)在云原生時(shí)代為軟件工程組織設(shè)計(jì)和構(gòu)建工具鏈及工作流程的學(xué)科,旨在提供自助服務(wù)能力。平臺(tái)工程師提供的綜合產(chǎn)品通常被稱(chēng)為“內(nèi)部開(kāi)發(fā)者平臺(tái)”,涵蓋了應(yīng)用程序整個(gè)生命周期的運(yùn)營(yíng)需求。
Platform engineering is the discipline of designing and building toolchains and workflows that enable self-service capabilities for software engineering organizations in the cloud-native era. Platform engineers provide an integrated product most often referred to as an “Internal Developer Platform” covering the operational necessities of the entire lifecycle of an application.
來(lái)自 平臺(tái)工程社區(qū)的介紹[1]
平臺(tái)工程致力于構(gòu)建和維護(hù)一個(gè)橋梁,這座橋梁把復(fù)雜的基礎(chǔ)設(shè)施轉(zhuǎn)化為簡(jiǎn)化的抽象,使得開(kāi)發(fā)人員能夠?qū)W⒂跇I(yè)務(wù)邏輯的開(kāi)發(fā),無(wú)需深入鉆研底層技術(shù)細(xì)節(jié)。同時(shí),他們也努力將業(yè)務(wù)邏輯層的通用功能整合并下沉,進(jìn)一步簡(jiǎn)化開(kāi)發(fā)流程。
此處,我更傾向于將“工程”理解為一個(gè)動(dòng)詞,即對(duì)平臺(tái)進(jìn)行工程化。
什么是工程化
軟件開(kāi)發(fā)的過(guò)程標(biāo)準(zhǔn)化、系統(tǒng)化和規(guī)范化是為了提高軟件開(kāi)發(fā)效率、質(zhì)量和可維護(hù)性。這三個(gè)方面通常包括以下內(nèi)容:過(guò)程標(biāo)準(zhǔn)化、系統(tǒng)化、規(guī)范化。
- 過(guò)程標(biāo)準(zhǔn)化:定義標(biāo)準(zhǔn)流程、文檔標(biāo)準(zhǔn)、代碼規(guī)范、復(fù)用和模塊化。
- 系統(tǒng)化:工具和平臺(tái)的統(tǒng)一、自動(dòng)化、服務(wù)管理系統(tǒng)。
- 規(guī)范化:質(zhì)量控制標(biāo)準(zhǔn)、安全和合規(guī)性、性能標(biāo)準(zhǔn)。
隨著平臺(tái)工程化水平的提升,開(kāi)發(fā)人員得以享受到更高水平的自服務(wù)能力。這樣的自服務(wù)平臺(tái)的實(shí)施,進(jìn)一步縮短了開(kāi)發(fā)人員與基礎(chǔ)設(shè)施平臺(tái)之間的距離,使得開(kāi)發(fā)人員能夠更便捷地使用平臺(tái)資源,而無(wú)需深入了解底層技術(shù)細(xì)節(jié)。
自服務(wù)平臺(tái)正是工程化的產(chǎn)物,或者是平臺(tái)工程的具象化。
自服務(wù)平臺(tái)
自服務(wù)平臺(tái)使開(kāi)發(fā)人員能夠直接管理和操作資源,讓他們親自參與到軟件的整個(gè)生命周期中,同時(shí)無(wú)需關(guān)注幕后的基礎(chǔ)設(shè)施和實(shí)現(xiàn)細(xì)節(jié),并減少了平臺(tái)團(tuán)隊(duì)成員的直接介入。這種平臺(tái)遵循著“You build it, You run it”的理念,但不強(qiáng)求開(kāi)發(fā)人員深入理解底層技術(shù)(“Know-how”)。
從我的角度看,自服務(wù)平臺(tái)更像是流程和工具的結(jié)合體。在工具層面,無(wú)論是開(kāi)源還是商業(yè)軟件,都提供了對(duì)通用能力的抽象。然而,在流程方面,由于每個(gè)企業(yè)都有自己特定的管理需求和對(duì)支撐部門(mén)的依賴(lài),流程設(shè)計(jì)上會(huì)有所不同。雖然工具可能實(shí)現(xiàn)標(biāo)準(zhǔn)化,但流程很難做到這一點(diǎn)。
總結(jié)
我認(rèn)為,將平臺(tái)工程簡(jiǎn)單比喻為‘新瓶裝舊酒’是不夠全面的。實(shí)際上,平臺(tái)工程代表的是對(duì)傳統(tǒng)方法(例如 DevOps)的進(jìn)一步沉淀和提升,為其賦予了新的表現(xiàn)形式和能力。
在技術(shù)與人的互動(dòng)中,我們不應(yīng)該忽視連接和協(xié)調(diào)的重要性。軟件系統(tǒng)作為現(xiàn)實(shí)世界的一個(gè)反映,應(yīng)當(dāng)始終堅(jiān)持以人為本的原則。
參考資料
[1] 平臺(tái)工程社區(qū)的介紹: https://platformengineering.org/blog/what-is-platform-engineering