一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

深入淺出 Serverless:優(yōu)勢(shì)、意義與應(yīng)用

 看見(jiàn)就非常 2020-04-29

Serverless 是炙手可熱的技術(shù),被認(rèn)為是云計(jì)算發(fā)展的未來(lái)方向。尤其是在前端研發(fā)領(lǐng)域,使用 Node 開(kāi)發(fā)云函數(shù),可以讓前端工程師更加專(zhuān)注于業(yè)務(wù)邏輯,實(shí)現(xiàn)全棧工程師的角色轉(zhuǎn)變。

Serverless 的優(yōu)勢(shì)

技術(shù) Leader 和架構(gòu)師在進(jìn)行技術(shù)選型時(shí)會(huì)關(guān)注很多指標(biāo), Serverless 貢獻(xiàn)最大的就是 研發(fā)交付速度(Time to Market) 和 成本(Cost)。

研發(fā)交付速度方面,衡量的指標(biāo)是 Time to Market,是從需求產(chǎn)出到上線(xiàn)所用的總時(shí)長(zhǎng),Serverless 在這方面的優(yōu)勢(shì)在技術(shù)和團(tuán)隊(duì)協(xié)作兩個(gè)視角上均有體現(xiàn)。

一是技術(shù)視角。 有一種觀(guān)點(diǎn)稱(chēng) Serverless 是一種很簡(jiǎn)單的技術(shù),我對(duì)這種觀(guān)點(diǎn)并不完全同意。Serverless 架構(gòu)讓用戶(hù)和底層架構(gòu)的關(guān)系發(fā)生了變化,之前開(kāi)發(fā)者需要關(guān)注核心業(yè)務(wù)邏輯、運(yùn)維和底層架構(gòu)的治理,在 Serverless 架構(gòu)中底層的部分由 Serverless 架構(gòu)提供方來(lái)解決。從整個(gè)應(yīng)用系統(tǒng)的角度來(lái)看,系統(tǒng)架構(gòu)的難度和復(fù)雜度并沒(méi)有實(shí)質(zhì)簡(jiǎn)化。

Serverless 底層復(fù)雜架構(gòu)(用戶(hù)完全不用關(guān)注的部分)

這里我們不展開(kāi)講 Serverless 架構(gòu)的底層實(shí)現(xiàn)細(xì)節(jié)。只需要了解一點(diǎn):Serverless 底層架構(gòu)做的事情越多,業(yè)務(wù)層面需要關(guān)注的架構(gòu)和運(yùn)維工作就越少,因?yàn)樽龅墓ぷ魃倭?,所以交付的時(shí)間就更快了。

Serverless 架構(gòu)下開(kāi)發(fā)者需要關(guān)注的兩塊內(nèi)容

二是團(tuán)隊(duì)協(xié)作視角。在 Serverless 的模式下,全棧開(kāi)發(fā)的工作模式會(huì)執(zhí)行得更加順暢。我們知道,前后端分離確實(shí)是一種很好的架構(gòu)模式:細(xì)化了分工,降低了耦合,提升了復(fù)用。但隨之而來(lái)的問(wèn)題,是團(tuán)隊(duì)間的溝通成本、KPI 目標(biāo)的差異所帶來(lái)的各種催排期、接口確認(rèn)以及聯(lián)調(diào)測(cè)試。不少技術(shù)團(tuán)隊(duì)用全棧開(kāi)發(fā)的模式來(lái)解決這些問(wèn)題, Serverless 下不需要在架構(gòu)和技術(shù)?;ㄙM(fèi)過(guò)多精力,Runtime 和語(yǔ)言也沒(méi)有強(qiáng)制依賴(lài),而是完全面向業(yè)務(wù),每個(gè)前端工程師都可以是全棧的。

另一個(gè)優(yōu)勢(shì)就是 Serverless 會(huì)大大降低成本,體現(xiàn)在計(jì)算資源和人力兩個(gè)層面。

在計(jì)算資源的成本方面,主要體現(xiàn)在彈性擴(kuò)縮容量,按需付費(fèi)。在傳統(tǒng)的計(jì)算資源預(yù)算時(shí),往往為了能抗住峰值流量,系統(tǒng)容量都有 Buffer,說(shuō)白了就是日常的浪費(fèi)。

資源對(duì)比

在 Serverless 模式下,當(dāng)業(yè)務(wù)代碼上線(xiàn)后,一分錢(qián)都不需要支付。只有當(dāng)真實(shí)請(qǐng)求和流量過(guò)來(lái)了,平臺(tái)才會(huì)根據(jù)請(qǐng)求量,瞬時(shí)拉起對(duì)應(yīng)數(shù)量的函數(shù)實(shí)例,去接收請(qǐng)求和執(zhí)行業(yè)務(wù)代碼,此時(shí)才需要為真正的代碼執(zhí)行所消耗的資源付費(fèi)。No Pay for Idle ,從會(huì)計(jì)學(xué)的角度,Serverless 讓計(jì)算資源從固定成本變成了可變成本。這種付費(fèi)模式對(duì)于那種流量波動(dòng)很大的業(yè)務(wù)優(yōu)勢(shì)明顯。

資源對(duì)比 2

還要說(shuō)明的是人力成本。很多技術(shù) Leader 總抱怨人手不夠,也許真實(shí)情況并非如此,只是沒(méi)有足夠比例的人投入到業(yè)務(wù)功能的開(kāi)發(fā)和迭代上,而是去做了架構(gòu)、底層等必要的支撐性工作。我承認(rèn)這些工作確實(shí)非常有挑戰(zhàn)、非常必要,也非常重要。在 Serverless 模式下,由于不再需要關(guān)注底層架構(gòu),所以縮小這部分的工作量和人力占比,就有了更多的工程師可以放在核心業(yè)務(wù)上,多做迭代,從而加速產(chǎn)品功能的研發(fā)。這不是更高的 ROI 嗎?

Serverless 的適用場(chǎng)景

Serverless 適用于事件觸發(fā)的場(chǎng)景。當(dāng)某個(gè)事件發(fā)生時(shí),拉起并調(diào)用 Serverless 云函數(shù),比如文件上傳、消息隊(duì)列中的消息事件、定時(shí)器事件,也可以是 IoT 設(shè)備的某個(gè)事件。還可以用于一些文件處理,比如圖像處理、音視頻處理和日志分析等場(chǎng)景。

當(dāng)然,這些事件也包括 HTTP 請(qǐng)求事件,這是 Serverless 的一個(gè)很大的適用場(chǎng)景—— HTTP Service,主要實(shí)現(xiàn)基于 HTTP 應(yīng)用的后端服務(wù),比如 REST API、BFF 和 SSR 服務(wù),以及業(yè)務(wù)邏輯的實(shí)現(xiàn)。

我主要關(guān)注 Serverless 在 HTTP 場(chǎng)景下的應(yīng)用。這也是和前端工程師結(jié)合最緊密的部分。小到為小游戲、運(yùn)營(yíng)活動(dòng)提供后端的支持,大到整個(gè) App 或站點(diǎn)的 REST API、BFF,或是 H5 頁(yè)面的 SSR,都是 Serverless 適用的場(chǎng)景。

Serverless 對(duì)前端開(kāi)發(fā)者的意義

Serverless 的諸多優(yōu)勢(shì)業(yè)內(nèi)有很多討論,也有不少文章談及。我想聚焦到前端開(kāi)發(fā)者身上來(lái)說(shuō)一說(shuō),Serverless 能夠幫助前端工程師實(shí)現(xiàn)真全棧的夢(mèng)想。可能有人會(huì)質(zhì)疑,為什么你又提出一個(gè)真全棧,和之前的全棧有什么區(qū)別嗎?

業(yè)內(nèi)對(duì)于全棧的定義:前端 + 后端 + 數(shù)據(jù)庫(kù)

我先明確一下真全棧的定義:如何判斷一個(gè)工程師是真全棧工程師?

當(dāng)公司有了一堆產(chǎn)品功能需求,招了一個(gè)程序員張全占,如果他能從 0 到 1 把需求做成產(chǎn)品,那才叫真全棧。如果張全占完成了前端功能開(kāi)發(fā)、后端開(kāi)發(fā)以及數(shù)據(jù)庫(kù)開(kāi)發(fā),實(shí)現(xiàn)了所有的需求功能,并且部署到對(duì)應(yīng)的服務(wù)上,就完事了,那么問(wèn)題也就來(lái)了:服務(wù)掛了誰(shuí)來(lái)重啟?環(huán)境穩(wěn)定性誰(shuí)來(lái)做?日志把磁盤(pán)寫(xiě)滿(mǎn)了誰(shuí)來(lái)清理?定時(shí)任務(wù)怎么搞?產(chǎn)品突然火爆了,流量一夜間突然擴(kuò)大了十幾倍的時(shí)候(產(chǎn)品經(jīng)理狂喜中),誰(shuí)負(fù)責(zé)擴(kuò)容?這些問(wèn)題雖然不是核心業(yè)務(wù)需求,卻是每一個(gè)線(xiàn)上產(chǎn)品都必須考慮的東西,否則只能稱(chēng)為功能集合,不能稱(chēng)之為產(chǎn)品。

從需求到產(chǎn)品,從 0 到 1 的技術(shù)全棧

Serverless 架構(gòu)的出現(xiàn),將剛才說(shuō)到的一些非核心業(yè)務(wù)邏輯,以及運(yùn)維相關(guān)的事情給“屏蔽”了。前端工程師張全占只需關(guān)注前臺(tái)功能、后臺(tái)功能和數(shù)據(jù)這些核心的業(yè)務(wù)邏輯,就可以獨(dú)立做出產(chǎn)品。例如目前的微信小程序云開(kāi)發(fā)就是 Serverless 式的,開(kāi)發(fā)者完全不用關(guān)注底層架構(gòu)。

Serverless 對(duì)前端工程師群體來(lái)說(shuō)是一個(gè)機(jī)會(huì)。讓一個(gè)前端工程師能夠得到獨(dú)立負(fù)責(zé)某些產(chǎn)品研發(fā)的機(jī)會(huì),完成某些產(chǎn)品從需求到上線(xiàn)的從 0 到 1 的機(jī)會(huì),一個(gè)回歸到互聯(lián)網(wǎng)研發(fā)工程師角色的機(jī)會(huì)。我希望所有的前端工程師都有機(jī)會(huì)成為 Serverless 工程師,有機(jī)會(huì)獨(dú)立負(fù)責(zé)研發(fā)整個(gè)產(chǎn)品。

采用 Serverless 的準(zhǔn)備

總體上來(lái)說(shuō),采用 Serverless 不需要工程師大量的學(xué)習(xí)和準(zhǔn)備過(guò)程。

Serverless 本身就是在現(xiàn)有的架構(gòu)中做減法,減去那些服務(wù)器的管理和配置工作。當(dāng)然在具體落地的時(shí)候,還是有一些準(zhǔn)備工作要做:

首先是明確目標(biāo),開(kāi)發(fā)者在了解 Serverless 之后,應(yīng)該去思考對(duì)于自身業(yè)務(wù)和開(kāi)發(fā)架構(gòu),采用 Serverless 是為了解決什么問(wèn)題?想取得哪方面的提升?沒(méi)有一種技術(shù)是為了用而用,都是針對(duì)具體場(chǎng)景解決具體問(wèn)題。這是第一個(gè)需要搞明白的。

明確了目標(biāo)之后,接著是 Serverless 模式下架構(gòu)的一些設(shè)計(jì)工作。與傳統(tǒng)的開(kāi)發(fā)模式一樣,系統(tǒng)設(shè)計(jì)的工作量是根據(jù)業(yè)務(wù)的復(fù)雜程度決定的。對(duì)于復(fù)雜業(yè)務(wù)邏輯來(lái)說(shuō),在開(kāi)發(fā)之前需要明確有多少個(gè)云函數(shù),每個(gè)云函數(shù)的輸入輸出定義、采用哪些 BaaS 后端服務(wù),都需要提前設(shè)計(jì)規(guī)劃好。

特別要說(shuō)明的是,這些設(shè)計(jì)和非 Serverless 并沒(méi)有什么本質(zhì)上的不同,Serverless 云函數(shù)也不是神秘莫測(cè)的。簡(jiǎn)單理解,它所提供的就是一個(gè)語(yǔ)言的 Runtime。在非 Serverless 架構(gòu)下如何執(zhí)行的代碼,Serverless 架構(gòu)下還是那樣執(zhí)行。如果業(yè)務(wù)是基于 Express 或者 koa 這類(lèi)應(yīng)用框架,那么 Serverless 云函數(shù)下,還是直接使用這些框架即可。

騰訊云函數(shù)已支持一鍵部署 Express.js 應(yīng)用

最后是一些實(shí)施上的準(zhǔn)備,以騰訊云函數(shù)為例,只要是寫(xiě)過(guò)代碼的,花小半天時(shí)間閱讀一些基礎(chǔ)文檔、教程,或者是跟著 Demo 走一遍,就可以立刻開(kāi)始寫(xiě)代碼,幾乎沒(méi)有什么門(mén)檻和不同。要敲黑板強(qiáng)調(diào)的是,別忘記了工程化和 CI/CD 方面的考慮,尤其是和現(xiàn)有研發(fā)流程的結(jié)合。這塊有一些小小的工作量,畢竟是開(kāi)發(fā)模式的升級(jí),但基于云函數(shù)提供的 CLI 和 SDK 都很容易實(shí)現(xiàn)。

Serverless 和云函數(shù)的關(guān)系

Serverless 架構(gòu)由兩部分構(gòu)成,分別是 FaaS(Functions as a Service)和 BasS(Backend as a Sevice)。其中 FaaS 就是指云函數(shù),它是一種新的算力組織和提供方式,它讓用戶(hù)不再需要關(guān)心服務(wù)器的管理和配置,只用專(zhuān)注于核心業(yè)務(wù)邏輯業(yè)務(wù)代碼的編寫(xiě)。BaaS 指的是一些服務(wù)化的后端功能,包括數(shù)據(jù)庫(kù) / 對(duì)象存儲(chǔ)、賬戶(hù)權(quán)鑒、消息隊(duì)列、社交媒體整合和 AI 能力等,這些服務(wù)和接口在 FaaS 層使用相應(yīng)的 SDK 或 API 來(lái)連接和調(diào)用。

FaaS + BaaS

FaaS+BaaS 的組合,構(gòu)成了 Serverless 無(wú)服務(wù)器架構(gòu),免除了所有運(yùn)維性操作,讓企業(yè)和開(kāi)發(fā)者可以更加專(zhuān)注于核心業(yè)務(wù)的開(kāi)發(fā),實(shí)現(xiàn)快速上線(xiàn)和迭代,把握業(yè)務(wù)發(fā)展的節(jié)奏。

由此可見(jiàn),云函數(shù)是 Severless 架構(gòu)中的算力部分,是實(shí)現(xiàn) Severless 架構(gòu)的基礎(chǔ)計(jì)算資源。在 Severless 架構(gòu)下的業(yè)務(wù)系統(tǒng)中,因業(yè)務(wù)功能、需求場(chǎng)景不同,所需的 BaaS 后端服務(wù)也可能各不相同,但業(yè)務(wù)邏輯都需要通過(guò)云函數(shù)來(lái)實(shí)現(xiàn)。

具體案例

剛才也提到 Serverless 本身有很多很多的應(yīng)用場(chǎng)景,這個(gè)問(wèn)題在不同的 Serverless 的場(chǎng)景下,答案也是不同的。

如果業(yè)務(wù)需求是基于類(lèi)似于 Express、koa 的應(yīng)用框架來(lái)實(shí)現(xiàn)的,那么在設(shè)計(jì)上,基本沒(méi)有任何區(qū)別。Serverless 云函數(shù)可以很好地支持這些應(yīng)用框架,只是部署方式不同而已。

如果需求場(chǎng)景不需要任何應(yīng)用框架,直接使用原生代碼,在 Serverless 架構(gòu)下進(jìn)行設(shè)計(jì)時(shí),需要以函數(shù)為粒度來(lái)考慮,將函數(shù)作為業(yè)務(wù)中的最小功能單元。

還有一個(gè)場(chǎng)景使用 Serverless 和不使用就有很大的不同——企業(yè)上云。

現(xiàn)在很多企業(yè)應(yīng)用都做應(yīng)用上云,上云其實(shí)是一件非常有技術(shù)門(mén)檻的事情。可能需要上云的代碼只有幾百行,但傳統(tǒng)上云絕不是上傳部署幾百行代碼那么簡(jiǎn)單(估計(jì)很多工程師看到 Kubernetes 那幾本厚書(shū)的時(shí)候就已經(jīng)快瘋了)。這個(gè)過(guò)程需要專(zhuān)業(yè)的、有經(jīng)驗(yàn)的工程師,花費(fèi)大量的工作,才能把業(yè)務(wù)系統(tǒng)遷移到云上。

傳統(tǒng)的應(yīng)用上云:大量的技術(shù)門(mén)檻和環(huán)境配置

Serverless 下的體驗(yàn)就非常不同,因?yàn)闊o(wú)服務(wù)器架構(gòu),所以不需要關(guān)注虛機(jī)或者容器配置和治理工作,基本上只用上傳代碼就完成了上云。

Serverless 的未來(lái)演化

從以往的歷史來(lái)看,技術(shù)的演化還是存在一些一般規(guī)律的。

首先我預(yù)測(cè) Serverless 生態(tài)一定會(huì)趨于繁榮。一個(gè)技術(shù)很有優(yōu)勢(shì),相關(guān)的社區(qū)貢獻(xiàn),以及周邊的支持就越強(qiáng)大,用的人就越多;用的人越多,這個(gè)技術(shù)就越火,類(lèi)似于經(jīng)濟(jì)學(xué)里的有效市場(chǎng)理論。最近 Serverless 的發(fā)展很快,可能大家看到這篇內(nèi)容的時(shí)候,我們的 Serverless DB 產(chǎn)品已經(jīng)發(fā)布了,就是開(kāi)發(fā)者連數(shù)據(jù)庫(kù)的存在都不需要關(guān)注了。Serverless 的使用者會(huì)越來(lái)越多,同時(shí)生態(tài)里的貢獻(xiàn)者也會(huì)更多,整個(gè)生態(tài)也會(huì)更加繁榮。

第二個(gè)方向是 Serverless 的標(biāo)準(zhǔn)化。當(dāng)生態(tài)繁榮之后,對(duì)于標(biāo)準(zhǔn)化的需求就變得非常強(qiáng)烈了。國(guó)內(nèi)外各家云都有了自己的 Serverless 解決方案,對(duì)開(kāi)發(fā)者隱藏了底層基礎(chǔ)設(shè)置。但是各家的接口、實(shí)現(xiàn)還是不一樣。試想一下,開(kāi)發(fā)者在國(guó)內(nèi)云上用 Serverless 實(shí)現(xiàn)的代碼,在做國(guó)際化的時(shí)候,要遷移到另一個(gè)云廠(chǎng)商,卻發(fā)現(xiàn)完全無(wú)法平滑遷移是什么感受?公司內(nèi)兩個(gè)技術(shù)團(tuán)隊(duì)如何在 Serverless 的架構(gòu)下復(fù)用功能和代碼?如何能夠用統(tǒng)一的標(biāo)準(zhǔn)或者框架來(lái)構(gòu)建應(yīng)用?Serverless 開(kāi)發(fā)需要一些標(biāo)準(zhǔn),或是某一種框架來(lái)適配各個(gè)云廠(chǎng)商之間的不同實(shí)現(xiàn)和接口,很可能是 Serverless 接下來(lái)的發(fā)展方向。

傳送門(mén):

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    日韩国产亚洲欧美激情| 婷婷开心五月亚洲综合| 亚洲人午夜精品射精日韩 | 中文字幕精品人妻一区| 人妻人妻人人妻人人澡| 无套内射美女视频免费在线观看| 国产精品尹人香蕉综合网 | 久久99亚洲小姐精品综合| 欧美一区日韩二区亚洲三区| 99久久国产精品亚洲| 国产一区二区三区四区免费| 日本中文在线不卡视频| 久久99亚洲小姐精品综合| 好吊色免费在线观看视频| 日韩亚洲精品国产第二页| 午夜国产精品福利在线观看| 亚洲欧美日韩另类第一页| 黄片免费播放一区二区| 亚洲精品黄色片中文字幕| 成人精品欧美一级乱黄| 亚洲一级二级三级精品| 1024你懂的在线视频| 精品日韩中文字幕视频在线| 亚洲妇女黄色三级视频 | 日韩一级毛一欧美一级乱| 日本午夜一本久久久综合| 国产又粗又硬又长又爽的剧情| 国产精品一区二区视频成人 | 欧美一区二区三区播放| 91亚洲国产成人久久| 一区二区三区亚洲国产| 亚洲人午夜精品射精日韩| 亚洲免费黄色高清在线观看| 六月丁香六月综合缴情| 国产精品久久精品国产| 日本高清一道一二三区四五区| 亚洲欧美日韩国产成人| 国产自拍欧美日韩在线观看| 国产精品不卡免费视频| 久久福利视频在线观看| 中国一区二区三区人妻|