從 DevOps 到平臺工程:軟件開發(fā)的新范式

DevOps 是一種將開發(fā)和運(yùn)營結(jié)合起來的方法,在應(yīng)用規(guī)劃、開發(fā)、交付和運(yùn)營方面將人員、流程和技術(shù)結(jié)合起來。DevOps 使以前孤立的角色(如開發(fā)、IT運(yùn)營、質(zhì)量工程和安全)之間進(jìn)行協(xié)調(diào)和合作。一直以來,DevOps 的采用都是以幫助企業(yè)更快地向客戶提供價值,更好地適應(yīng)市場和競爭,并保持系統(tǒng)的穩(wěn)定性和可靠性為目標(biāo)。
?
然而,近兩年關(guān)于“DevOps 已死”的討論越來越多。該觀點持有者認(rèn)為 DevOps 模糊性,實施起來的復(fù)雜性及高成本等問題,未能達(dá)到幫助企業(yè)實現(xiàn)其加快交付、提高質(zhì)量和降低成本的目標(biāo)。
?
在這篇文章中,我們將理性分析一些反對 DevOps 的常見論點,并一同探討在當(dāng)下 DevOps 實施時所面臨的挑戰(zhàn),以及 DevOps 未來演變與平臺工程的關(guān)聯(lián)。
?
反對 DevOps 的三大觀點
DevOps 的定義過于模糊
關(guān)于 DevOps 的批評之一是它過于模糊,缺乏一個明確的定義。DevOps 對不同企業(yè)和團(tuán)隊來說意味著不同的東西,而且對 DevOps 的實際內(nèi)容也沒有達(dá)成共識。甚至有言論表示 DevOps 只是一個被供應(yīng)商和行業(yè)顧問過度使用的流行詞。
?
DevOps 實際上并不是一套僵硬的框架或規(guī)則,而更是一種文化和思維方式,能夠適應(yīng)不同的環(huán)境和目標(biāo)。DevOps 并沒有規(guī)定團(tuán)隊?wèi)?yīng)該如何工作,而是提供了可以幫助團(tuán)隊更好地合作的原則和實踐;也沒有規(guī)定團(tuán)隊?wèi)?yīng)該使用什么工具,而是鼓勵團(tuán)隊使用最適合他們需要的工具。因此 DevOps 的模糊性我們可以視為它的靈活性。DevOps 允許團(tuán)隊根據(jù)他們的具體挑戰(zhàn)和機(jī)會來定制他們的方法,還允許團(tuán)隊進(jìn)行試驗并從經(jīng)驗中學(xué)習(xí)。
?
DevOps 給企業(yè)造成成本負(fù)擔(dān)
反對 DevOps 的另一主要觀點就是,DevOps 的實施和維護(hù)成本過高。由于 DevOps 需要對企業(yè)的文化、組織架構(gòu)和技術(shù)進(jìn)行大幅度的改變,同時,還需要企業(yè)在時間、成本以及基礎(chǔ)設(shè)施方面進(jìn)行大量投資。因此有部分企業(yè)中的 IT 主管或領(lǐng)導(dǎo)并不愿意在此花費(fèi)過多,因為他們無法保證 DevOps 實施后的實際效果。
?
不可否認(rèn),企業(yè)實施 DevOps 的確是個不小的工程。但客觀來說,DevOps 并不一定是一個全有或全無的主張。企業(yè)可以逐步和有選擇地采用 DevOps,根據(jù)自身需求和商業(yè)目標(biāo)來選擇合適的工具和實施方式,企業(yè)中現(xiàn)有的資源和基礎(chǔ)設(shè)施也可以被利用起來。這樣企業(yè)可以將采用 DevOps 的前期成本和風(fēng)險降到最低。
?
關(guān)于實施效果,DevOps 并不是一套即時的解決方案,需要從長期利益來看。DevOps 可以幫助企業(yè)減少交付過程中的浪費(fèi)、錯誤、延遲和失敗,同時提高軟件交付的質(zhì)量、效率、團(tuán)隊間的協(xié)作以及客戶滿意度。從長遠(yuǎn)來看,這些成果可以轉(zhuǎn)化為更低的成本、更高的收入和更好的競爭優(yōu)勢。
?
DevOps 過于復(fù)雜
第三個反對 DevOps 的聲音來自于對其復(fù)雜程度的質(zhì)疑,認(rèn)為 DevOps 難以實施和管理。DevOps 通常涉及多項技術(shù)挑戰(zhàn)和較高的復(fù)雜性,因此導(dǎo)致開發(fā)團(tuán)隊和運(yùn)營團(tuán)隊難以上手。同時還涉及跨多個團(tuán)隊的大量協(xié)調(diào)和溝通,這在大型或分布式組織中可能是個極大的挑戰(zhàn)。
?
實際上 DevOps 是為了簡化和精簡軟件開發(fā)生命周期,而不是使其復(fù)雜化。DevOps 依賴自動化、標(biāo)準(zhǔn)化和集成,以減少人工任務(wù)、錯誤和依賴性。此外,DevOps 并不是一個適用于所有情況的萬能解決方案。企業(yè)需要根據(jù)他們的具體環(huán)境和要求來定制 DevOps 方法,并利用各種工具和技術(shù)來促進(jìn) DevOps 的實施和管理。例如,使用版本控制來跟蹤和記錄變化;或使用告警管理來統(tǒng)一和優(yōu)先處理緊急狀況。
?
DevOps 實際存在的問題
DevOps 自 2007 年隨著企業(yè)規(guī)模、行業(yè)以及現(xiàn)有的 IT 環(huán)境的變化,針對 DevOps 的反對聲音也并非空穴來風(fēng),DevOps 在概念上、流程和技術(shù)等方的確面臨著巨大的挑戰(zhàn)。
?
首先許多企業(yè)對 DevOps 的概念存在誤解,未能采用 DevOps 的基本原則和文化,導(dǎo)致實施時存在偏差,即僅僅雇傭一個“DevOps 工程師”或使用一些 DevOps 友好的工具。這就導(dǎo)致了混亂、孤島和低效率等問題。因為 DevOps 并不是一個角色或一個工具,而是一種思維方式和一種實踐,需要企業(yè)變革和確保一致性。
?
DevOps 的核心理念是“you build it, you run it”,這給開發(fā)人員增加了過多的壓力和認(rèn)知負(fù)擔(dān),開發(fā)人員不得不處理復(fù)雜且多樣的基礎(chǔ)設(shè)施、安全、合規(guī)和運(yùn)維等問題,開發(fā)人員通常不擅長或缺乏處理這些任務(wù)的技能和工具,從而需要耗費(fèi)大量時間和精力。而過多的精力花費(fèi)在非開發(fā)任務(wù)上,導(dǎo)致開發(fā)人員無法將核心能力價值最大化利用。
?
此外,隨著分布式系統(tǒng)的廣泛應(yīng)用,其復(fù)雜性越來越高,DevOps 變得更加難以實施和管理(當(dāng)然問題的根本來自于現(xiàn)代軟件開發(fā)的復(fù)雜性增加而非 DevOps 本身)。企業(yè)需要對其基礎(chǔ)設(shè)施和環(huán)境有更多的控制和可見性,以及更多的敏捷性和速度來滿足業(yè)務(wù)需求。DevOps 也難以應(yīng)對云原生技術(shù)(如容器、Kubernetes、微服務(wù)和無服務(wù)器)的多樣性和波動性。
?
平臺工程的崛起
為了解決上述問題,一些企業(yè)正在嘗試將 DevOps 演變到下一階段,通過創(chuàng)建可重用、自助式平臺的實踐,使開發(fā)人員能夠以最小的摩擦構(gòu)建、部署和運(yùn)行其應(yīng)用程序,這就是平臺工程逐漸崛起的契機(jī)。
?
平臺工程相比 DevOps 有以下幾個優(yōu)勢:
?
賦能開發(fā)人員:平臺工程為開發(fā)人員提供了一個“黃金路徑”,為他們的應(yīng)用程序提供最佳的工具、實踐和安全措施。開發(fā)人員可以自助獲取他們需要的資源,而不用擔(dān)心底層的細(xì)節(jié)或依賴關(guān)系。平臺工程還通過降低復(fù)雜性、提高生產(chǎn)力、增強(qiáng)質(zhì)量和加速反饋循環(huán),改善了開發(fā)人員的體驗。
啟用平臺工程團(tuán)隊:平臺工程擁有專門的平臺工程師團(tuán)隊,負(fù)責(zé)構(gòu)建、維護(hù)和改進(jìn)支持開發(fā)人員的平臺,平臺工程師充當(dāng)促進(jìn)者和協(xié)調(diào)者。同時,平臺工程師可以利用云原生技術(shù)(如容器、Kubernetes、微服務(wù)和無服務(wù)器)創(chuàng)建可擴(kuò)展、彈性、可移植和成本效益良好的平臺。
利用平臺編排:平臺工程使用平臺編排工具,自動化跨不同環(huán)境的平臺的配置、部署和管理。平臺編排工具還提供對平臺及其使用情況的可見性、監(jiān)控和治理。平臺編排工具幫助平臺工程師為開發(fā)人員提供一致、可靠和安全的平臺。
改善業(yè)務(wù)成果:平臺工程通過實現(xiàn)更快更好的軟件交付,幫助組織實現(xiàn)其業(yè)務(wù)目標(biāo)。平臺工程能夠培養(yǎng)開發(fā)人員和平臺工程師之間的協(xié)作、創(chuàng)新和學(xué)習(xí)文化,并幫助組織以可靠、高成本效益和安全的方式進(jìn)行擴(kuò)展。
?
結(jié)論
DevOps 并沒有死,而是在革新和進(jìn)化,平臺工程則是 DevOps 的下一個演變階段,相較于 DevOps,其優(yōu)勢是以可持續(xù)的方式賦能和助力開發(fā)人員。平臺工程能夠幫助企業(yè)組織應(yīng)對云原生環(huán)境的復(fù)雜性和增長,同時實現(xiàn)更快更好的軟件交付。