serverless架構的出現,帶來了跨越式的變革。serverless下主機管理、作業系統管理、基礎軟體的部署運維、資源分配和擴縮容能力全部由雲廠商提供,把計算能力做成像水電煤一樣的公共服務,這就意味著基於serverless服務構建應用,開發者只需要專注在產品**上,而無需管理和操作雲端服務執行環境,計算資源從過去購買「伺服器」轉向購買對應的「服務」。
serverless = faas (function as a service) + baas (backend as a service)
serverles程式設計客棧s處理模型:
serverless的典型工作流程:
serverless真正做到了部署應用無需涉及基礎設施的建設,自動構建、部署和啟動服務。以大資料應用開發舉例:
在傳統開發流程中,我們需要先根據大資料實際應用從採集,儲存,清洗,關聯,到分析挖掘全鏈路所涉及的元件列表,完成後端大資料平台一系列元件的安裝部署,再等到大資料應用完成後,進行應用功能除錯、應用+平台效能調優,最終測試、上線後,還需要大資料平台運維工程師對整個大資料平台進行維護。整個過程涉及多個角色,而本身大資料平台的運維和調優具備一定的技術門檻,調優效果完全取決於自有員工的能力,而乙個好的調優人員,就像乙個好的資料庫dba一樣,需要長期專案實踐積累,屬於關鍵稀缺人才。
基於serverless,所有事情變得非常簡單了,雲廠商以服務的形式對外提供大資料元件能力,以往複雜的平台搭建過程得到完全解放,只需要寫完大資料應用程式後部署到serverless服務即可,後續也不需要關心任何伺服器以及大資料平台元件的運維、調優操作。雲廠商在對外提供服務的同時,背後都有乙個完備的團隊7*24提供專業的支撐。因此只需要大資料應用開發工程師即可完成所有工作。當然,如果具備一定的大資料平台能力,對大資料應用側的效能調優也是非常有利的,往往可以事半功倍。
serverless架構使軟體應用和伺服器實現了解耦,伺服器不再是使用者開發和運營應用的焦點。在應用上線前,使用者無須再提前規劃伺服器的數量和規格。在運維過程中,使用者無須再持續監控和維護具體伺服器的狀態,只需要關心應用的整體狀態。應用運營的程式設計客棧整體複雜度下降,使用者的關注點可以更多地放在軟體應用的體驗、改進以及其他能帶來更高業務價值的地方。
伺服器不再是使用者關注的受管資源,運營的複雜度下降,應用運營所需要投入的時間和人力大www.cppcns.com大降低。在最好的情況下,可以做到少數幾個應用管理員即可管理乙個處理海量請求的應用系統。
在serverless架構下,應用的功能被解構成若干個細顆粒度的無狀態函式,功能與功能之間的邊界變得更加清晰,功能模組之間的耦合度大大減小。這使得軟體應用的開發效率更高,應用開發的迭代週期更短。
對於企業來說,支援serverless計算的平台可以節省大量時間和成本,釋放基礎設施相關員工,轉移到開展更有價值的工作,而不是管理基礎設施。另一方面可以提高敏捷度,更快速地推出新應用和新服務,進而提高客戶滿意度。但是任何事情都有兩面性,ser並不是完美的,它也存在一些問題:
當我們採用某雲服務廠商的 serverless 架構時,理論上我們就和該服務**商繫結了,那麼我們再將服務遷到別的雲服務商上就沒有那麼容易了。但如果雲廠商本身相容開源,甚至應用**可以「0」改動遷移,這個問題就迎刃而解了,也就不存在繫結一說了。選擇雲廠商serverless服務的時候,從產品演進的角度,這也是乙個重點需要考慮的點。
現階段基於serverless架構服務開發時,相對比較痛苦的就是功能開發階段,每次你除錯的時候,你需要一遍又一遍地上傳**。而每次上傳的時候,你就好像是在部署伺服器,雖然應用部署非常簡單,但並不能總是快速地定位出問題在哪。不過這應該也是乙個階段性的問題,後續serverless周邊工具生態逐步完善後,相信serverlesswww.cppcns.com下的開發也會擁有跟本地開發一致的體驗。
一般serverless服務內部針對單元件都是維護乙個或幾個主流版本,這個策略完全由雲廠商決定,並不會嚴格緊跟社群版本。站在我的角度,也並不是版本越高越好,還是對外提供乙個長期穩定的版本,比如原本是spark 2.3,當spark 2.4剛面世的時候,就沒有必要馬上跟風,服務對外的穩定可用才是最關鍵的。另外,現在基於k8s的自定義映象也能很好的解決元件多版本和周邊依賴問題。
一般來說,社會越發達、越成熟,社會分工就越明確,技術亦是如此。雲計算經過這麼多年的發展,逐漸進化到使用者僅需關注核心業務和業務執行所需的資源,基礎設施及平台統一由雲廠商來負責看護。serverless架構讓我們不需要再操心服務端的運維,不需要關心我們不熟悉的領域,只需要專注於業務的開發、專注於產品的實現。我們需要關心的事情變少了,也意味著我們能做的事情更多了。可以說,隨著serverless架構的興起,真正的雲計算時代才算到來了。相信隨著技術的飛速發展,serverless在未來還有無限可能!
Serverless架構的前世今生
雲計算的不斷發展,湧現出很多改變傳統it架構和運維方式的新技術,而以虛擬機器 容器 微服務為代表的技術更是在各個層面不斷提公升雲服務的技術能力,它們將應用和環境中很多通用能力變成了一種服務。但無論這些技術應用在 幫助企業 降本增效 是技術變革永恆的主題。serverless架構的出現,帶來了跨越式的...
Serverless 架構與事件規範
本篇內容主要討論的是 serverless 架構與其事件規範的基礎原則。首先,我們先來了解下在 http web 場景下我們的典型的web場景是怎樣的 這裡,我們不難看出典型的web場景其實是由三大塊內容,客戶端,伺服器,資料庫組成。客戶端在伺服器側通過型別 apache,nginx 等 伺服器來請...
Serverless 的執行原理與元件架構
本文重點 下開發者使用 serverless 時經常遇到的一些問題,以及如何解決 過去一年,我們和大量 serverless 使用者進行了線上和線下的交流,了解大家的業務場景 對 serverless 的看法和使用體驗。大部分使用者認為 serverless 會是雲計算下一階段的必然趨勢,但不是現在...