什麼是Serverless

自2006年8月9日,Google首席執行官埃裏克·施密特(Eric Schmidt)在搜索引擎大會(SESSanJose2006)首次提出“雲計算”(Cloud Computing)的概念之後,雲計算的發展可以用日新月異這個詞來形容。那麼究竟什麼纔是Serverless呢?

簡單來說,Serverless可以說是一種架構,一種雲計算發展的產物,至於具體說什麼是Serverless,可能沒有誰能給他一個明確的概念,如果非要說一個可以稍微容易理解一些的概念,那或許可以參考Martin Fowler在《Serverless Architectures》中對Serverless這樣定義:Serverless=BaaS + FaaS。

Serverless架構和傳統的項目的區別

首先,我們以一個常見的Web服務爲例:

在這個圖中,服務器中可能涉及路由規則、鑑權邏輯以及其他各類複雜的業務代碼。同時,開發團隊要付出很大的精力在這個服務器的運維上面,例如要時刻關注以下問題:

客戶量突然增多時是否需要擴容服務器。

服務器上的腳本和業務代碼等是否還在健康運行。

是否有黑客在不斷地對服務器發起攻擊。

當我們把這個思路切換到Serverless的邏輯之後,變成了這樣:

可以認爲,當客戶端和數據庫未發生變化的前提下,服務器變化巨大。

之前需要開發團隊維護的路由模塊以及鑑權模塊都將接入服務商提供的API網關係統以及鑑權系統,開發團隊無須再維護這兩部分的業務代碼,只需要持續維護相關規則即可。

在這個結構下,業務代碼也被拆分成了函數粒度,不同函數表示不同的功能。

我們已經看不到服務器的存在,是因爲Serverless的目的是讓使用者只關注自己的業務邏輯即可,所以一部分安全問題、資源調度問題(例如用戶量暴增、如何實現自動擴容等)全都交給雲廠商負責。

相對於傳統項目而言,傳統項目無論是否有用戶訪問,服務都在運行中,都是有成本支出,而Serverless而言,只有在用去發起請求時,函數纔會被激活並且執行,並且會按量收費,相對來說可以在有流量的時候纔有支持,沒有流量的時候就沒有支出,相對來說,成本會進一步降低。

通過以上分析和描述,不難看出Serverless架構相對於傳統的開發模式的區別,也逐漸的發現了它的優勢。但是問題來了,很多工作都交給了雲廠商來做,那我們做什麼呢?

使用Serverless架構後:

開發團隊不需要再自己維護服務器,也不需要自己操心服務器的各種性能指標和資源利用率,而是可以讓開發團隊付出更多的時間和精力去關注應用程序本身的狀態和邏輯。

Serverless應用的部署將變得十分容易。我們只要上傳基本的代碼,例如Python程序只需要上傳其邏輯與依賴包,C/C++、Go等語言只需上傳其二進制文件,Java只需要上傳其Jar包等即可,同時不需使用Puppet、Chef、Ansible或Docker來進行配置管理,大大降低了運維成本。

Serverless架構也不再需要監控底層的數據,例如不再需要監控磁盤使用量、CPU使用率等,可以更加專注的將監控目光放到監控應用程序本身的度量。同時在Serverless架構上,運維人員的工作角色會有所轉變,部署將變得更加自動化,監控將更加面向應用程序本身。

使用Serverless架構的優勢

從上文中我們不難看出,相對於傳統項目,Serverless具備的以下優勢:

您無需採購和管理服務器等基礎設施,運維成本低。

您只需專注業務邏輯的開發,使用函數計算支持的開發語言設計、優化、測試、審覈以及上傳自己的應用代碼。

以事件驅動的方式觸發應用響應用戶請求。與阿里雲對象存儲OSS、API網關、日誌服務和表格存儲等服務無縫對接,幫助您快速構建應用。例如,通過OSS解決圖片和視頻的存儲問題,當有新數據寫入您的OSS資源時,自動觸發函數處理數據。

提供日誌查詢、性能監控和報警等功能快速排查故障。

毫秒級別彈性伸縮,快速實現底層擴容以應對峯值壓力。

按需付費,支持百毫秒級別收費。只需爲實際使用的計算資源付費,適合有明顯波峯波谷的用戶訪問場景。

總而言之,Serverless是在傳統容器技術和服務網格上發展起來,更多指的是後端服務與函數服務的結合。對於開發者而言,能夠將更多的精力關注在函數服務上,更側重讓使用者只關注自己的業務邏輯即可。

同時,Serverless也是雲計算發展到一定階段的必然產物。作爲普惠科技,雲計算發展的目標一定是綠色科技和大衆科技的產品——而Serverless能夠很好的詮釋這些:最大程度利用資源、減少空閒資源浪費;同時降低學習成本和使用成本。

Serverless架構被稱爲是“真正實現了當初雲計算的目標”,這種說法雖然有些誇張,但是也從另一方面表現出了大家對Serverless架構的期盼和信心。自2012年被提出至今,Serverless架構也是經歷了7年時間,正在逐漸的走向成熟。

相關文章