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