無服務器架構的方式,通過實現最優的發展、運營和管理開銷,改寫了目前軟件設計和部署的基本現狀。它的基本概念來源于微服務架構(MSA),通過被賦予最前沿的架構模式,實現了硬件閑置可能的最低水平。
盡管該技術已經取得了顯著的進步,但仍需要經過深思熟慮,來適應企業確切的無服務計算解決方案需求。
最開始的時候,軟件系統的實現需要部署在物理服務器上,但這樣無法在給定時間內最優利用底層硬件的計算能力。后來,在計算資源具備共享能力之后,通過在其中切換CPU和I/O運行,可以使多個虛擬計算機同時運行在同一個硬件上。
這項技術的發展在行業內引起很多變革,最重要的就是云計算的誕生。目前,虛擬機是部署軟件時最可控、可擴展和可編程的獨立計算環境單元。Linux容器技術出現在2006年左右,當時谷歌實現了可控組與Linux內核特性的協調。
Linux容器從那之后就一直存在了。然而,只有大型的擁有卓越技術的企業——如谷歌,才有能力使用它。到2012年,歐洲一個軟件架構研究組織才提出了微服務架構的概念。2013年,Docker強勢填補了容器生態系統中的裂縫——可達性、可用性和支持服務,然后,容器終于開始流行起來。
Linux容器為將大型單片集成系統分解為獨立自足式的服務打開了新的視野,并且實現了細粒度的資源利用率。為了推進發展,如Kubernetes和Mesosphere 一樣的容器集群管理系統開始在同一周期出現,并提供端對端的容器即服務能力(CaaS)能力。
到2015年,AWS通過發布AWS Lambda推動了又一次跳躍式發展,它可以通過按需運行微服務進一步節省軟件部署成本,也可以在沒有工作負載時關閉它們。這個概念類似與節能汽車的啟停功能,為了降低燃耗而自動關閉內燃機。
它如何工作?
“無服務器”這個術語乍一看很荒謬,其實它實際上是指在沒有任何基礎設施參與的情況下進行軟件的部署。無服務器平臺會按照需求使服務構建、部署和啟動的整個過程自動化。用戶只需要登記他們所需的業務功能和資源需求。
很明顯,這樣的功能可以分為兩個主要類型:通過客戶請求觸發的功能和需要在后臺通過時間或事件觸發的功能。一般來說,這樣的無服務器系統可以用一個容器集群管理器(CCM)和可按需去旋轉容器的動態路由來實施。不過,也需要考慮路由的延遲、容器創建時間、語言支持、支持協議、接口函數、函數初始化事件、配置參數傳遞和提供證明文件等問題。
雖然這種部署方式需要容器在沒有工作負載時關閉,但事實上,收到服務請求后,終止容器的這點時間代價會是非常昂貴的,因為在這么短的時間間隔里仍會有更多的請求不斷傳入。因此在多數情況下,無服務計算容器會在預配置周期內維持以重復使用,處理更多的服務請求。這一點,類似于PaaS平臺中的自動定量行為。一旦某個服務規模擴大,該實例就會被維持一個時間周期,以保證能在不立即關閉它們的情況下處理更多請求。