2019 年 Q1,微信和 WeChat 的合并活躍用戶為 11.12 億,而小程序的活躍用戶從 17 年初發(fā)布后,在 18 年底增長到了 2.3 億。
小程序主要有以下幾個(gè)特點(diǎn):
微信小程序的這些特性,能夠與騰訊相冊(cè)這類社交性工具完美結(jié)合。
那么,這個(gè)小程序應(yīng)該怎樣設(shè)計(jì)?
作為一名產(chǎn)品經(jīng)理,我們想到了如下幾個(gè)需求:
需求明確之后,就是怎樣用高效、快速并省成本的方式實(shí)現(xiàn)騰訊相冊(cè)小程序。
一、傳統(tǒng)模式開發(fā)流程
產(chǎn)品的開發(fā)需求非常明確,簡單講就是「多快好省」。
承載千萬級(jí)用戶的小程序,對(duì)后臺(tái)架構(gòu)的性能和穩(wěn)定性要求非常高,如果有足夠的時(shí)間和資源,這些都不是問題。
但是想要在 4 周的時(shí)間內(nèi)完成開發(fā)并上線,壓力非常大。如果按照傳統(tǒng)的開發(fā)模式下,這樣一款小程序需要:
即使整套流程都很順利,也需要至少 8 周的時(shí)間。如果人員不到位,需要的時(shí)間更久。
可以發(fā)現(xiàn),耗時(shí)主要是在環(huán)境搭建和開發(fā)流程當(dāng)中,而且人力耗費(fèi)也在這一塊。
在開發(fā)流程這塊,后端開發(fā)除了需要關(guān)注核心業(yè)務(wù)邏輯之外,還需要做框架選型,了解數(shù)據(jù)庫和文件存儲(chǔ)等。并且還需要耗費(fèi)精力對(duì)性能進(jìn)行優(yōu)化,比如高并發(fā)。那么必然也要去了解底層的運(yùn)行機(jī)制,比如容器服務(wù)。同時(shí)運(yùn)維也要花大量的時(shí)間來保障安全和容災(zāi)等能力。
因此,自上而下,對(duì)團(tuán)隊(duì)成員的專業(yè)技能要求越來越高。同時(shí),花費(fèi)的時(shí)間也越來越多。
環(huán)境和開發(fā)工作全部完成后,需要進(jìn)行架構(gòu)維護(hù),不僅需要維護(hù)業(yè)務(wù)集群,還需要關(guān)注各個(gè)組件的穩(wěn)定性。
測(cè)試方面,除了產(chǎn)品功能驗(yàn)證外,還需要壓測(cè)各個(gè)組件的性能。最后,還需要隨時(shí)保障整個(gè)系統(tǒng)的穩(wěn)定性和安全性。
二、基于 Serverless 模式的開發(fā)流程
如果將剛才提到的和核心業(yè)務(wù)邏輯不相關(guān)的事情都交給@微信 和
騰訊云最終,需要關(guān)注的只剩下「小程序端+核心業(yè)務(wù)」,整個(gè)開發(fā)流程將會(huì)變得無比簡潔。
通過 Serverless,這種想法可以得以實(shí)現(xiàn)。Serverless 其實(shí)是一種架構(gòu)理念,他是把底層資源抽象成 API 的形式對(duì)用戶提供服務(wù)。
在去年年初,微信團(tuán)隊(duì)和騰訊云團(tuán)隊(duì)開始嘗試將 Serverless 和小程序開發(fā)結(jié)合起來并提供一套小程序 · 云開發(fā)解決方案,這還要?dú)w功于 Faas 在國內(nèi)的興起。有了 Faas 之后,用戶核心計(jì)算邏輯的承載平臺(tái)真正實(shí)現(xiàn)了 Serverless 化。
三、如何使用
新的架構(gòu)或者方案具體該怎么使用呢?
之前有提到,整個(gè)方案里最核心的是計(jì)算模塊。當(dāng)有用戶在小程序端發(fā)起后臺(tái)請(qǐng)求的時(shí)候,云函數(shù)平臺(tái)會(huì)根據(jù)用戶的請(qǐng)求量動(dòng)態(tài)地伸縮實(shí)例,以保證用戶的請(qǐng)求能夠被及時(shí)響應(yīng),同時(shí)用戶可以在云函數(shù)里發(fā)起數(shù)據(jù)庫以及文件存儲(chǔ)的讀寫操作。
下圖展示的完整架構(gòu)是 Serverless 的具體表現(xiàn)形式。用戶不再需要部署服務(wù)器,通過無服務(wù)器云函數(shù)即可實(shí)現(xiàn)核心業(yè)務(wù)邏輯。
這一套基于 Serverless 的架構(gòu)將會(huì)具備以下優(yōu)勢(shì):
四、如何基于 Serverless 實(shí)現(xiàn)騰訊相冊(cè)小程序開發(fā)
以最核心的社交功能為例。按照傳統(tǒng)的開發(fā)模式,研發(fā)團(tuán)隊(duì)會(huì)面臨幾個(gè)挑戰(zhàn),運(yùn)維人力,開發(fā)復(fù)雜度,歷史包袱等。
借助云開發(fā)的能力,架構(gòu)設(shè)計(jì)將會(huì)變得非常簡單。
舉個(gè)例子,按照傳統(tǒng)的開發(fā)方式,需要花費(fèi)大量的時(shí)間在框架路由設(shè)計(jì)和安全設(shè)計(jì),以及后臺(tái)的性能優(yōu)化上面。而基于 Serverless 的方案,只需引用 SDK,就能直接 callfunction,運(yùn)行業(yè)務(wù)代碼。
再來看下性能方面,根據(jù)現(xiàn)網(wǎng)的運(yùn)行數(shù)據(jù),發(fā)現(xiàn)無論波峰還是波谷,后臺(tái)的響應(yīng)延遲都在 70ms 以下。
可以看到,對(duì)比傳統(tǒng)的開發(fā)模式,需要大約 1 人 10 周的人力完成開發(fā)、而借助 Serverless,只需要 1 人 3 周就能完成基礎(chǔ)開發(fā)和測(cè)試。
因?yàn)椋到y(tǒng)架構(gòu)變得非常簡單,并且和原有的空間后臺(tái)完美兼容,極大提升了開發(fā)效率。
對(duì)于公司/個(gè)人來說,通過云的 Serverless 架構(gòu)開發(fā)微信小程序,有下面幾個(gè)非常顯著的優(yōu)勢(shì):