Serverless 最佳實踐:如何在兩週內開發出用戶量過億的微信小程序?
一切好的產品都是從一個絕妙的創意開始!本文將從開發背景、技術需求與落地實踐三個維度出發,還原騰訊相冊小程序的開發歷程,以及Serverless是如何助力騰訊相冊團隊在兩週內開發出承載過億用戶量的微信小程序。
騰訊相冊前身是空間相冊,後者在手機端、網頁端都有了入口。為了增加用戶活躍,讓客戶在各個軟件中都能快速觸達,騰訊相冊團隊推出了微信小程序形式的騰訊相冊。
▎騰訊相冊微信小程序開發背景說明
2019 年Q1,微信和WeChat 的合併活躍用戶為11.12 億,而小程序的活躍用戶從17 年初發布後,在18 年底增長到了2.3 億。
小程序主要有以下幾個特點:
- 速度快。無需下載安裝,加載速度快於app HTML5,隨時可用
- 無適配。一次開發,多端兼容,免除了對各種手機機型的適配
- 可分享。支持圖文分享、支持分享給微信好友和群聊
- 體驗好。可達到近乎與原生app 相同的操作體驗和流暢度
- 易獲取。支持掃碼、微信搜索、好友推薦等發起場景
- 低門檻。基於微信的生態,已有公眾號的組織可快速註冊、生成小程序

微信小程序的這些特性,能夠與騰訊相冊這類社交性工具完美結合。
那麼,這個小程序應該怎樣設計?
作為一名產品經理,我們想到瞭如下幾個需求:
- 基本能力:圖片及視頻獲取、展示、管理、上傳、下載、圖片集
- 社交屬性:點贊、評論
- 傳播能力:分享
- 用戶規模:千萬級
- 上線時間:4 週。時間對於產品佔領用戶的心來說十分重要,因此,我們決心4 週上線。

需求明確之後,就是怎樣用高效、快速並省成本的方式實現騰訊相冊小程序。
▎騰訊相冊小程序基於Serverless落地實踐
一、傳統模式開發流程
產品的開發需求非常明確,簡單講就是「多快好省」。
承載千萬級用戶的小程序,對後台架構的性能和穩定性要求非常高,如果有足夠的時間和資源,這些都不是問題。
但是想要在4 週的時間內完成開發並上線,壓力非常大。如果按照傳統的開發模式下,這樣一款小程序需要:
- 項目人員準備:至少1 個前端工程師,2 個後台,加1 個測試和2 個運維。
- 人員ready 後,開始著手環境搭建。需要運維購買資源,如主機、數據庫、負載均衡等,並協助部署運行環境、域名備案、搭建監控告警系統等。
- 環境ready 後,前端和後台開始開發,然後測試介入、運維完成線上部署,最後申請發布。
即使整套流程都很順利,也需要至少8 週的時間。如果人員不到位,需要的時間更久。
可以發現,耗時主要是在環境搭建和開發流程當中,而且人力耗費也在這一塊。

在開發流程這塊,後端開發除了需要關注核心業務邏輯之外,還需要做框架選型,了解數據庫和文件存儲等。並且還需要耗費精力對性能進行優化,比如高並發。那麼必然也要去了解底層的運行機制,比如容器服務。同時運維也要花大量的時間來保障安全和容災等能力。

因此,自上而下,對團隊成員的專業技能要求越來越高。同時,花費的時間也越來越多。
環境和開發工作全部完成後,需要進行架構維護,不僅需要維護業務集群,還需要關注各個組件的穩定性。
測試方面,除了產品功能驗證外,還需要壓測各個組件的性能。最後,還需要隨時保障整個系統的穩定性和安全性。

二、基於Serverless模式的開發流程
如果將剛才提到的和核心業務邏輯不相關的事情都交給@微信和@騰訊雲,系統架構將會大大簡化,而且能夠節省不少人力。
最終,需要關注的只剩下「小程序端+核心業務」,整個開發流程將會變得無比簡潔。
通過Serverless,這種想法可以得以實現。 Serverless 其實是一種架構理念,他是把底層資源抽象成API 的形式對用戶提供服務。

在去年年初,微信團隊和騰訊雲團隊開始嘗試將Serverless 和小程序開發結合起來並提供一套小程序· 雲開發解決方案,這還要歸功於Faas 在國內的興起。有了Faas 之後,用戶核心計算邏輯的承載平台真正實現了Serverless 化。

- 首先雲開發封裝了用戶需要用到的雲函數、數據庫和文件存儲資源,開發不用再去關心環境問題;
- 其次,從小程序端到雲開發後台的請求,走的是微信和騰訊雲之間的專線,並且用的是私有協議,所以用戶也不用擔心安全問題;
- 最後,雲開發整個後台提供了完善的監控和日誌系統,也省去了運維同學的部分工作。因此,新的方案不僅省去了很多運維的工作,同時也有效加速了開發流程。

三、如何使用
新的架構或者方案具體該怎麼使用呢?
之前有提到,整個方案裡最核心的是計算模塊。當有用戶在小程序端發起後台請求的時候,雲函數平台會根據用戶的請求量動態地伸縮實例,以保證用戶的請求能夠被及時響應,同時用戶可以在雲函數里發起數據庫以及文件存儲的讀寫操作。
下圖展示的完整架構是Serverless 的具體表現形式。用戶不再需要部署服務器,通過無服務器雲函數即可實現核心業務邏輯。

這一套基於Serverless 的架構將會具備以下優勢:
- 無窮的彈性計算能力
- 讓用戶聚焦核心業務邏輯的編寫
- 根據請求自動運行
- 秒級上傳部署
- 幾乎不需要運維

四、如何基於Serverless實現騰訊相冊小程序開發
以最核心的社交功能為例。按照傳統的開發模式,研發團隊會面臨幾個挑戰,運維人力,開發複雜度,歷史包袱等。

借助雲開發的能力,架構設計將會變得非常簡單。
舉個例子,按照傳統的開發方式,需要花費大量的時間在框架路由設計和安全設計,以及後台的性能優化上面。而基於Serverless 的方案,只需引用SDK,就能直接callfunction,運行業務代碼。

再來看下性能方面,根據現網的運行數據,發現無論波峰還是波谷,後台的響應延遲都在70ms 以下。

可以看到,對比傳統的開發模式,需要大約1 人10 週的人力完成開發、而藉助Serverless,只需要1 人3 週就能完成基礎開發和測試。
因為,系統架構變得非常簡單,並且和原有的空間後台完美兼容,極大提升了開發效率。

▎總結
對於公司/個人來說,通過雲的Serverless 架構開發微信小程序,有下面幾個非常顯著的優勢:
- 加快了產品的迭代效率
- 穩定、高可用、 彈性伸縮,完全不需要自己關心底層的運維
- 降低了人力、財力等資源的投入
作者介绍: - 腾讯云产品经理方坤丁- 腾讯云高级架构师卢萌凯
Serverless Framework 30 天試用計劃
我們誠邀您來體驗最便捷的Serverless 開發和部署方式。在試用期內,相關聯的產品及服務均提供免費資源和專業的技術支持,幫助您的業務快速、便捷地實現Serverless!
詳情可查閱: Serverless Framework試用計劃
One More Thing
3 秒你能做什麼?喝一口水,看一封郵件,還是——部署一個完整的Serverless應用?
複製鏈接至PC瀏覽器訪問: https:// serverless.cloud.tencent.com /deploy/express
3秒極速部署,立即體驗史上最快的Serverless HTTP實戰開發!
傳送門:
- GitHub: github.com/serverless
- 官網: serverless.com
歡迎訪問: Serverless中文網,您可以在最佳實踐裡體驗更多關於Serverless應用的開發!