解讀Serverless架構的前世今生
一、Serverless簡介
Serverless架構的出現,帶來瞭跨越式的變革。Serverless下主機管理、操作系統管理、基礎軟件的部署運維、資源分配和擴縮容能力全部由雲廠商提供,把計算能力做成像水電煤一樣的公共服務,這就意味著基於Serverless服務構建應用,開發者隻需要專註在產品代碼上,而無需管理和操作雲端服務運行環境,計算資源從過去購買“服務器”轉向購買對應的“服務”。
Serverless = Faas (Function as a service) + Baas (Backend as a service)
Serverless處理模型:
Serverless的典型工作流程:
二、Serverless開發模式
Serverless真正做到瞭部署應用無需涉及基礎設施的建設,自動構建、部署和啟動服務。以大數據應用開發舉例:
在傳統開發流程中,我們需要先根據大數據實際應用從采集,存儲,清洗,關聯,到分析挖掘全鏈路所涉及的組件列表,完成後端大數據平臺一系列組件的安裝部署,再等到大數據應用完成後,進行應用功能調試、應用+平臺性能調優,最終測試、上線後,還需要大數據平臺運維工程師對整個大數據平臺進行維護。整個過程涉及多個角色,而本身大數據平臺的運維和調優具備一定的技術門檻,調優效果完全取決於自有員工的能力,而一個好的調優人員,就像一個好的數據庫DBA一樣,需要長期項目實踐積累,屬於關鍵稀缺人才。
基於Serverless,所有事情變得非常簡單瞭,雲廠商以服務的形式對外提供大數據組件能力,以往復雜的平臺搭建過程得到完全解放,隻需要寫完大數據應用程序後部署到Serverless服務即可,後續也不需要關心任何服務器以及大數據平臺組件的運維、調優操作。雲廠商在對外提供服務的同時,背後都有一個完備的團隊7*24提供專業的支撐。因此隻需要大數據應用開發工程師即可完成所有工作。當然,如果具備一定的大數據平臺能力,對大數據應用側的性能調優也是非常有利的,往往可以事半功倍。
三、Serverless帶來的價值
1、降低運營復雜度
Serverless架構使軟件應用和服務器實現瞭解耦,服務器不再是用戶開發和運營應用的焦點。在應用上線前,用戶無須再提前規劃服務器的數量和規格。在運維過程中,用戶無須再持續監控和維護具體服務器的狀態,隻需要關心應用的整體狀態。應用運營的整體復雜度下降,用戶的關註點可以更多地放在軟件應用的體驗、改進以及其他能帶來更高業務價值的地方。
2、降低運營成本
服務器不再是用戶關註的受管資源,運營的復雜度下降,應用運營所需要投入的時間和人力大大降低。在最好的情況下,可以做到少數幾個應用管理員即可管理一個處理海量請求的應用系統。
3、縮短產品的上市時間
在Serverless架構下,應用的功能被解構成若幹個細顆粒度的無狀態函數,功能與功能之間的邊界變得更加清晰,功能模塊之間的耦合度大大減小。這使得軟件應用的開發效率更高,應用開發的迭代周期更短。
四、Serverless現存問題
對於企業來說,支持Serverless計算的平臺可以節省大量時間和成本,釋放基礎設施相關員工,轉移到開展更有價值的工作,而不是管理基礎設施。另一方面可以提高敏捷度,更快速地推出新應用和新服務,進而提高客戶滿意度。但是任何事情都有兩面性,Serverless並不是完美的,它也存在一些問題:
1、完全依賴於第三方服務
當我們采用某雲服務廠商的 Serverless 架構時,理論上我們就和該服務供應商綁定瞭,那麼我們再將服務遷到別的雲服務商上就沒有那麼容易瞭。但如果雲廠商本身兼容開源,甚至應用代碼可以“0”改動遷移,這個問題就迎刃而解瞭,也就不存在綁定一說瞭。選擇雲廠商Serverless服務的時候,從產品演進的角度,這也是一個重點需要考慮的點。
2、缺乏調試和開發工具
現階段基於Serverless架構服務開發時,相對比較痛苦的就是功能開發階段,每次你調試的時候,你需要一遍又一遍地上傳代碼。而每次上傳的時候,你就好像是在部署服務器,雖然應用部署非常簡單,但並不能總是快速地定位出問題在哪。不過這應該也是一個階段性的問題,後續Serverless周邊工具生態逐步完善後,相信Serverless下的開發也會擁有跟本地開發一致的體驗。
3、語言版本
一般Serverless服務內部針對單組件都是維護一個或幾個主流版本,這個策略完全由雲廠商決定,並不會嚴格緊跟社區版本。站在我的角度,也並不是版本越高越好,還是對外提供一個長期穩定的版本,比如原本是Spark 2.3,當Spark 2.4剛面世的時候,就沒有必要馬上跟風,服務對外的穩定可用才是最關鍵的。另外,現在基於K8S的自定義鏡像也能很好的解決組件多版本和周邊依賴問題。
五、總結
一般來說,社會越發達、越成熟,社會分工就越明確,技術亦是如此。雲計算經過這麼多年的發展,逐漸進化到用戶僅需關註核心業務和業務運行所需的資源,基礎設施及平臺統一由雲廠商來負責看護。Serverless架構讓我們不需要再操心服務端的運維,不需要關心我們不熟悉的領域,隻需要專註於業務的開發、專註於產品的實現。我們需要關心的事情變少瞭,也意味著我們能做的事情更多瞭。可以說,隨著Serverless架構的興起,真正的雲計算時代才算到來瞭。相信隨著技術的飛速發展,Serverless在未來還有無限可能!
以上就是解讀Serverless架構的前世今生的詳細內容,更多關於Serverless架構的前世今生的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- pycharm利用pyspark遠程連接spark集群的實現
- Spark簡介以及與Hadoop對比分析
- Spark-Sql入門程序示例詳解
- Docker-Compose搭建Spark集群的實現方法
- 關於IDEA創建spark maven項目並連接遠程spark集群問題