Serverless 的价值
作者 | 許曉斌 阿里云高級技術專家
回顧架構的演進過程,我們不難發現,研發運維人員正在逐漸地把關注點從機器上移走,不再去管理機器。
其實我們都知道,雖然說是 Serverless,但 Server(服務器)是不可能真正消失的,Serverless 里這個 less 更確切地說,應該是開發者不用關心服務器的意思。這就好比現代編程語言 Java 和 Python,開發不用手工分配和釋放內存,但內存依然在哪里,只不過交給垃圾收集器管理了。稱一個能幫助你管理服務器的平臺為 Serverless 平臺,就好比稱呼 Java 和 Python 為 Memoryless 語言一樣。
但是,如果我們把目光放到今天這個云的時代,那么就不能狹義地把 Serverless 僅僅理解為不用關心服務器。云上的資源除了服務器所包含的基礎計算、網絡、存儲資源之外,還包括各種類別的更上層的資源,例如數據庫、緩存、消息等。
Serverless 的愿景
2019 年 2 月,UC 伯克利大學發表了一篇標題為《Cloud Programming Simplified: A Berkeley View on Serverless Computing》的論文,論文中也有一個非常清晰形象的比喻,文中這樣描述:
在云的上下文中,Serverful 的計算就像使用低級的匯編語言編程,而 Serverless 的計算就像使用 Python 這樣的高級語言進行編程。例如 c = a + b 這樣簡單的表達式,如果用匯編描述,就必須先選擇幾個寄存器,把值加載到寄存器,進行數學計算,再存儲結果。這就好比今天在云環境下 Serverful 的計算,開發首先需要分配或找到可用的資源,然后加載代碼和數據,再執行計算,將計算的結果存儲起來,最后還需要管理資源的釋放。
論文中所謂的 Serverful 計算,是我們今天主流的使用云的方式,但不應該是未來我們使用云的方式。我認為 Serverless 的愿景應該是 Write locally, compile to the cloud,即代碼只關心業務邏輯,由工具和云去管理資源。
Serverless 的價值
在對 Serverless 有一個總體的抽象概念之后,也需要具體了解 Serverless 平臺的主要特點,同時這些特點也是 Serverless 核心優勢的體現。
1. 不用關心服務器
管理一兩臺服務器可能不是什么麻煩的事情,管理數千甚至數萬臺服務器就沒那么簡單了。任何一臺服務器都可能出現故障,如何自動識別故障,摘除有問題的實例,這是 Serverless 平臺必須具備的能力;此外,操作系統的安全補丁升級,需要做到不影響業務,自動完成;日志和監控系統需要默認打通;系統的安全策略需要自動配置好以避免風險;當資源不夠時,需要能夠自動分配資源并安裝相關的代碼和配置,等等。
2. 自動彈性
今天的互聯網應用都被設計成可伸縮架構,當業務有比較明顯的高峰和低谷時,或者業務有臨時的容量需求時(比如營銷活動),Serverless 平臺都能夠及時且穩定地實現自動彈性。為了實現這個能力,平臺需要有非常強大的資源調度能力,以及對應用各項指標(如 load、并發)非常敏銳的感知能力。
3. 按實際資源使用計費
Serverful 的方式使用云資源,是按占用而非使用計費的,例如用戶在云上購買了三臺 ECS,那么不管用戶實際使用了這三臺 ECS 多少的 CPU 和內存,他都需要支付這三臺 ECS 整體的費用。而在 Serverless 模式下,用戶是按實際使用的資源付費的,例如一個請求實際使用了一臺 1core2g 規格資源 100ms 的時間,那么用戶就只需要為該規格的單價乘以時間(即100ms)付費。類似的,用戶如果用的是 Serverless 數據庫,那么就只需要為 query 實際消耗的資源,以及數據存儲的資源付費。
4. 更少的代碼,更快的交付速度
基于 Serverless 架構的代碼通常會重度使用后端的服務,將數據、狀態管理等內容從代碼中分離出去;此外,更徹底的 FaaS 架構則把代碼的 Runtime 也交給了平臺管理。這就意味著,同樣的應用,Serverless 模式下的代碼相比 Serverful 模式會少很多,因此不論是從分發還是啟動,都會更快。Serverless 平臺也通常能夠提供非常成熟的代碼構建發布、版本切換等特性,提升交付速度。
總結
以上是生活随笔為你收集整理的Serverless 的价值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见 Serverless 架构模式
- 下一篇: 函数计算是如何工作的?