Matt Asay
“乏味”(boring)是對基礎(chǔ)架構(gòu)技術(shù)所能給予的最高贊譽之一。沒有人想要在“火辣時髦”的技術(shù)上運行關(guān)鍵任務(wù)應(yīng)用程序。但如果是乏味的技術(shù)呢?那很好。
乏味表明一項技術(shù)的普遍性和可信度已到了某種程度,它廣為人知且易于管理。Kubernetes已部署在78%的企業(yè)的生產(chǎn)環(huán)境中,可以說已到了這個程度,已被廣泛認(rèn)為是“切實可行”的支持云的標(biāo)準(zhǔn)底層技術(shù)。
或者換句話說,Kubernetes已變得“乏味”。
就在云原生計算基金會(CNCF)幫助協(xié)調(diào)其他一系列項目的開發(fā),以填補Kubernetes在基礎(chǔ)架構(gòu)層留下的任何空白之際,Kubernetes方面的對話已開始轉(zhuǎn)移到堆棧上層。今年4月,知名的開發(fā)者倡導(dǎo)者Kelsey Hightower表示,Kubernetes只解決了更新改造應(yīng)用程序的一半問題:
“在基礎(chǔ)架構(gòu)層‘更新改造應(yīng)用程序方面投入了大量的努力,但是在應(yīng)用程序?qū)樱ㄏ胂肟蚣芎蛻?yīng)用程序服務(wù)器)方面沒有同等的投入,我們只解決了一半問題。”
對此我們該怎么辦?
Lightbend的首席技術(shù)官兼聯(lián)合創(chuàng)始人Jonas Bonér在接受采訪時說:“基礎(chǔ)架構(gòu)與構(gòu)建完整應(yīng)用程序之間存在巨大空白?!盉onér幫助啟動了開源項目Akka,該項目位于堆棧中的Kubernetes之上,旨在解決基礎(chǔ)架構(gòu)和應(yīng)用程序之間的一個復(fù)雜問題。正如Bonér所說:“程序員要做的實際工作就是填補這個巨大的空白,這就意味著為業(yè)務(wù)部門提供服務(wù)等級協(xié)議(SLA),這在分布式系統(tǒng)中很難實現(xiàn),但應(yīng)用程序?qū)右浞掷肒ubernetes及其生態(tài)系統(tǒng),就需要這么做?!?/p>
Bonér繼續(xù)說,企業(yè)組織需要讓介于應(yīng)用程序和基礎(chǔ)架構(gòu)之間的系統(tǒng)完全切實可行。不是說關(guān)鍵在于替換任何系統(tǒng),而是往工具箱添加更多工具,并將基礎(chǔ)架構(gòu)隔離模型以及網(wǎng)絡(luò)施加的約束擴展到應(yīng)用程序本身中——并以一種直觀、靈活、強大但又簡單的編程模型來提供。
正如特斯拉的兩名工程師在去年一次會議上所討論的,特斯拉依賴“數(shù)字孿生”功能支持其電網(wǎng),這一切得益于Akka和Kubernetes的結(jié)合。特斯拉工程師Colin Breck說:“我們的大多數(shù)微服務(wù)在Kubernetes中運行,而Akka和Kubernetes可謂天作之合?!?/p>
他解釋道:“Kubernetes可以處理擴展方面的粗粒度故障,因此可以進行諸如增加或減少Pod、運行存活監(jiān)測或以指數(shù)退避機制重啟失效Pod之類的操作。然后,我們使用Akka處理細(xì)粒度故障,比如斷路或重試單個請求,以及為單個實體的狀態(tài)(比如電池在充電或放電)建模?!?p>
據(jù)Bonér聲稱,云原生堆棧上的Kubernetes方面仍存在3個尚未解決的領(lǐng)域,帶來了Akka等技術(shù)提供的新抽象:應(yīng)用程序?qū)咏M合、狀態(tài)性用例和傳輸中數(shù)據(jù)用例。
Bonér特別指出:“人們常常使用一套舊的工具、習(xí)慣和模式,它們通常源自傳統(tǒng)的(整體式三層)設(shè)計,這種設(shè)計抑制和約束了Kubernetes提供的云模型。”他表示,我們需要將容器、服務(wù)網(wǎng)格和編排“非常好”的模型一直擴展到應(yīng)用程序/業(yè)務(wù)邏輯,那樣我們可以在充分利用它的同時代表應(yīng)用程序維護端到端保證。
無服務(wù)器技術(shù)指明了道路:它提高了抽象級別,并提供一種聲明式模型:平臺消除和管理盡可能多的樣板代碼、基礎(chǔ)架構(gòu)和操作,從而使開發(fā)人員專心于核心方面:業(yè)務(wù)邏輯及工作流程。
云生態(tài)系統(tǒng)的大部分主要處理所謂的類似12因素應(yīng)用程序(12-factor)的應(yīng)用程序,即無狀態(tài)應(yīng)用程序。有時這可能正是你需要的。但重要的應(yīng)用程序通常結(jié)合無狀態(tài)用例和狀態(tài)性用例。
Bonér說:“我們需要更多更好的工具來處理好狀態(tài)。如今,價值通常在于數(shù)據(jù),通常在于蘊含大多數(shù)業(yè)務(wù)價值的狀態(tài)性用例——確保你可以快速訪問這些數(shù)據(jù),同時確保正確性、一致性和可用性。”
在云中,除非有非常好的模型以及支持它的工具,否則會被迫回到三層架構(gòu):每次將所有內(nèi)容推送到數(shù)據(jù)庫中,無論它用于狀態(tài)的通信、協(xié)調(diào)還是長期運行。
重要的是,你還需要良好的狀態(tài)模型來補充無狀態(tài)方法,從而為工具箱增添更多的選擇。Bonér特別指出,如今,Kubernetes處理狀態(tài)性用例的程度實際上僅在其StatefulSets功能中得到支持,但StatefulSets是為實施數(shù)據(jù)庫等基礎(chǔ)架構(gòu)的人員設(shè)計的,而不是為應(yīng)用程序開發(fā)人員設(shè)計的。
Bonér說:“因此,這里仍存在巨大空白。這是Akka真正發(fā)揮用場的地方。”
可以說,Kubernetes生態(tài)系統(tǒng)尚未為基于流和基于事件的用例提供強大支持。Bonér表示,像Istio這樣的服務(wù)網(wǎng)格是圍繞請求-響應(yīng)模型設(shè)計的,“可能會擋路”。流也常常是狀態(tài)性的,各階段在內(nèi)存中聚合數(shù)據(jù),同時需要確??捎眯?。Bonér表示,Knative社區(qū)正在竭力解決該問題,但我們剛邁出了一步。
推動業(yè)界邁向這些新方向的主力軍似乎是低代碼/無代碼/“前后端脫鉤”概念,這些概念為無服務(wù)器運動起到了推波助瀾的作用。
Bonér說:“無服務(wù)器使我們更有望解決將Kubernetes模型擴展到應(yīng)用程序本身這個問題。這就是關(guān)鍵。盡可能地進行抽象,轉(zhuǎn)而使用一種聲明式配置模型,而不是編程模型,在該模型中你定義應(yīng)該執(zhí)行的操作,而不是定義如何執(zhí)行?!?h3>“切實可行”的應(yīng)用程序基礎(chǔ)架構(gòu)
隨著云原生堆棧繼續(xù)在Kubernetes基礎(chǔ)架構(gòu)層上發(fā)展,應(yīng)用程序?qū)拥倪@些概念如何實際服務(wù)于特定的語言開發(fā)人員還需拭目以待。雖然應(yīng)用程序架構(gòu)許多最棘手的挑戰(zhàn)長期以來一直是服務(wù)器端Java開發(fā)關(guān)注的點,但我們似乎正朝著Jamstack架構(gòu)邁進:JavaScript開發(fā)人員日益要求訪問切實可行的應(yīng)用程序基礎(chǔ)架構(gòu),尤其是當(dāng)端點設(shè)備數(shù)量急劇增加時。
這倒不是說后端基礎(chǔ)架構(gòu)不重要。正如Ian Massingham所言,這是承認(rèn)前端開發(fā)人員的數(shù)量遠(yuǎn)超過后端開發(fā)人員,這有其充分理由:需要構(gòu)建的應(yīng)用程序比需要為托管它們而創(chuàng)建的基礎(chǔ)架構(gòu)多得多。通過Akka之類的開源項目在兩者之間架起橋梁變得越來越重要。
本文作者Matt Asay是亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)的負(fù)責(zé)人。Asay以前是Adobe的開發(fā)者生態(tài)系統(tǒng)負(fù)責(zé)人。加盟Adobe之前,Asay在多家開源公司擔(dān)任過一系列職務(wù)。他是開源組織(OSI)的名譽董事會成員,擁有斯坦福大學(xué)法學(xué)博士學(xué)位,主要研究開源及其他知識產(chǎn)權(quán)(IP)許可問題。
原文網(wǎng)址
https://www.infoworld.com/article/3567648/what-comes-after-kubernetes.html