Serverless最佳實踐:如何在兩週內開發出用戶量過億的微信小程序

引言
一切好的產品都是從一個絕妙的創意開始!

騰訊相冊前身是空間相冊,而且空間相冊已經在手機APP端,網頁端都有了入口。爲了增加用戶活躍,讓客戶在各個軟件中都能快速觸達,騰訊相冊團隊推出了微信小程序形式的騰訊相冊。本文將從開發背景、技術需求與落地實踐三個維度出發,還原騰訊相冊小程序的開發歷程,以及Serverless是如何助力騰訊相冊團隊在兩週內,開發出承載過億用戶量的微信小程序。

注:文章內容整理自騰訊雲產品經理方坤丁和高級架構師盧萌凱在Kubecon 2019上的演講,演講主題爲《Serverless 雲上最佳實踐 :如何在兩週內開發出用戶量過億的微信小程序》,感興趣的讀者可點擊閱讀原文下載講師完整PDF。

騰訊相冊微信小程序開發背景說明

在2019年Q1,微信和WeChat的合併活躍用戶爲11.12億,而小程序的活躍用戶從17年初發布後,在18年底增長到了2.3億。小程序主要有以下幾個特點:

  • 速度快。無需下載安裝,加載速度快於app HTML5,隨時可用
  • 無適配。一次開發,多端兼容,免除了對各種手機機型的適配
  • 可分享。支持圖文分享、支持分享給微信好友和羣聊
  • 體驗好。可達到近乎與原生app相同的操作體驗和流暢度
  • 易獲取。支持掃碼、微信搜索、好友推薦等發起場景
  • 低門檻。基於微信的生態。已有公衆號的組織可快速註冊、可快速生成小程序

微信小程序的這些特性,能夠與騰訊相冊這類社交性工具完美結合。那麼,這個小程序應該怎樣設計?作爲一名產品經理,我們想到了如下幾個需求:

  • 基本能力:圖片及視頻獲取、展示、管理、上傳、下載、圖片集
  • 社交屬性:點贊、評論
  • 傳播能力:分享
  • 用戶規模:千萬級
  • 上線時間:4周。時間對於產品佔領用戶的心來說十分重要,因此,時間目標定了4週上線。

需求明確之後,就是怎樣用高效、快速並省成本的方式實現騰訊相冊小程序。

騰訊相冊小程序基於 Serverless 落地實踐

傳統模式開發流程

產品的開發需求非常明確,總結4個字就是“多快好省”。承載千萬級用戶的小程序,對後臺架構的性能和穩定性要求非常高,如果有足夠的時間和資源,這些都不是問題。但是想要在4周的時間內完成開發並上線,壓力非常大。如果按照傳統的開發模式下,這樣一款小程序需要

  1. 項目人員準備:至少1個前端工程師,2個後臺工程師,加一個測試和2個運維。
  2. 當人員Ready後,開始着手環境搭建,需要運維購買資源,如主機,數據庫,負載均衡等,並協助部署運行環境、域名備案、搭建監控告警系統等。
  3. 環境Ready後,前端和後臺開始開發,然後測試介入、運維完成線上部署,最後申請發佈。

即使順利的情況下,整套流程都很順利的走完,也需要至少8周的時間,如果人員不到位,需要的時間更久。可以發現,耗時主要是在環境搭建和開發流程當中,而且人力耗費也在這一塊。

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

因此,自上而下,對團隊成員的專業技能要求越來越高。同時,花費的時間也越來越多。

環境和開發工作全部完成後,需要進行架構維護,不僅需要維護業務集羣,還需要關注各個組件的穩定性。測試方面,除了產品功能驗證外,還需要壓測各個組件的性能。最後,還需要隨時保障整個系統的穩定性和安全性。

基於Serverless 模式的開發流程

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

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

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

如何使用

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

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

如何基於Serverless實現騰訊相冊小程序開發

以最核心的社交功能爲例。按照傳統的開發模式,研發團隊會面臨幾個挑戰,運維人力,開發複雜度,歷史包袱等。

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

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

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

總結

對於公司/個人來說,通過雲的Serverless架構開發微信小程序,有下面幾個非常顯著的優勢:

  1. 加快了產品的迭代效率
  2. 穩定,高可用,彈性伸縮,完全不需要自己關心底層的運維
  3. 降低了資源的投入,這裏包括了人力和財力

騰訊雲Serverless,可以助力微信小程序開發!用戶後續在開發小程序,或者有任何想法需要快速落地時,可以想到採用Serverless架構來開發 ,非常的驚喜、簡單。

本文轉載自公衆號ServerlessCloudNative(ID:ServerlessGo)

原文鏈接

https://mp.weixin.qq.com/s/zzdTAzpu2SUizelhGbzvDQ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章