熱度3年猛增20倍,Serverless&云開發(fā)的技術(shù)架構(gòu)全解析

『 作為一個(gè)不斷發(fā)展的新興技術(shù)丢早, Serverless 熱度的制高點(diǎn)已然到來(lái)⊙砬悖』

或許怨酝,Google Trends 所顯示的 3 年猛增 20 倍的“ Serverless ” 搜索量,可以佐證 Serverless 在整個(gè)行業(yè)中的火爆程度那先。

image

不僅如此农猬,據(jù) KBV 研究公司新發(fā)布的《全球 Serverless 架構(gòu)市場(chǎng)》及 RightScale 云服務(wù)狀況報(bào)告 2018 版顯示,全球 Serverless 架構(gòu)的市場(chǎng)滲透率已超 75%售淡,市場(chǎng)規(guī)模預(yù)計(jì)到 2024 年將達(dá)到 140 億美元斤葱,并將在預(yù)測(cè)期內(nèi)以 23.4% 的年復(fù)合增長(zhǎng)率增長(zhǎng)。

作為一種云原生的架構(gòu)揖闸,Serverless 與 BaaS揍堕、FaaS 之間有何“愛恨情仇”?冤家路窄卻能完美解決前后端聯(lián)調(diào)等開發(fā)痛點(diǎn)汤纸,解決方案又是如何鹤啡?相較于傳統(tǒng)開發(fā)模式,基于“無(wú)服務(wù)開發(fā)”理念的小程序·云開發(fā)模式又“新”在何處蹲嚣,有何利好递瑰?下面我們從 Serverless 的架構(gòu)演進(jìn)來(lái)具體分析。

『 Serverless 架構(gòu)詳解 』

在過(guò)去的十幾年里 (2006 年誕生 IaaS)隙畜,云計(jì)算的進(jìn)程從物理機(jī)演進(jìn)到 IaaS抖部,再到 PaaS,已經(jīng)將應(yīng)用程序的運(yùn)行環(huán)境和通用組件议惰,越來(lái)越多地交給云服務(wù)商慎颗。Serverless 進(jìn)一步將主機(jī)管理、操作系統(tǒng)管理言询、資源分配俯萎、擴(kuò)展、甚至應(yīng)用邏輯的整個(gè)組件运杭,都交付給云服務(wù)商夫啊,在成本和運(yùn)營(yíng)效率方面獲得了顯著的提升。

作為一種云原生的架構(gòu)辆憔,Serverless 使得開發(fā)者在開發(fā)應(yīng)用時(shí)不需部署撇眯、配置和管理傳統(tǒng)服務(wù)器报嵌,轉(zhuǎn)而依賴于第三方服務(wù),將代碼托管到云端平臺(tái)熊榛。

目前锚国,業(yè)界并沒(méi)有給出明確的定義,而是把其分成兩種類型玄坦,分別為「 Backend as a Service 」 和 「 Functions as a Service 」血筑。換一種開發(fā)者更熟知的表達(dá)方式看,也就是「 后端即服務(wù)(BaaS)」和「 功能即服務(wù)(FaaS)」煎楣。

image

Serverless=BaaS+FaaS云挟?聽著很高深,其實(shí)很好理解转质。

「 BaaS 」是將應(yīng)用開發(fā)中所有后端的需求,通過(guò)統(tǒng)一的云平臺(tái)來(lái)解決帖世,讓開發(fā)者無(wú)需再編寫和管理所有服務(wù)端組件休蟹。BaaS 使開發(fā)者無(wú)需編寫完整的邏輯組件,但需要將應(yīng)用程序與云服務(wù)商提供的特定接口和模型集成日矫。

而「 FaaS 」是把函數(shù)作為一個(gè)線上服務(wù)赂弓、遠(yuǎn)程計(jì)算服務(wù),可以通過(guò) API哪轿、郵件盈魁、IoT 等執(zhí)行。FaaS 是一種構(gòu)建和部署服務(wù)端軟件的新方式窃诉,面向部署單個(gè)的函數(shù)或者操作杨耙,是一種新的運(yùn)行代碼的托管環(huán)境。FaaS 本質(zhì)上是事件驅(qū)動(dòng)的飘痛,優(yōu)化了函數(shù)運(yùn)行時(shí)的資源使用珊膜,它的目標(biāo)是在運(yùn)行的時(shí)候才消費(fèi)資源。

image

從表面上看宣脉,BaaS 和 FaaS 是兩碼事——前者是把應(yīng)用中的各個(gè)部分完全外包出去车柠,后者是一種新的運(yùn)行代碼的托管環(huán)境。

那么塑猖,為什么要把它們都劃歸為 Serverless 呢竹祷?

關(guān)鍵在于,它們都不需要開發(fā)者管理自己的服務(wù)器主機(jī)或者服務(wù)器進(jìn)程羊苟。Serverless 并非是無(wú)服務(wù)器塑陵,它仍然涉及服務(wù)器,只是這個(gè)服務(wù)器在云上蜡励。實(shí)際上猿妈,這是一種使用服務(wù)的新方法吹菱,在很多情況下,它比自己去買服務(wù)器更為劃算彭则,而且加快了項(xiàng)目上線的時(shí)間鳍刷,降低了開發(fā)、維護(hù)俯抖、擴(kuò)展的復(fù)雜性输瓜。

Serverless 技術(shù)的崛起不但讓開發(fā)者無(wú)需過(guò)多考慮服務(wù)器問(wèn)題,并且完美地解決前后端聯(lián)調(diào)等開發(fā)痛點(diǎn)芬萍,作為一種全新的架構(gòu)尤揣,Serverless 可謂是云計(jì)算發(fā)展演化的必然結(jié)果。

『 傳統(tǒng)開發(fā)痛點(diǎn)解析及解法 』

“Serverless 所提供的接口柬祠,簡(jiǎn)化了云計(jì)算的編程北戏,其代表了程序員生產(chǎn)力的又一次的變革,一如編程語(yǔ)言從匯編時(shí)代演變?yōu)楦呒?jí)語(yǔ)言時(shí)代漫蛔∈扔” 2019 年,伯克利在《將云中的編程變得簡(jiǎn)單:伯克利視角下的 Serverless 計(jì)算》中的犀利語(yǔ)句也論斷了 Serverless 云時(shí)代主宰般的地位莽龟。

此前蠕嫁,云計(jì)算服務(wù)并沒(méi)有從根本上改變?cè)O(shè)計(jì)應(yīng)用程序的方式。

例如毯盈,當(dāng)使用 Docker 這樣的工具時(shí)剃毒,開發(fā)者在應(yīng)用程序周圍放置了一個(gè)更薄的“盒子”,但它仍然是一個(gè)盒子搂赋,邏輯架構(gòu)不會(huì)發(fā)生顯著的變化赘阀。再比如,在云中托管 MySQL 實(shí)例時(shí)脑奠,開發(fā)者仍需考慮工作負(fù)載所需的虛擬機(jī)資源纤壁,以及故障切換等問(wèn)題。

現(xiàn)如今捺信,這種情況在 Serverless 面前酌媒,迎刃而解。甚至在前后端分離與聯(lián)調(diào)所產(chǎn)生的一系列權(quán)責(zé)迄靠、溝通與調(diào)試等開發(fā)痛點(diǎn)上秒咨,Serverless 也能從以下 5 個(gè)維度完美解決:

? 按需計(jì)費(fèi)。不同于 IaaS/PaaS 預(yù)先分配計(jì)算資源的計(jì)費(fèi)方式掌挚,Serverless 按請(qǐng)求次數(shù)及運(yùn)行時(shí)間計(jì)費(fèi)雨席,一方面可以最大程度利用資源,另一方面真正的按需計(jì)費(fèi)可以降低開發(fā)者的資源成本吠式,開發(fā)者只需要為函數(shù)實(shí)際執(zhí)行所消耗的資源付費(fèi)陡厘,即用即付抽米;

? 高效率****。在 Serverless 的架構(gòu)中糙置,用戶操作的是服務(wù)化的組件云茸,如存儲(chǔ)服務(wù)、授權(quán)服務(wù)等谤饭,縮短了開發(fā)周期标捺,降低了開發(fā)難度,且避免了由基礎(chǔ)設(shè)施產(chǎn)生的延遲揉抵;

? 綠色計(jì)算亡容。在 Serverless 架構(gòu)下,服務(wù)商提供細(xì)力度的計(jì)算能力冤今,最大限度地滿足開發(fā)的實(shí)時(shí)需求闺兢,資源利用率將大幅度提升;

? 高擴(kuò)展戏罢。Serverless 架構(gòu)的橫向擴(kuò)展是完全自動(dòng)屋谭、有彈性的,且由服務(wù)提供者所管理帖汞;

? 無(wú)需運(yùn)維。運(yùn)維的發(fā)展經(jīng)歷了人肉運(yùn)維凑术、自動(dòng)化運(yùn)維翩蘸、DevOps 和 AIOps 等階段,而 Serverless 帶來(lái)一種新的運(yùn)維模式淮逊。在這種模式下催首,開發(fā)者只需要關(guān)心業(yè)務(wù)本身,無(wú)需運(yùn)維泄鹏。

正因開發(fā)痛點(diǎn)重重郎任,在想要突破傳統(tǒng)開發(fā)模式,探索新型開發(fā)方案的過(guò)程中备籽,開發(fā)者借助 Serverless 技術(shù)架構(gòu)舶治,基于“無(wú)服務(wù)開發(fā)”理念創(chuàng)造出了一種新型開發(fā)模式——小程序·云開發(fā)。

小程序·云開發(fā)车猬,是微信與騰訊云聯(lián)合開發(fā)的原生 Serverless 云服務(wù)霉猛,它集成了微信公眾平臺(tái)及騰訊云兩個(gè)核心業(yè)務(wù)的技術(shù)能力,免鑒權(quán)珠闰、免后端配置和運(yùn)維惜浅、一切圍繞 API 和 SDK 為核心。

以云調(diào)用功能為例伏嗜,只要在小程序端觸發(fā)云函數(shù)坛悉,便將經(jīng)過(guò)微信自動(dòng)鑒權(quán)直接調(diào)用伐厌,如數(shù)據(jù)分析、客服消息裸影,插件管理等開放 API 接口挣轨。這些開放接口通過(guò)系統(tǒng)配置、將大幅提升效率空民、優(yōu)化體驗(yàn)刃唐、降低運(yùn)營(yíng)成本。

image

「 那么界轩,在用戶量峰值過(guò)大或黑客攻擊的情況下画饥,小程序·云開發(fā)是如何保證后臺(tái)服務(wù)性能與安全的呢?」

首先浊猾,小程序·云開發(fā)沒(méi)有傳統(tǒng)的后臺(tái)服務(wù)器抖甘,也就沒(méi)有被 DDoS 的目標(biāo),這是從產(chǎn)品形態(tài)上保障用戶業(yè)務(wù)安全葫慎;其次衔彻,小程序·云開發(fā)之間的環(huán)境是互相隔離的,即便發(fā)生攻擊偷办,從架構(gòu)上將不會(huì)相互影響艰额;再次,小程序·云開發(fā)服務(wù)構(gòu)建在騰訊云基礎(chǔ)設(shè)施之上椒涯,天然擁有快速擴(kuò)容和安全防護(hù)的能力柄沮。

在用戶量突增時(shí),小程序·云開發(fā)的開發(fā)人員會(huì)立即通過(guò)響應(yīng)的監(jiān)控及告警發(fā)現(xiàn)流量的變化废岂,然后確認(rèn)是否需要擴(kuò)容祖搓。騰訊云基礎(chǔ)運(yùn)維能力也保證了開發(fā)者擁有能夠快速擴(kuò)充服務(wù)的能力,以避免對(duì)用戶的服務(wù)造成影響湖苞。

而在突發(fā)黑客大流量攻擊(如 DDoS)時(shí)拯欧,小程序·云開發(fā)的開發(fā)及運(yùn)維人員也會(huì)先確認(rèn)遭受攻擊的真實(shí)性,當(dāng)?shù)玫酱_認(rèn)后會(huì)第一時(shí)間與騰訊云系統(tǒng)運(yùn)維财骨、騰訊安全中心確認(rèn)镐作,確保已經(jīng)對(duì)小程序·云開發(fā)的服務(wù)器加強(qiáng)防護(hù),以保護(hù)系統(tǒng)服務(wù)安全隆箩。此外滑肉,小程序·云開發(fā)控制臺(tái)也有響應(yīng)的流量實(shí)時(shí)數(shù)據(jù)告知開發(fā)者,開發(fā)者可以據(jù)此了解服務(wù)的流量數(shù)據(jù)摘仅,如有異嘲忻恚可以聯(lián)系小程序·云開發(fā)官方。

『 小程序·云開發(fā)架構(gòu)詳解 』

云開發(fā)是一種 BaaS,在引入了 Serverless 技術(shù)架構(gòu)的同時(shí)六荒,讓開發(fā)者在構(gòu)建應(yīng)用的過(guò)程中無(wú)需關(guān)注計(jì)算資源的獲取和運(yùn)維护姆。

在應(yīng)用端,開發(fā)者可以直接使用官方提供的接口掏击。在云函數(shù)端卵皂,開發(fā)者可以直接使用官方提供的 Node SDK,來(lái)操作云資源砚亭。

image

目前小程序·云開發(fā)一共提供了三大基礎(chǔ)能力灯变,分別是云函數(shù)、數(shù)據(jù)庫(kù)捅膘、文檔存儲(chǔ)添祸。簡(jiǎn)而言之,就是提供了存文件寻仗、存數(shù)據(jù)和運(yùn)行業(yè)務(wù)邏輯的能力刃泌。

其中,云函數(shù)能力來(lái)源于騰訊云的“無(wú)服務(wù)器云函數(shù) SCF” 署尤。通過(guò)與 SCF 的深度結(jié)合應(yīng)用耙替,可以形成一套比較完整的 Serverless 解決方案。

? 使用 SCF曹体,可以讓開發(fā)者更簡(jiǎn)單的管理服務(wù)端代碼俗扇,無(wú)需管理或配置服務(wù)器,只需將代碼上傳至 SCF箕别,就可以自動(dòng)運(yùn)行铜幽;

? 可以更高效的利用資源,按照?qǐng)?zhí)行時(shí)間和調(diào)用次數(shù)收費(fèi)究孕,代碼不運(yùn)行時(shí)不產(chǎn)生費(fèi)用啥酱;

? 可以快速建立持續(xù)擴(kuò)展的能力爹凹,每個(gè)云函數(shù)互不影響厨诸,并行處理不同的邏輯。

此外禾酱,小程序·云開發(fā)的數(shù)據(jù)庫(kù)能力則是基于騰訊云的 NoSQL 數(shù)據(jù)庫(kù)服務(wù)微酬,并兼容 MongoDB 協(xié)議。每個(gè)數(shù)據(jù)庫(kù)資源都會(huì)分配一個(gè)實(shí)例 ID颤陶,每一個(gè)實(shí)例都是至少一主一從的副本集或者包含多個(gè)副本集的分片集群颗管,數(shù)據(jù)庫(kù)反向代理轉(zhuǎn)發(fā)請(qǐng)求去最優(yōu)副本集。

同樣滓走,小程序·云開發(fā)借助騰訊云提供的面向非結(jié)構(gòu)化數(shù)據(jù)——對(duì)象存儲(chǔ)(Cloud Object Storage垦江,COS)支持文檔存儲(chǔ)服務(wù)的文件上傳、下載和刪除等功能搅方,可以幫助開發(fā)者處理文件相關(guān)的業(yè)務(wù)邏輯比吭。所有上傳的文件都會(huì)有一個(gè)全網(wǎng)唯一的文件 ID绽族,使用文件 ID 可以在 image、audio 等小程序組件中直接訪問(wèn)文件衩藤。通過(guò)小程序·云開發(fā)上傳的文件在小程序內(nèi)默認(rèn)允許訪問(wèn)吧慢,不需要配置 CDN 域名白名單。

2019 年 1 月赏表,騰訊云宣布推出總價(jià)值超過(guò) 10 億元的“小程序·云開發(fā)”資源扶持計(jì)劃检诗,對(duì)超過(guò)一百萬(wàn)個(gè)小程序開發(fā)者提供免費(fèi)資源扶持,全面助力開發(fā)者打造優(yōu)秀小程序瓢剿。

小程序·云開發(fā)將持續(xù)豐富 SDK 能力逢慌,釋放騰訊的技術(shù)價(jià)值,逐漸支持多種開發(fā)語(yǔ)言跋选,讓開發(fā)更便捷涕癣。不僅如此,騰訊云還會(huì)加快豐富云開發(fā)的各類行業(yè)解決方案前标,滿足企業(yè)業(yè)務(wù)不同應(yīng)用場(chǎng)景需求 坠韩。

未來(lái),新的技術(shù)層出不窮炼列,但是要知道技術(shù)始終是為人服務(wù)的只搁。不解決人的問(wèn)題,技術(shù)無(wú)法成長(zhǎng)壯大俭尖。

將開發(fā)者的精力解放出來(lái)氢惋,讓他們投入到業(yè)務(wù)邏輯等更具價(jià)值的工作中,從根本上賦能技術(shù)發(fā)展稽犁,才是推動(dòng)行業(yè)”車輪“不斷向前駛進(jìn)的源動(dòng)力焰望。


開發(fā)小程序真的很難嗎?低成本已亥、低門檻一直是小程序的優(yōu)勢(shì)熊赖,可還是有一些開發(fā)者找不到門路。這只不過(guò)是缺少一個(gè)領(lǐng)路人虑椎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末震鹉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捆姜,更是在濱河造成了極大的恐慌传趾,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泥技,死亡現(xiàn)場(chǎng)離奇詭異浆兰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門簸呈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)病蛉,“玉大人官辽,你說(shuō)我怎么就攤上這事那婉∷芑模” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵玩裙,是天一觀的道長(zhǎng)兼贸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吃溅,這世上最難降的妖魔是什么溶诞? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮决侈,結(jié)果婚禮上螺垢,老公的妹妹穿的比我還像新娘。我一直安慰自己赖歌,他們只是感情好枉圃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著庐冯,像睡著了一般孽亲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上展父,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天返劲,我揣著相機(jī)與錄音,去河邊找鬼栖茉。 笑死篮绿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吕漂。 我是一名探鬼主播亲配,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼痰娱!你這毒婦竟也來(lái)了弃榨?” 一聲冷哼從身側(cè)響起菩收,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梨睁,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后娜饵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坡贺,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遍坟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拳亿。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖愿伴,靈堂內(nèi)的尸體忽然破棺而出肺魁,到底是詐尸還是另有隱情,我是刑警寧澤隔节,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布鹅经,位于F島的核電站,受9級(jí)特大地震影響怎诫,放射性物質(zhì)發(fā)生泄漏瘾晃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一幻妓、第九天 我趴在偏房一處隱蔽的房頂上張望蹦误。 院中可真熱鬧,春花似錦肉津、人聲如沸强胰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哪廓。三九已至,卻和暖如春初烘,著一層夾襖步出監(jiān)牢的瞬間涡真,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工肾筐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哆料,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓吗铐,卻偏偏與公主長(zhǎng)得像东亦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子唬渗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容