無容器計算:終極服務模式

開源云中文社區(qū)
并沒有所謂的“無服務器”計算,因為計算資源總是要在某個地方運行。這個術語源于用戶必須擺脫對實際服務器和基礎設施的管理。我們現(xiàn)在看到的是對“無容器”計算的需求——在這種計算中,應用程序開發(fā)人員可以專注于要提供的服務,而不是創(chuàng)建和編排這些服務的基礎設施。

并沒有所謂的“無服務器”計算,因為計算資源總是要在某個地方運行。這個術語源于用戶必須擺脫對實際服務器和基礎設施的管理。我們現(xiàn)在看到的是對“無容器”計算的需求——在這種計算中,應用程序開發(fā)人員可以專注于要提供的服務,而不是創(chuàng)建和編排這些服務的基礎設施。

當然,事情并不總是這樣。自Fortran和COBOL時代,我們被迫從數(shù)據(jù)庫開始,以單體的方式思考應用程序,并朝著前端前進?,F(xiàn)在情況不同了;開發(fā)人員越年輕,就越有可能從一開始就學習面向?qū)ο缶幊?,這使得他們更容易適應微服務的思維方式。

這是一種調(diào)整。

為什么要將應用程序分解為服務?

這是一個必要的調(diào)整,因為為了創(chuàng)建真正現(xiàn)代化的云原生應用程序,我們需要以一種方便、容錯的方式將特定的功能進行容器化和編排。這意味著按功能、按運維、甚至按組織單位將整個最終目標分解為單個服務。

在過去,我們編寫這些功能,將它們包含在庫中,然后導入到應用程序中。在這方面,這并不是一個很大的轉(zhuǎn)變。這些庫現(xiàn)在基本上是存儲在諸如Docker Hub這樣的存儲庫中的容器鏡像,可以根據(jù)需要進行拆分。

但這又如何引導我們走向“無容器”架構(gòu)的呢?

這樣想吧。我們習慣于將無服務器計算與Kubernetes等編排容器的技術分離開來。兩者的區(qū)別在于(理論上)當一個函數(shù)不在無服務器環(huán)境中使用時,它就不存在,也不使用資源或花費金錢;而在Kubernetes環(huán)境中,你可以將資源縮減到單個容器,但那個容器仍在運行(而且要花錢),即使它沒有被使用。

其實不需要這樣。在Kubernetes上已經(jīng)有了啟用無服務器計算的方法。但是,如果我們能夠創(chuàng)建一個環(huán)境,在這個環(huán)境中我們可以獲得Kubernetes的優(yōu)勢,而不必麻煩用戶了解如何使其工作的細節(jié),那會怎么樣呢?

假設你作為一名開發(fā)人員正在創(chuàng)建一個應用程序來流式傳輸和分析視頻。在這個過程中的某個時刻,你必須對數(shù)據(jù)進行編碼。在分解應用程序時,你已經(jīng)確定這是一個單獨的服務,因此你創(chuàng)建了一個容器,該容器將接收原始數(shù)據(jù)作為請求并返回編碼的版本?,F(xiàn)在怎么辦?

假設你可以將該容器添加到安全注冊表中(這樣只有你的組織才能使用它),并且當應用程序需要編碼數(shù)據(jù)時,服務就在那里。你不必擔心是否有可用的服務器、可擴展性、網(wǎng)絡或任何相關內(nèi)容。在某些方面,這就是無服務器計算的定義。但是,作為一種實踐,無服務器有一個缺點:它沒有標準化,使我們回到了供應商鎖定狀態(tài)。

Kubernetes標準化

如果在Kubernetes上被標準化了呢?那就能夠避免供應商鎖定,使用現(xiàn)有的技能,并輕松創(chuàng)建多集群應用程序。我們甚至可以創(chuàng)建一個環(huán)境,其中一些資源是共享的,另一些是私有的——這取決于開發(fā)人員的需求。我們還可以使用Istio等服務網(wǎng)格技術來管理和分段網(wǎng)絡流量。

事實上,我們可以更進一步。如果我們可以為這些容器的供應添加智能呢?如果一個神經(jīng)網(wǎng)絡或其他機器學習算法可以預測何時可能需要不同的容器,并提前將它們運轉(zhuǎn)起來呢?該算法不僅可以擴展容器,還可以擴展基礎設施本身——在最大限度地提高性能的同時,最小化維護基礎設施的成本。

所有這些都可以在可信計算的上下文中運行,其中的鏡像存儲在可信注冊表中,并且只能在已通過可信平臺模塊(TPMs)等技術驗證的服務器和設備上實例化。這使分布式計算成為可能,同時降低了安全風險。

變得復雜的地方

當然,不是說毫無挑戰(zhàn)。這種新思維方式的另一個重要方面是標準化和安全性。我們現(xiàn)在需要將其規(guī)劃到架構(gòu)中,既包括內(nèi)部運行的內(nèi)容,也包括外部運行的內(nèi)容,這樣執(zhí)行中的應用程序就不會受到攻擊。在這些領域,企業(yè)必須投入大量資金,以實現(xiàn)所需的技術進步。例如,為了實現(xiàn)今天所需的靈活性,我們常常不得不以根用戶的身份運行容器;這絕對不是一個長期的解決方案。我們需要一個共同的權(quán)威模式,這意味著每個人都必須就該方法的工作方式達成一致。業(yè)界需要定義權(quán)限,以及可信計算如何在所有這些類型的基礎設施(如容器、VM和裸機)中協(xié)調(diào)工作。

然而,有一點與目前的情況保持一致,那就是圍繞這些技術進步形成的新業(yè)務最終將把所有東西——容器、編排、網(wǎng)絡,甚至硬件——都當作代碼。所有新的自動化方法都必須是自我修復、自我擴展、自我配置,甚至跨應用程序進行自我自動化。例如,神經(jīng)網(wǎng)絡需要能夠在必要時擴展,預測需要,并根據(jù)需要改進其模型(和精度)。

更重要的是,整個技術進步網(wǎng)絡需要能夠在不中斷服務的情況下進行升級和更新,這意味著除了軟件開發(fā)供應商之外,所有硬件供應商都需要參與其中。

原文鏈接:

https://thenewstack.io/containerless-computing-the-ultimate-service-decomposition/

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論