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