【小程序】輕鬆構建Serverless架構

前言

自 2017 年第一批小程序上線以來,愈來愈多的移動端應用以小程序的形式呈現。小程序擁有觸手可及、用完即走的優勢,這大大下降了用戶的使用負擔,使小程序獲得了普遍的傳播。在阿里巴巴,小程序也被普遍地應用在淘寶/支付寶/釘釘/高德等平臺上。前端

爲了支撐大量的小程序,服務端面臨的挑戰有:node

  • 大量的小程序是不活躍的,傳統的至少一臺服務器的方式會形成資源浪費;
  • 在活動高峯期小程序的調用量激增,要求服務端可以快速進行彈性伸縮。

而小程序開發者每每是客戶端/前端的開發者,更多的精力在開發業務代碼與應用的快速上線上,而無意顧暇服務端的運維操做。git

阿里雲函數計算是一個全託管 Serverless 計算服務,讓開發者無需管理服務器等基礎設施,只需編寫和上傳代碼,就可以構建可靠、彈性、安全的服務。es6

函數計算彈性、免運維、高效、安全的特性十分適合做爲小程序的服務端。github

解決方案

函數計算封裝了一套小程序服務端模板,幫助小程序開發者快速搭建基於函數計算的小程序。數據庫

使用這個模板搭建小程序應用具備如下特色:npm

  • 運維效率高: 無需管理服務器,部署函數便可上線
  • 開發效率高: 基於封裝好的數據接口,直接開發業務代碼
  • 零費用啓動: 服務端基於函數計算,數據庫採用表格存儲,都是按量付費而且有較大的免費額度

小程序的工做流程

搭建流程
一個完整的支付寶小程序須要如下幾個元素:json

  • 支付寶 App:是支付寶小程序的載體,運行在用戶手機端
  • 小程序客戶端:是小程序展示給用戶的操做頁面
  • 小程序服務端:是小程序的邏輯處理單元,好比對用戶進行身份認證以及對數據進行存取
  • 支付寶服務端:是支付寶 App 的邏輯處理單元,包含用戶的身份信息

函數計算封裝了一套小程序服務端模板,幫助小程序開發者快速搭建基於函數計算的小程序。下面介紹服務端模板的工做流程。小程序

FC 服務端模板工做流程

除了基礎設施的運維問題,服務端主要解決兩個通用問題:segmentfault

  1. 身份認證: 服務端提供的 API 如何對客戶端的請求進行鑑權?客戶端的信息若是泄露如何保證數據安全?
  2. 數據訪問: 客戶端如何進行數據庫操做和文件操做?

這是每個小程序開發都會遇到的共性的問題,能夠經過一些框架或者模板來避免重複建設。所以咱們基於函數計算開發了一個小程序應用模板,解決了這些通用的問題,讓開發者可以專一在業務邏輯上,快速開發上線本身的小程序。

服務端工做流程

  1. 客戶端小程序經過支付寶 App 的 API,得到 authCode,這個過程會在 App 中彈出用戶受權框;
  2. 小程序客戶端向小程序服務端發起 createSession 請求,用於初始化的身份認證;
  3. 小程序服務端將 authCode 傳給支付寶服務端,支付寶服務端校驗 authCode,返回 accessToken;
  4. 小程序服務端根據收到的 accessToken 生成一個 sessionId 和一個 STS token,在服務端記錄這 2 個信息而後把它們返回給客戶端。STS token 是用於訪問服務端函數的憑證,而 sessionId 做爲前面認證成功而創建的會話信息,經過這 個sessionId 能夠識別當前請求的用戶信息;
  5. 小程序客戶端再次須要獲取數據,帶着證實本身身份的 sessionId 向小程序服務端發起獲取數據請求;
  6. 小程序服務端首先根據 sessionId 獲取用戶身份信息,再根據用戶信息獲取相關數據;
  7. 將用戶數據返回給小程序客戶端。

搭建流程

註冊支付寶小程序

![APPID](https://img.alicdn.com/tfs/TB10ZEDvHr1gK0jSZR0XXbP8XXa-1812-1176.png)

*   [生成密鑰](https://docs.open.alipay.com/291/106097/),須要在小程序服務端與支付寶服務端配置密鑰,對交易數據進行雙方校驗
*   將公鑰配置在 【設置】->【開發設置】-【接口加簽方式】,並記錄私鑰  
    ![](https://img.alicdn.com/tfs/TB10ZEDvHr1gK0jSZR0XXbP8XXa-1812-1176.png)

搭建小程序服務端

  • 準備工做

  • 部署應用

    • 進入控制檯應用中心,選擇Mini App Todo List Server Template模板,填寫剛纔記錄的 APPID 與 PrivateKey,爲 DBInstance/LogProject 取個自定義的名字(若是名字已被佔用,會報 Already Exists 的錯誤),部署應用

搭建小程序客戶端

  • 準備工做

  • 搭建應用

    npm install git://github.com/aliyun/fc-nodejs-sdk.git#mini-app --save
![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "點擊並拖拽以移動")

*   TODO LIST 客戶端代碼在[mini-app-todo-list-client](https://github.com/awesome-fc/fc-mini-app-todolist/tree/master/mini-app-todo-list-client)
    
    *   修改server.js開頭定義的變量,這些值會在[服務端模板](http://gitlab.alibaba-inc.com/awesome-fc/mini-app-todo-list-server)部署成功後自動輸出:
    
    |信息|說明|

fcAccountId

阿里雲AccountId

fcRegion

函數部署的區域,例如cn-shanghai

fcServiceName

函數計算服務名稱

sessionFunctionName

session函數的名稱,例如session

dbFunctionName

db函數的名稱,例如db

因爲fc-nodejs-sdk使用了ES6語法,在發佈小程序時,須要在小程序項目的根目錄下,新建一個文件mini.project.json,填入如下內容:

{
  "node_modules_es6_whitelist": [
     "@alicloud/fc2"
  ]
}

至此,開發工做已經完成,您能夠調試,上線您的小程序啦。

總結

小程序上線後隨着訪問量的增長或者活動期間的訪問突增,對後端服務的穩定和彈性也是一個很大的考驗。函數計算上傳代碼便可運行,極大地提升了後端服務的開發效率;混合模式的彈性伸縮,輕鬆應對負載變化。服務端模板與客戶端模板能夠快速搭建基於函數計算的小程序應用,這些特色使得函數計算成爲支撐小程序很好的選擇。

查看更多:https://yqh.aliyun.com/detail..._content=g_1000105889

上雲就看雲棲號:更多雲資訊,上雲案例,最佳實踐,產品入門,訪問:https://yqh.aliyun.com/

相關文章
相關標籤/搜索