什么是Serverless(什么是Serverless架构)
什么是Serverless
自2006年8月9日,Google首席執(zhí)行官埃里克·施密特(Eric Schmidt)在搜索引擎大會(huì)(SESSanJose2006)首次提出“云計(jì)算”(Cloud Computing)的概念之后,云計(jì)算的發(fā)展可以用日新月異這個(gè)詞來形容。那么究竟什么才是Serverless呢?
簡(jiǎn)單來說,Serverless可以說是一種架構(gòu),一種云計(jì)算發(fā)展的產(chǎn)物,至于具體說什么是Serverless,可能沒有誰能給他一個(gè)明確的概念,如果非要說一個(gè)可以稍微容易理解一些的概念,那或許可以參考Martin Fowler在《Serverless Architectures》中對(duì)Serverless這樣定義:Serverless=BaaS + FaaS。
Serverless架構(gòu)和傳統(tǒng)的項(xiàng)目的區(qū)別
首先,我們以一個(gè)常見的Web服務(wù)為例:
在這個(gè)圖中,服務(wù)器中可能涉及路由規(guī)則、鑒權(quán)邏輯以及其他各類復(fù)雜的業(yè)務(wù)代碼。同時(shí),開發(fā)團(tuán)隊(duì)要付出很大的精力在這個(gè)服務(wù)器的運(yùn)維上面,例如要時(shí)刻關(guān)注以下問題:
- 客戶量突然增多時(shí)是否需要擴(kuò)容服務(wù)器。
- 服務(wù)器上的腳本和業(yè)務(wù)代碼等是否還在健康運(yùn)行。
- 是否有黑客在不斷地對(duì)服務(wù)器發(fā)起攻擊。
當(dāng)我們把這個(gè)思路切換到Serverless的邏輯之后,變成了這樣:
可以認(rèn)為,當(dāng)客戶端和數(shù)據(jù)庫未發(fā)生變化的前提下,服務(wù)器變化巨大。
- 之前需要開發(fā)團(tuán)隊(duì)維護(hù)的路由模塊以及鑒權(quán)模塊都將接入服務(wù)商提供的API網(wǎng)關(guān)系統(tǒng)以及鑒權(quán)系統(tǒng),開發(fā)團(tuán)隊(duì)無須再維護(hù)這兩部分的業(yè)務(wù)代碼,只需要持續(xù)維護(hù)相關(guān)規(guī)則即可。
- 在這個(gè)結(jié)構(gòu)下,業(yè)務(wù)代碼也被拆分成了函數(shù)粒度,不同函數(shù)表示不同的功能。
- 我們已經(jīng)看不到服務(wù)器的存在,是因?yàn)镾erverless的目的是讓使用者只關(guān)注自己的業(yè)務(wù)邏輯即可,所以一部分安全問題、資源調(diào)度問題(例如用戶量暴增、如何實(shí)現(xiàn)自動(dòng)擴(kuò)容等)全都交給云廠商負(fù)責(zé)。
- 相對(duì)于傳統(tǒng)項(xiàng)目而言,傳統(tǒng)項(xiàng)目無論是否有用戶訪問,服務(wù)都在運(yùn)行中,都是有成本支出,而Serverless而言,只有在用去發(fā)起請(qǐng)求時(shí),函數(shù)才會(huì)被激活并且執(zhí)行,并且會(huì)按量收費(fèi),相對(duì)來說可以在有流量的時(shí)候才有支持,沒有流量的時(shí)候就沒有支出,相對(duì)來說,成本會(huì)進(jìn)一步降低。
通過以上分析和描述,不難看出Serverless架構(gòu)相對(duì)于傳統(tǒng)的開發(fā)模式的區(qū)別,也逐漸的發(fā)現(xiàn)了它的優(yōu)勢(shì)。但是問題來了,很多工作都交給了云廠商來做,那我們做什么呢?
使用Serverless架構(gòu)后:
- 開發(fā)團(tuán)隊(duì)不需要再自己維護(hù)服務(wù)器,也不需要自己操心服務(wù)器的各種性能指標(biāo)和資源利用率,而是可以讓開發(fā)團(tuán)隊(duì)付出更多的時(shí)間和精力去關(guān)注應(yīng)用程序本身的狀態(tài)和邏輯。
- Serverless應(yīng)用的部署將變得十分容易。我們只要上傳基本的代碼,例如Python程序只需要上傳其邏輯與依賴包,C/C++、Go等語言只需上傳其二進(jìn)制文件,Java只需要上傳其Jar包等即可,同時(shí)不需使用Puppet、Chef、Ansible或Docker來進(jìn)行配置管理,大大降低了運(yùn)維成本。
- Serverless架構(gòu)也不再需要監(jiān)控底層的數(shù)據(jù),例如不再需要監(jiān)控磁盤使用量、CPU使用率等,可以更加專注的將監(jiān)控目光放到監(jiān)控應(yīng)用程序本身的度量。同時(shí)在Serverless架構(gòu)上,運(yùn)維人員的工作角色會(huì)有所轉(zhuǎn)變,部署將變得更加自動(dòng)化,監(jiān)控將更加面向應(yīng)用程序本身。
使用Serverless架構(gòu)的優(yōu)勢(shì)
從上文中我們不難看出,相對(duì)于傳統(tǒng)項(xiàng)目,Serverless具備的以下優(yōu)勢(shì):
- 您無需采購(gòu)和管理服務(wù)器等基礎(chǔ)設(shè)施,運(yùn)維成本低。
- 您只需專注業(yè)務(wù)邏輯的開發(fā),使用函數(shù)計(jì)算支持的開發(fā)語言設(shè)計(jì)、優(yōu)化、測(cè)試、審核以及上傳自己的應(yīng)用代碼。
- 以事件驅(qū)動(dòng)的方式觸發(fā)應(yīng)用響應(yīng)用戶請(qǐng)求。與阿里云對(duì)象存儲(chǔ)OSS、API網(wǎng)關(guān)、日志服務(wù)和表格存儲(chǔ)等服務(wù)無縫對(duì)接,幫助您快速構(gòu)建應(yīng)用。例如,通過OSS解決圖片和視頻的存儲(chǔ)問題,當(dāng)有新數(shù)據(jù)寫入您的OSS資源時(shí),自動(dòng)觸發(fā)函數(shù)處理數(shù)據(jù)。
- 提供日志查詢、性能監(jiān)控和報(bào)警等功能快速排查故障。
- 毫秒級(jí)別彈性伸縮,快速實(shí)現(xiàn)底層擴(kuò)容以應(yīng)對(duì)峰值壓力。
- 按需付費(fèi),支持百毫秒級(jí)別收費(fèi)。只需為實(shí)際使用的計(jì)算資源付費(fèi),適合有明顯波峰波谷的用戶訪問場(chǎng)景。
總而言之,Serverless是在傳統(tǒng)容器技術(shù)和服務(wù)網(wǎng)格上發(fā)展起來,更多指的是后端服務(wù)與函數(shù)服務(wù)的結(jié)合。對(duì)于開發(fā)者而言,能夠?qū)⒏嗟木﹃P(guān)注在函數(shù)服務(wù)上,更側(cè)重讓使用者只關(guān)注自己的業(yè)務(wù)邏輯即可。
同時(shí),Serverless也是云計(jì)算發(fā)展到一定階段的必然產(chǎn)物。作為普惠科技,云計(jì)算發(fā)展的目標(biāo)一定是綠色科技和大眾科技的產(chǎn)品——而Serverless能夠很好的詮釋這些:最大程度利用資源、減少空閑資源浪費(fèi);同時(shí)降低學(xué)習(xí)成本和使用成本。
Serverless架構(gòu)被稱為是“真正實(shí)現(xiàn)了當(dāng)初云計(jì)算的目標(biāo)”,這種說法雖然有些夸張,但是也從另一方面表現(xiàn)出了大家對(duì)Serverless架構(gòu)的期盼和信心。自2012年被提出至今,Serverless架構(gòu)也是經(jīng)歷了7年時(shí)間,正在逐漸的走向成熟。
總結(jié)
以上是生活随笔為你收集整理的什么是Serverless(什么是Serverless架构)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网速为何越变越慢(网速越来越慢是什么原因
- 下一篇: 交换机为什么成为了主流(为什么用交换机)