...

論平台工程的(de)價值

2021-06-19

論平台工程的(de)價值


我已經當了(le/liǎo)幾年的(de)平台工程師。我喜歡這(zhè)份工作,對此充滿了(le/liǎo)激情。

 

在(zài)本文中,我将讨論我的(de)專業知識所帶來(lái)的(de)好處。由于(yú)平台工程師的(de)角色還比較新,所以(yǐ)對于(yú)這(zhè)個(gè)角色的(de)需求和(hé / huò)所提供的(de)價值還沒有形成廣泛的(de)共識。假如你找三個(gè)人(rén)詢問他(tā)們對這(zhè)個(gè)問題的(de)意見,你會得到(dào)四個(gè)答案——至少在(zài)細節方面,我不(bù)會感到(dào)奇怪。另外,由于(yú)平台工程與基礎設施非常接近,不(bù)存在(zài)直接和(hé / huò)明顯的(de)價值可見性,想想前端工程,它就(jiù)可以(yǐ)顯示所提供的(de)價值。

 

不(bù)管怎麽說(shuō),我真正的(de)動機是(shì)要(yào / yāo)清楚自己對這(zhè)個(gè)問題的(de)看法,而(ér)在(zài)這(zhè)個(gè)過程中,寫作幫助了(le/liǎo)我。

 

因爲(wéi / wèi)我現在(zài)隻研究雲基礎設施,因此我所有的(de)論點,以(yǐ)及對基礎設施資源的(de)提及,都應該放在(zài)這(zhè)個(gè)背景下來(lái)看;不(bù)過我猜測,很多論斷在(zài)更傳統的(de)數據中心,甚至更寬泛的(de)範圍應該都可以(yǐ)成立。

 

在(zài)我提出(chū)有價值的(de)論點之(zhī)前,我認爲(wéi / wèi)明智的(de)做法是(shì)先簡單回顧一(yī / yì /yí)下互聯網曆史。我所許諾的(de)價值将會得到(dào)體現,這(zhè)不(bù)僅是(shì)爲(wéi / wèi)了(le/liǎo)好玩,而(ér)且是(shì)爲(wéi / wèi)了(le/liǎo)描繪一(yī / yì /yí)幅圖景。我當然是(shì)基于(yú)自己的(de)個(gè)人(rén)經曆,所以(yǐ)你的(de)情況可能會不(bù)一(yī / yì /yí)樣。

 

雲計算簡史

 

雲計算是(shì)指計算機系統資源的(de)按需可用性,尤其是(shì)數據存儲(雲存儲)和(hé / huò)計算能力,而(ér)用戶無需直接主動管理。

 

——維基百科:雲計算詞條

 

随着現代雲計算的(de)出(chū)現,計算環境發生了(le/liǎo)一(yī / yì /yí)個(gè)重大(dà)變化:硬件現在(zài)有了(le/liǎo)一(yī / yì /yí)個(gè)按需的(de) API。實際上(shàng),并不(bù)是(shì)硬件,而(ér)是(shì)資源之(zhī)前隻能通過硬件來(lái)表達。這(zhè)種情況不(bù)是(shì)一(yī / yì /yí)朝一(yī / yì /yí)夕就(jiù)能發生的(de),沒有第一(yī / yì /yí)家廠商使用“雲”這(zhè)個(gè)詞,并且爲(wéi / wèi)所有人(rén)都指定了(le/liǎo)新的(de)标準(即使有人(rén)可能會這(zhè)樣說(shuō))。這(zhè)曾經是(shì),現在(zài)依然是(shì),一(yī / yì /yí)個(gè)由必要(yào / yāo)性和(hé / huò)需求驅動的(de)過程。這(zhè)也(yě)不(bù)是(shì)一(yī / yì /yí)個(gè)進程,而(ér)是(shì)多個(gè)進程同時(shí)運行,并且以(yǐ)某種程度向同一(yī / yì /yí)方向發展。

 

對于(yú)平台工程,我認爲(wéi / wèi)兩個(gè)因果概念或技術尤其重要(yào / yāo),它們是(shì):

 

虛拟化。盡管這(zhè)一(yī / yì /yí)概念本身已經存在(zài)了(le/liǎo)幾十年,而(ér)且很久以(yǐ)前就(jiù)被用來(lái)處理邊緣案例和(hé / huò)大(dà)型企業解決方案,但是(shì)在(zài)我看來(lái),第一(yī / yì /yí)個(gè)對更大(dà)的(de)市場産生重大(dà)影響的(de)實施是(shì)虛拟服務器。虛拟服務器允許數據中心的(de)所有者将其昂貴的(de)硬件分割爲(wéi / wèi)更小的(de)塊,以(yǐ)供自己使用,并使之(zhī)更容易銷售給他(tā)人(rén)。對現有資源的(de)有效利用更爲(wéi / wèi)有效。但更重要(yào / yāo)的(de)是(shì),如果能夠在(zài)一(yī / yì /yí)個(gè)物理服務器中創建多個(gè)虛拟服務器,那麽下一(yī / yì /yí)個(gè)邏輯步驟當然是(shì)自動執行這(zhè)個(gè)過程,然後再進一(yī / yì /yí)步:自動化的(de)工具。基礎設施 API 應運而(ér)生。不(bù)隻是(shì)簡單地(dì / de)管理虛拟服務器,還包括網絡防火牆、CDN、數據庫等等,這(zhè)些都是(shì)虛拟的(de),可以(yǐ)通過 API 來(lái)實現。

 

容器化(與編排):從嚴格意義上(shàng)說(shuō),容器化是(shì)虛拟化的(de)一(yī / yì /yí)個(gè)具體實現。但我仍然認爲(wéi / wèi)它應該有介紹自己的(de)一(yī / yì /yí)段内容,因爲(wéi / wèi)沒有技術能像容器化一(yī / yì /yí)樣,在(zài)基礎設施提供商和(hé / huò)基礎設施用戶之(zhī)間架起橋梁。封裝在(zài)容器内的(de)應用使雙方在(zài)共同點上(shàng)達成一(yī / yì /yí)緻。隻有适合于(yú)容器,我們才能運行它。而(ér)且,從容器化基礎設施的(de)角度來(lái)看,也(yě)需要(yào / yāo)編排:在(zài)隔離的(de)環境下,大(dà)規模地(dì / de)運行标準化容器。

 

新範式

 

以(yǐ)上(shàng)所提到(dào)的(de)技術的(de)廣泛應用(我相信還有其他(tā)因素)引起了(le/liǎo)許多思考,并導緻了(le/liǎo)一(yī / yì /yí)系列新的(de)觀點和(hé / huò)後續業務的(de)出(chū)現。在(zài)此,我要(yào / yāo)再次強調一(yī / yì /yí)些我認爲(wéi / wèi)特别具有影響力并與背景相關的(de)因素:

 

微服務:微服務是(shì)對應用設計和(hé / huò)實現的(de)一(yī / yì /yí)種完全不(bù)同的(de)觀點。這(zhè)使你可以(yǐ)将最複雜的(de)應用視爲(wéi / wèi)一(yī / yì /yí)組不(bù)同的(de)、潛在(zài)的(de)、相互連接的(de)功能。這(zhè)一(yī / yì /yí)思路不(bù)僅适用于(yú)實現(構建“簡化”的(de)微服務),還适用于(yú)組織(擁有整體中定義良好的(de)部分),當然,對部署和(hé / huò)執行也(yě)有直接的(de)影響:單體設計通常具有對操作系統和(hé / huò)硬件(資源)的(de)大(dà)量高度特定需求,而(ér)封裝在(zài)容器中的(de)微服務可以(yǐ)在(zài)更相同的(de)基礎設施中工作,不(bù)是(shì)作爲(wéi / wèi)一(yī / yì /yí)個(gè)整體,而(ér)是(shì)按照服務(部分)來(lái)擴展,以(yǐ)更小的(de)爆炸半徑單獨失敗,等等。這(zhè)并不(bù)意味着每個(gè)應用都是(shì)(或者應該是(shì))從一(yī / yì /yí)開始就(jiù)被設計成微服務,但它仍然創造了(le/liǎo)思維方式,推動了(le/liǎo)組織,并促進了(le/liǎo)标準化。

 

寵物與牛:以(yǐ)前的(de)服務器都是(shì)有名字的(de),并且都是(shì)單獨配置的(de)。我曾經在(zài)裸機上(shàng)工作過,在(zài)将它們放進機架之(zhī)前,我親手貼上(shàng)一(yī / yì /yí)張帶有名字的(de)貼紙,我很清楚我可以(yǐ)創造的(de)“寵物”。由于(yú)能夠訪問提供虛拟服務器或任何其他(tā)資源的(de) API,因此沒有辦法,也(yě)沒有必要(yào / yāo)跟上(shàng)。現在(zài),基礎設施用戶可以(yǐ)購買完全脫離物理的(de)資源,根據需要(yào / yāo)自動擴展。結果,資源的(de)可得性就(jiù)不(bù)那麽重要(yào / yāo)了(le/liǎo)(它們隻是(shì)可得的(de));我們考慮的(de)是(shì)堆棧(資源),而(ér)非單個(gè)機器。資源就(jiù)是(shì)數字。牛,不(bù)是(shì)寵物。請參閱 Randy Bias 寫的(de)内容,他(tā)将這(zhè)一(yī / yì /yí)類比總結得很完美。

 

基礎設施即代碼:應用很複雜。操作系統也(yě)很複雜。如果兩者都是(shì)相關的(de),那就(jiù)會變得更複雜。過去,大(dà)多數人(rén),包括我在(zài)内,都是(shì)手動配置系統的(de)。這(zhè)樣就(jiù)得到(dào)了(le/liǎo)系統的(de)深刻理解,并且常常是(shì)獨特的(de)理解。這(zhè)裏所謂的(de)獨特,如在(zài):低巴士因子(zǐ)(bus factor);又如在(zài):除了(le/liǎo)一(yī / yì /yí)個(gè)人(rén)外,沒有人(rén)知道(dào)這(zhè)個(gè)系統的(de)情況。這(zhè)個(gè)問題的(de)解決方案是(shì)配置管理,它允許維護人(rén)員以(yǐ)可複制、可測試、版本控制和(hé / huò)标準化的(de)文檔方式來(lái)描述整個(gè)設置。通過這(zhè)個(gè)系統,配置可以(yǐ)很容易地(dì / de)重建(相對而(ér)言),人(rén)爲(wéi / wèi)錯誤因素大(dà)大(dà)減少,任何設置都可以(yǐ)在(zài)較短時(shí)間内被他(tā)人(rén)理解(相對而(ér)言)。基礎設施即代碼(Infrastructure as Code,IaC)在(zài)基礎設施資源方面也(yě)是(shì)如此。不(bù)再需要(yào / yāo)手動提供 / 配置 / 訂購特定服務或應用所需的(de)資源,而(ér)是(shì)使用标準化、文檔化、簽入版本控制、代碼可查看、可測試和(hé / huò)可複制的(de)代碼來(lái)描述。

 

平台即服務:随着基礎設施資源自動化日益普及,在(zài)上(shàng)述基礎設施上(shàng)運行的(de)東西也(yě)可以(yǐ)輕松地(dì / de)獲得超級能力:可擴展性。也(yě)就(jiù)是(shì)說(shuō),你隻需爲(wéi / wèi)所需資源付費。或者從商業角度來(lái)看,你隻需爲(wéi / wèi)你實際賣出(chū)的(de)東西付費(粗略地(dì / de)說(shuō))。牢記這(zhè)一(yī / yì /yí)點,我們就(jiù)不(bù)難理解爲(wéi / wèi)什麽如今幾乎所有的(de)功能都可以(yǐ)作爲(wéi / wèi)服務來(lái)購買。我們可以(yǐ)把它想象成一(yī / yì /yí)種由基礎設施即服務(Infrastructure as a Service,IaaS)提供基礎的(de)供應鏈。這(zhè)樣,平台即服務(Platform as a Service,PaaS)就(jiù)可以(yǐ)構建自己的(de)服務,這(zhè)些服務包括計算運行時(shí)、數據庫、CDN 等等。通過這(zhè)種方式,軟件即服務(Software as a Service,SaaS)的(de)構建者可以(yǐ)将注意力集中在(zài)他(tā)們自己的(de)領域:軟件構建,而(ér)不(bù)是(shì)深入到(dào)基礎設施層。而(ér)且人(rén)們還可以(yǐ)根據需要(yào / yāo)增加或減少需求。請注意,在(zài)撰寫本文時(shí),維基百科上(shàng)列出(chū)的(de)“即服務”類型有 75 種,因此我略去了(le/liǎo)一(yī / yì /yí)些。但重點是(shì),市場已經改變。諸如硬件、操作系統、服務操作之(zhī)類的(de)問題現在(zài)可以(yǐ)外包,按需購買。

 

所有這(zhè)些範式深深地(dì / de)糾纏在(zài)一(yī / yì /yí)起。你可以(yǐ)認爲(wéi / wèi)“平台即服務”是(shì)“微服務”的(de)結果,反之(zhī)亦然。另外,如果沒有“基礎設施即代碼”,寵物與牛是(shì)幾乎不(bù)可能的(de),而(ér)後者是(shì)前者所需要(yào / yāo)的(de)。

 

什麽是(shì)平台工程?

 

在(zài)讨論平台工程帶來(lái)的(de)價值之(zhī)前,我需要(yào / yāo)先說(shuō)明我所說(shuō)的(de)是(shì)什麽意思(或者不(bù)是(shì)什麽意思)。也(yě)要(yào / yāo)記得,我的(de)觀點是(shì),角色就(jiù)像一(yī / yì /yí)頂帽子(zǐ):你可以(yǐ)根據需要(yào / yāo)戴帽子(zǐ)。有些帽子(zǐ)是(shì)你經常戴的(de),有些帽子(zǐ)是(shì)你比别人(rén)更喜歡的(de),而(ér)有些帽子(zǐ)你會藏起來(lái),希望以(yǐ)後不(bù)要(yào / yāo)把它拿出(chū)來(lái)。角色沒有明确的(de)界限,也(yě)不(bù)與職位挂鈎。

 

平台化

 

我認爲(wéi / wèi)可以(yǐ)肯定地(dì / de)說(shuō),平台工程師參與平台的(de)建設。由于(yú)平台這(zhè)一(yī / yì /yí)術語相當模糊,所以(yǐ)我将試着在(zài)本文的(de)範圍内解釋我的(de)意思。讓我們從以(yǐ)下幾個(gè)方面開始:平台是(shì)一(yī / yì /yí)個(gè)定義良好的(de)接口,它簡化了(le/liǎo)對資源的(de)處理和(hé / huò)訪問。

 

當然,在(zài)平台工程領域中,這(zhè)些資源都是(shì)某種基礎設施資源。從軟件開發人(rén)員的(de)角度來(lái)說(shuō),門面設計模式是(shì)我所能想到(dào)的(de)最接近平台關鍵屬性的(de)。在(zài)我看來(lái),平台是(shì)由一(yī / yì /yí)個(gè)或多個(gè)“服務門面(facade)”機器接口規範和(hé / huò)文檔組成的(de)。這(zhè)一(yī / yì /yí)切都是(shì)必要(yào / yāo)的(de),因爲(wéi / wèi)平台的(de)目的(de)就(jiù)是(shì)自動化通用用例。

 

對于(yú)用戶來(lái)說(shuō),平台基本上(shàng)是(shì)透明的(de)(比如,你不(bù)知道(dào)裏面發生了(le/liǎo)什麽),但我不(bù)确定這(zhè)是(shì)否一(yī / yì /yí)個(gè)要(yào / yāo)求——盡管在(zài)大(dà)多數情況下這(zhè)肯定是(shì)個(gè)好主意。

 

根據這(zhè)一(yī / yì /yí)定義,GitHub 就(jiù)是(shì)一(yī / yì /yí)個(gè)平台。AWS 也(yě)是(shì)一(yī / yì /yí)個(gè)平台,更确切地(dì / de)說(shuō),它是(shì)一(yī / yì /yí)個(gè)平台中的(de)平台。但任何單獨的(de)、内部創建的(de)解決方案都是(shì)一(yī / yì /yí)個(gè)平台,它爲(wéi / wèi)管理你的(de)用例使用所需的(de)基礎設施資源提供了(le/liǎo)簡化的(de)接口。

 

平台化就(jiù)是(shì)要(yào / yāo)确定常見的(de)用例(或模式),爲(wéi / wèi)描述這(zhè)些用例的(de)接口進行建模,提供實現這(zhè)些用例的(de)自動化解決方案,并将其文檔化,這(zhè)樣過程就(jiù)可以(yǐ)以(yǐ)最小的(de)人(rén)工交互進行使用。

 

平台工程就(jiù)是(shì)與平台化相關的(de)學科。

 

與其他(tā)角色相比

 

盡管平台工程是(shì)一(yī / yì /yí)個(gè)新的(de)角色,但它并非憑空而(ér)來(lái),而(ér)是(shì)對現有的(de)其他(tā)角色和(hé / huò)職責進行了(le/liǎo)專門劃分——與所有角色一(yī / yì /yí)樣。在(zài)我看來(lái),以(yǐ)下幾點對平台工程有重大(dà)影響:

 

我認爲(wéi / wèi)DevOps 工程師最接近平台工程的(de)角色,他(tā)們專注于(yú)爲(wéi / wèi)特定應用(基于(yú)雲基礎設施)提供解決方案。或者說(shuō)我這(zhè)樣認爲(wéi / wèi):畢竟 DevOps 是(shì)一(yī / yì /yí)種生活方式。這(zhè)是(shì)一(yī / yì /yí)個(gè)非常接近于(yú)平台工程的(de)東西。在(zài)我看來(lái),主要(yào / yāo)的(de)區别應該是(shì)視角和(hé / huò)所得到(dào)的(de)的(de)規模。DevOps 工程師提倡“他(tā)們”的(de)應用,而(ér)平台工程則關注大(dà)量或全部應用。DevOps 工程師處理特殊用例(構建一(yī / yì /yí)組特定應用運行的(de)基礎設施),而(ér)平台工程處理普通用例(構建所有 / 大(dà)多數應用運行的(de)平台)。DevOps 工程師對細節更感興趣,而(ér)平台工程則更關注共性。根據我的(de)經驗,這(zhè)兩者通常都有需要(yào / yāo),邊界非常模糊,而(ér)且經常是(shì)同一(yī / yì /yí)個(gè)人(rén)“戴着兩頂帽子(zǐ)”。

 

平台工程師角色的(de)起源可能涉及到(dào)基礎設施工程師的(de)角色,其重點是(shì)構建、部署和(hé / huò)維護基礎設施。這(zhè)個(gè)角色接近于(yú)系統管理員、網絡工程師以(yǐ)及可能還有 DevOps。這(zhè)超出(chū)了(le/liǎo)雲的(de)範疇,因爲(wéi / wèi)它還涉及到(dào)數據中心。本文隻涉及雲相關的(de)範圍。在(zài)這(zhè)個(gè)術語中,我認爲(wéi / wèi)是(shì)“雲(基礎設施)工程師”,所以(yǐ)我就(jiù)是(shì)這(zhè)個(gè)意思。自然的(de),平台工程師從這(zhè)裏開始,使用(雲) 基礎設施,并對基礎設施進行全面的(de)思考。最大(dà)的(de)不(bù)同在(zài)于(yú),基礎設施工程師非常注重可操作性和(hé / huò)可靠性,而(ér)平台工程則是(shì)注重可訪問性。

 

另外,後端工程師也(yě)發揮了(le/liǎo)作用,他(tā)們專注于(yú)應用的(de)數據訪問層。它的(de)範圍很廣,有許多子(zǐ)專業,而(ér)且肯定接近 DevOps。其中一(yī / yì /yí)個(gè)核心問題是(shì) API 的(de)設計和(hé / huò)實現,包括處理數據源、隊列等等。平台工程也(yě)做這(zhè)些,不(bù)過目的(de)不(bù)同。後端工程師是(shì)由平台工程創建的(de)平台的(de)“客戶”(公司内部),并在(zài)平台上(shàng)構建自己的(de)應用。

 

我曾說(shuō)過,邊界很難畫出(chū)來(lái),可能會有更多的(de)角色(比如網站可靠性工程),我想和(hé / huò)他(tā)們比較一(yī / yì /yí)下,但是(shì)有時(shí)候我不(bù)得不(bù)停下來(lái),希望這(zhè)個(gè)描繪的(de)更清晰一(yī / yì /yí)些。

 

價值主張

 

最後,我要(yào / yāo)談一(yī / yì /yí)下我的(de)論點:平台工程的(de)價值。

 

鑒于(yú)技術領域的(de)變化,以(yǐ)及由此産生的(de)新範式,我們可以(yǐ)清楚地(dì / de)看到(dào):應用生态圈的(de)複雜性正在(zài)增加。但這(zhè)并非因爲(wéi / wèi)使用基礎設施或應用開發方面的(de)複雜性增加所緻。事實上(shàng),基礎設施的(de)事情已經變得非常簡單了(le/liǎo),有了(le/liǎo)基礎設施即代碼等,從我的(de)角度來(lái)看,應用開發也(yě)在(zài)易用性方面取得了(le/liǎo)長足的(de)進步。

 

那是(shì)什麽呢?嗯,這(zhè)是(shì)巨大(dà)成功的(de)錯誤所在(zài):我所強調的(de)變化(以(yǐ)及其他(tā)變化)帶來(lái)了(le/liǎo)更多的(de)可能性和(hé / huò)機會。現在(zài)人(rén)人(rén)都能很容易獲得可擴展性嗎?好吧,這(zhè)也(yě)意味着現在(zài)每個(gè)人(rén)都在(zài)關注這(zhè)個(gè)問題。正因爲(wéi / wèi)如此,平台工程才起到(dào)關鍵作用:它通過降低用戶和(hé / huò)應用開發者的(de)複雜性,幫助使這(zhè)些機會更容易獲得。

 

具體而(ér)言:

 

标準 PaaS 推銷方式

 

PaaS(Platform as a Service,平台即服務)的(de)優勢主要(yào / yāo)在(zài)于(yú)它可以(yǐ)進行更高級别的(de)編程,而(ér)複雜性則大(dà)大(dà)降低。

 

——維基百科:平台即服務詞條

 

首先:我認爲(wéi / wèi)這(zhè)應該是(shì)一(yī / yì /yí)般的(de)作爲(wéi / wèi)服務的(de)推銷,而(ér)不(bù)是(shì)專門針對 PaaS 的(de)。比如。“平台即服務”的(de)優勢主要(yào / yāo)在(zài)于(yú),它可以(yǐ)在(zài)更高的(de)級别上(shàng)進行使用,而(ér)複雜性則大(dà)大(dà)降低:你知道(dào),發送電子(zǐ)郵件、流媒體電影。如果有其他(tā)選擇,所有更好的(de)接口都會大(dà)幅降低複雜性。

 

這(zhè)就(jiù)是(shì)平台工程可以(yǐ)完成的(de)工作:爲(wéi / wèi)基礎設施資源創建更高級别的(de)接口,這(zhè)些接口的(de)設計是(shì)爲(wéi / wèi)了(le/liǎo)使它們适合用例,然後實現它們。隻不(bù)過不(bù)是(shì)爲(wéi / wèi)任何終端用戶,就(jiù)像上(shàng)面一(yī / yì /yí)般的(de)服務推銷所暗示的(de)那樣,而(ér)是(shì)爲(wéi / wèi)應用開發者服務。标準化是(shì)免費的(de)回報。

 

當然,平台工程師并非專爲(wéi / wèi) PaaS 提供商工作的(de)(周圍沒有那麽多),他(tā)們在(zài)各地(dì / de)搭建平台。大(dà)多數 PaaS 提供商面向的(de)是(shì)大(dà)衆市場。有很多公司因爲(wéi / wèi)規模、安全、法律、遺留系統或者其他(tā)的(de)原因不(bù)适合這(zhè)個(gè)産品。他(tā)們仍需要(yào / yāo)使用由開發人(rén)員創建的(de)基礎設施來(lái)運行服務。

 

DevOps 工程和(hé / huò)平台工程在(zài)專注于(yú)應用層的(de)開發人(rén)員和(hé / huò)提供用于(yú)運行應用的(de)資源的(de)基礎設施提供商之(zhī)間架起了(le/liǎo)一(yī / yì /yí)座橋梁。DevOps 工程提供了(le/liǎo)一(yī / yì /yí)個(gè)解決方案,可以(yǐ)在(zài)雲基礎設施中運行一(yī / yì /yí)組小型、專業化的(de)服務。平台工程以(yǐ)平台的(de)形式提供解決方案,在(zài)雲基礎設施中運行更通用的(de)服務。二者之(zhī)間的(de)邊界非常模糊,主要(yào / yāo)是(shì)規模和(hé / huò)增長的(de)問題。

 

無論哪種方式:這(zhè)使開發人(rén)員能夠集中精力開發應用,他(tā)們在(zài)這(zhè)方面非常出(chū)色。依我看,你當然應該盡早開始平台化,除非你不(bù)期待基礎設施的(de)發展或變化。

 

價值:持久、高節奏的(de)開發進度。

 

抵消技術債務

 

随着事情的(de)改變或發展,技術債務也(yě)随之(zhī)增加。一(yī / yì /yí)直如此,除非你停滞不(bù)前。問題不(bù)在(zài)于(yú)如何完全阻止它,而(ér)在(zài)于(yú)如何減緩它,讓它變得可控,在(zài)你被迫停止之(zhī)前不(bù)會增加。

 

許多因素導緻了(le/liǎo)技術債務的(de)增加。當然,也(yě)有業務方面的(de)原因,因爲(wéi / wèi)它們占據了(le/liǎo)優先地(dì / de)位,使人(rén)們幾乎沒有或根本沒有時(shí)間去調整基礎設施或軟件設計來(lái)抵消累積的(de)技術債務。此外,還存在(zài)結構或架構方面的(de)原因。類似微服務這(zhè)樣的(de)模式也(yě)是(shì)爲(wéi / wèi)了(le/liǎo)從架構方面解決這(zhè)個(gè)問題而(ér)産生的(de)。

 

造成技術債務快速增長的(de)一(yī / yì /yí)個(gè)主要(yào / yāo)因素是(shì),同一(yī / yì /yí)問題有太多的(de)解決方案。就(jiù)像其他(tā)的(de)應用一(yī / yì /yí)樣,它們也(yě)有自己獨特的(de)部署管道(dào)、服務運行時(shí)、數據庫設置或者是(shì)所有你能想到(dào)的(de)東西。一(yī / yì /yí)座正在(zài)發展中的(de)解決方案和(hé / huò)模式的(de)“動物園”,在(zài)此刻聽起來(lái)也(yě)許是(shì)不(bù)錯的(de)主意,因爲(wéi / wèi)它們解決了(le/liǎo)眼前的(de)問題,但在(zài)未來(lái)卻會變成一(yī / yì /yí)片難以(yǐ)處理的(de)混亂,非常脆弱,在(zài)這(zhè)裏危險,不(bù)可觸碰,否則風險很大(dà)。

 

平台工程至少通過提供一(yī / yì /yí)個(gè)标準化的(de)框架(服務的(de)共同标準),在(zài)不(bù)同程度上(shàng)抵消了(le/liǎo)這(zhè)最後一(yī / yì /yí)個(gè)因素,以(yǐ)及其他(tā)因素。它還強制執行明确的(de)邊界和(hé / huò)接口,使你可以(yǐ)更容易地(dì / de)理解、發展和(hé / huò)改變應用的(de)前景,無論是(shì)現在(zài)還是(shì)将來(lái)。

 

與此密切相關的(de)是(shì),久而(ér)久之(zhī),遺留問題也(yě)在(zài)不(bù)斷積累。它還會轉化成要(yào / yāo)求在(zài)某個(gè)時(shí)間償還的(de)技術債務。盡管平台工程并不(bù)直接解決遺留問題,但它将這(zhè)些問題限定于(yú)組成服務或應用的(de)商定邊界之(zhī)内。

 

最後,平台工程孕育了(le/liǎo)像前面提到(dào)的(de)微服務這(zhè)樣的(de)現代範式,它本身可以(yǐ)抵消技術債務。平台在(zài)這(zhè)方面起到(dào)了(le/liǎo)支持和(hé / huò)推動的(de)作用。

 

價值:變革的(de)敏捷性 / 不(bù)間斷的(de)增長。

 

爲(wéi / wèi)變化做好準備

 

唯一(yī / yì /yí)不(bù)變的(de)就(jiù)是(shì)變化。早在(zài) 2500 年前,人(rén)們就(jiù)已經知道(dào)了(le/liǎo)這(zhè)一(yī / yì /yí)點,甚至對于(yú)現代的(de)應用基礎設施而(ér)言,它仍然适用。然而(ér),當變化到(dào)來(lái)的(de)時(shí)候,我們仍然會感到(dào)驚奇。我在(zài)這(zhè)個(gè)生态圈工作了(le/liǎo) 20 年,從來(lái)沒有遇到(dào)過一(yī / yì /yí)個(gè)系統不(bù)會随時(shí)間而(ér)改變的(de)情況。變化有許多形式。你可以(yǐ)做一(yī / yì /yí)些小事情,比如增加應用價值的(de)新功能,也(yě)可以(yǐ)做一(yī / yì /yí)些根本性的(de)改變,比如從物理數據中心遷移到(dào)雲基礎設施,或者重新構建整個(gè)應用。不(bù)管怎麽說(shuō):事情會發生變化,你需要(yào / yāo)做好準備,或者在(zài)變化來(lái)臨時(shí)支付高額的(de)賬單。這(zhè)是(shì)必然的(de)。

 

你猜對了(le/liǎo),這(zhè)裏有一(yī / yì /yí)個(gè)共同的(de)主題:平台工程是(shì)爲(wéi / wèi)了(le/liǎo)拯救。怎麽說(shuō)呢?它爲(wéi / wèi)部署和(hé / huò)運行你的(de)應用提供了(le/liǎo)一(yī / yì /yí)個(gè)标準化的(de)環境。重點在(zài)于(yú)“标準化”一(yī / yì /yí)詞。可以(yǐ)這(zhè)樣想,移動一(yī / yì /yí)百個(gè)應用,每一(yī / yì /yí)個(gè)都有各自的(de)部署和(hé / huò)運行服務的(de)方式,這(zhè)是(shì)非常困難的(de),甚至是(shì)可怕的(de)。而(ér)移動一(yī / yì /yí)百個(gè)具有共同部署和(hé / huò)運行服務方式的(de)應用就(jiù)容易得多。毫無疑問,一(yī / yì /yí)個(gè)平台可以(yǐ)提供這(zhè)些共享的(de)共性。

 

這(zhè)也(yě)意味着:平台的(de)早期。也(yě)許不(bù)是(shì)在(zài)打造 MVP 的(de)時(shí)候,即使是(shì)我也(yě)不(bù)會提倡這(zhè)樣做,但是(shì)要(yào / yāo)确保時(shí)間足夠早,以(yǐ)使标準化工作不(bù)會太過痛苦,讓你對其視而(ér)不(bù)見。找出(chū)合适的(de)時(shí)機并非易事,所以(yǐ),要(yào / yāo)盡早進入平台。

 

價值:靈活性(應用基礎設施中的(de)靈活性轉化爲(wéi / wèi)業務中的(de)靈活性)。

 

作者介紹:

 

Ulrich Kautz,居住德國(guó)柏林,高級平台工程師,供職于(yú) Scout24 Group。

 

原文鏈接:

 

https://ulrichkautz.com/posts/2021-03-11_value-of-platforming-engineering/


來(lái)源:InfoQ