『 作為一個(gè)不斷發(fā)展的新興技術(shù)丢早, Serverless 熱度的制高點(diǎn)已然到來(lái)⊙砬悖』
或許怨酝,Google Trends 所顯示的 3 年猛增 20 倍的“ Serverless ” 搜索量,可以佐證 Serverless 在整個(gè)行業(yè)中的火爆程度那先。
不僅如此农猬,據(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)」煎楣。
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)資源。
從表面上看宣脉,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)成本。
「 那么界轩,在用戶量峰值過(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)操作云資源砚亭。
目前小程序·云開發(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)路人虑椎。