1. 程式人生 > >小程序 Serverless: 解放生產力,驅動研發效能提升

小程序 Serverless: 解放生產力,驅動研發效能提升

金融 UNC 即使 解決 健康 數字 批處理 高可用 數字金融

摘要:以“數字金融新原力(The New Force of Digital Finance)”為主題,螞蟻金服ATEC城市峰會於2019年1月4日於上海如期舉辦。ATEC移動開發專場分論壇上,螞蟻金服前端技術專家袁收納帶來了主題為《小程序 Serverless: 解放生產力,驅動研發效能提升》的精彩分享。

演講中,袁收納分享了螞蟻金服Serverless架構的技術特點及設計框架。對比目前小程序的傳統開發流程,展示了Serverless架構高效簡潔的優勢。
技術分享圖片
袁收納 螞蟻金服前端技術專家

小程序開發現狀

首先來看一下在目前小程序開發的情況下應該如何處理。
技術分享圖片
在傳統模式中,當我們需要去開發一個小程序的時候,我們依舊需要采用像開發傳統 app 一樣的方式進行業務開發。在整體業務開發中,我們需要多個角色的協同,大致來說,我們需要如下的一些流程:

  1. 小程序的技術開發人員開發小程序端上業務,實現小程序 UI,體驗端的交互邏輯等。
  2. 後臺的技術開發人員需要通過相應的後端語言(java/nodejs/c#等)來開發後臺業務。這裏的後臺業務包含登錄、權限、數據操作、業務邏輯控制等。後臺的技術開發人員需要通過相應的後端語言(java/nodejs/c#等)來開發後臺業務。這裏的後臺業務包含登錄、權限、數據操作、業務邏輯控制等。
  3. 前後端人員開發好邏輯後進行部署聯調
  4. 服務部署後,需要運維的人員來處理環境問題、監控、容災等問題,以確保服務的持續可用前後端人員開發好邏輯後進行部署聯調 服務部署後,需要運維的人員來處理環境問題、監控、容災等問題,以確保服務的持續可用服務部署後,需要運維的人員來處理環境問題、監控、容災等問題,以確保服務的持續可用前後端人員開發好邏輯後進行部署聯調 服務部署後,需要運維的人員來處理環境問題、監控、容災等問題,以確保服務的持續可用
  5. 最後,安全的人員需要為應用制定安全規則,搭配相應的安全處理方案,確保服務的安全可靠,不被惡意攻擊最後,安全的人員需要為應用制定安全規則,搭配相應的安全處理方案,確保服務的安全可靠,不被惡意攻擊
    從以上流程我們能看出,在現有的模式中,我們開發一個小程序的成本其實蠻高的。從兩個地方來看,一個是人力成本,一個是資源成本。

人力成本

在上述模式中,我們一個小程序需要 3-4 個角色的參與才能確保我們的小程序能持續穩定的服務。這對小規模的小程序或者孵化階段的小程序來說人員投入是非常大的。

資源成本

在傳統的模式中,為了能讓我們的小程序穩定運行起來,我們需要購買大量的資源。最常見的就是 ecs * 2 + rds + slb + 域名 + 證書 等,如果我們要做安全控制,還需購買雲上的安全設施,比如 ddos 防禦等。這些資源不管我們業務量多大,我們都需要持續付費,對用戶來說,這個成本是非常高的。

綜上,我們能看出,在傳統的模式中,人力成本和資源成本兩大投入會成為制約小程序快速布局落地的攔路虎。如果我們在小程序業務中還是使用傳統的開發模式,那我們業務的整體賦能將會來的不夠經濟、快速。

所以,我們需要使用一種更加簡單、高效的開發方式

更簡單的Serverless開發方式

通過上述的分析,我們能看到傳統模式不利於我們小程序的快速布局,我們需要采用一種更高效的研發方式來實現快速布局,這種方式就是 Serverless 模式。采用螞蟻的 Serverless 產品 後端雲服務,我們可以用更高效、簡單的方式快速實現穩定、可靠的小程序後臺服務。
技術分享圖片
BaaS

模塊後端級服務。一般情況下,在開發小程序的後臺數據服務時,開發團隊需要在雲上購買相關的短信服務來供前端使用。在有了BaaS之後,開發團隊可以通過小程序本身直接操作,例如發送短信的功能,現在可以直接通過小程序完成,而不需要後端參與,因此大大節省了開發成本。

服務托管

目前的情況下,無論是前端應用還是後端應用,都需要後臺來處理很多東西,開發者還會去購買雲ECS、購買域名並進行域名備案等工作,以上這些步驟都是不可避免的。在服務托管模式中,數據庫、域名、證書以及整套安全防控均為服務性體系。在這種模式下,開發者只需要把自己業務邏輯實現好提交給平臺,平臺會完成系統部署並掛到網關上。簡而言之,開發者無需再關心底層環境、數據以及服務器的各種配置等,取而代之的是把代碼提供給小程序平臺,由平臺完成這一系統操作。

函數計算

函數計算是比較簡單的計算單元,我們可以采用函數計算來處理一些簡單的異步、批處理操作,例如批量化操作、批量化處理圖象以及處理一些比較耗資源的數據。基於異步事件以及按量付費的函數計算,我們無需再搭建大規模的計算集群,只需通過函數計算即可快速、低成本地實現計算能力,串接業務。

螞蟻小程序 Serverless服務結構

Serverless的服務大結構分為如下圖所示四層:
技術分享圖片
第一層,阿裏生態支持層。

Serverless支持所有阿裏的生態,為開發者提供十分靈活的接入方案無縫接入支付寶高德等服務,並允許開發者直接使用這些服務。

第二層,統一接入層。

小程序的一個核心特點就是能通過一個小程序快速布局到多個端上,以便快速吸收各個端上的流量,為業務帶來紅利。

在傳統的模式中,如果我們需要將小程序部署到多個端上,那我們需要基於每個端的登錄體系實現認證,這個對開發者來說成本還是蠻高的。

在螞蟻 Serverless 服務中,我們提供了統一接入能力,客戶不再需要去處理各個端上的認證差異,通過 Serverless 服務提供的統一 api 即可快速實現認證,大大縮減開發時間。

第三層是Serverless架構的核心層,其具有文件儲存,數據儲存,服務托管,函數計算等諸多能力。接下來就為大家詳細介紹這以上幾種能力。

文件儲存;

在現在的移動互聯網中,我們有大量的資源需要使用上傳、下載。在傳統的模式中,我們需要購買存儲、cdn、域名、證書等,然後再使用後端服務進行文件的存取操作,整體還是比較復雜的。同時,當用戶在移動端情況下做營銷或紅包投放時,用戶資源的訪問量是很大的,會出現後臺承載量有限、開發成本昂貴等問題。

基於這個場景,小程序 Serverless 平臺為開發者提供了基於 CDN 的文件 BaaS 服務,通過我們封裝良好的 SDK,開發者只需將文件通過接口上傳,即可直接享受到 CDN 的能力,為文件帶來最佳的訪問性能以及海量的訪問量。

數據儲存;

在數據儲存方面,小程序 Serverless 服務針對不同的小程序場景提供了不同的解決方案。

對中小型小程序來說,小程序可以通過客戶端的SDK操作數據庫裏的數據,無需服務端參與,即可完成數據的存取操作。在此過程中,平臺為用戶的數據提供了嚴格的管控以及靈活的 DSL 配置,開發者可以根據自己的業務需求定義數據的訪問策略,讓客戶端可以安全、靈活地訪問數據

DSL 樣例如下:

{
 // 規則的範圍是 comment 這個集合
 "comments": {
  // 所有人可讀".read": true,
  // 只有當操作者(請求來源)和資源所有者是同一個人時可寫
  ".write": "request.auth.userId == resource.auth.userId",
  // 所有人可以進行其他操作
  "*": true
 },
 // 規則的範圍是所有集合
 "*": {
   // 所有人可以進行任何操作
   "*": true
  }
}

對於復雜後端邏輯的小程序來說,小程序 Serverless 提供了基於服務托管的後端解決方案,通過服務托管,開發者可以獲得和開發後端應用一樣的體驗,開發者可以對數據持有最大的自由操作權,可以完全按照自己的業務體系定義。

服務托管;

在傳統模式中,開發者需要花費大量的精力去做環境的搭建、系統部署、運維等事項,同時,還需花費很高的成本去實現高可用等可用性方案,成本高,性價比低。

基於這個場景,小程序 Serverless 服務提供了服務托管的解決方案。通過服務托管,開發者無需再關系底層環境、後端運維的各種細節。開發者只需將業務代碼提交到雲端即可,雲端會自動完成代碼的構建、部署等各種事項。讓開發者真正的無需關心底層運維即可快速實現後端業務。

使用服務托管模式,開發者可以獲得如下優勢:

開發者無需單獨購買域名證書,無需再進行域名備案,大大縮短新項目上線周期
開發者無需關心雲上復雜後端環境的搭建,只需將精力集中在業務邏輯的開發上即可,大大縮短研發時間
服務托管方案為後臺服務提供了彈性伸縮的能力,以及跨機房容災的能力,開發者不再需要花費大量精力大量資源去搭建復雜的容災伸縮機制,只需接入服務托管即可一鍵具備可靠的容災能力。
服務托管采用按量付費機制,只在有真實業務產生時才會產生費用,和 ecs 相比,成本能大大縮減。
函數計算;

函數計算是一種更輕量的服務托管,是一個個單一的後端計算單元。通過函數計算,開發者可以將原有的復雜計算邏輯拆分為多個計算函數,然後通過事件或者http 方式串接起計算業務,在實現對業務解耦的同時也能縮短對後端資源成本的依賴。

我們平臺官方即將提供豐富的業務雲函數,用戶開箱即用,無需再去處理底層復雜的邏輯。比如我們有一個圖片水印的函數,專門負責處理圖片的水印,我們在上傳文件後,只需觸發一下水印函數即可對文件實現水印處理,無需我們在應用裏進行復雜的處理邏輯,和業務真正解耦。

數據分析能力;

基於螞蟻金融科技的數據能力,我們為用戶提供多樣化的數據分析能力。基於我們提供的數據能力,用戶可以更好地對業務進行決策,對系統進行優化,實現更高的業務價值。

安全管控能力:

基於螞蟻多年的安全積累,小程序 Serverless 服務為運行其上的應用提供了專業的安全管控。從接入層的防 ddos, 到鏈路層的證書驗證,再到數據層的內容安全控制。我們為客戶提供了全方位的安全控制,保障用戶的業務能持續安全運行,免受惡意攻擊。同時,螞蟻專業的安全團隊也在不斷監控管理,為用戶服務的安全做更進一步的防控

第四層,螞蟻的生態能力層:

通過開放平臺,小程序可以直接分享到螞蟻生態帶來的紅利,開發者可以基於信用來做租借,基於會員來做紅包等。在傳統的方案中,我們在接入螞蟻生態時成本較高,需要進行很多的安全處理。在小程序 Serverless 服務中,平臺和螞蟻開放平臺進行了打通,用戶無需再關心原有復雜的接入方式,無需再關心簽名等安全措施,只需通過我們的sdk,即可直接調用螞蟻開放接口,大大縮短研發時間。一筆支付的時間,可以從四五個小時,縮短到十分鐘,甚至對比較熟練的用戶,五分鐘就可以搞定。

Serverless後端解決方案

技術分享圖片
基於函數計算與服務托管,小程序 Serverless 服務提供了一整套的後端解決方案,旨在為開發者提供最簡潔高效的後端研發模型。

對小程序開發者來說,通過小程序 Serverless 服務的後端解決方案開發將會變得非常簡單,只需執行如下的操作即可:

在 ide 中編寫後臺服務代碼以及 function 代碼後將代碼通過 ide 提交到雲端
根據業務需求配置 function 觸發器
在小程序端通過 sdk 直接請求後臺的服務接口
整個過程開發者無需關心雲上基礎設施的搭建以及相關的運維管控,只需實現實現業務邏輯即可,簡單高效

Serverless客戶端解決方案

對於一些輕量化的場景,我們只需執行簡單的一些數據操作即可。基於這種場景,小程序 Serverless 服務提供了客戶端解決方案。
技術分享圖片
區別於後端解決方案,客戶端解決方案的核心是平臺把後面的服務通過服務化能力直接輸送給小程序,小程序可通過客戶端的方案直接操作相應的服務而無需後端的參與。

假如一個商家給顧客發促銷短信,通過平臺的SDK不需要經過任何服務器,發短信發推送等功能小程序都可以直接實現。實現過程中,通信鏈路接入安全防控體系,通過這條鏈路的數據將都有安全保障。

Serverless與螞蟻開放能力

在原有模式下,建立一個芝麻信用或者建立一個支付可能需要半天或者一天的時間, 其中涉及到認證、授信、鑒權等多種復雜操作。 為了給開發者提供便利,小程序 Serverless 平臺和螞蟻開放平臺進行了互信打通,開發者通過平臺開發時無需再關心原有的復雜認證流程,只需采用我們的 sdk 調用相應接口即可,簡潔高效。
技術分享圖片

Serverless帶來的優勢

Serverless方式會為開發者帶來多方面的優勢:

研發率的提升

在傳統模式中,我們需要大量的資源、人力投入。協同成本高,時間周期長。比如在傳統的方案中,我們需要備案域名,購買證書,這部分至少需要 40 天的時間,這部分時間無法節省,成本非常高。在具備域名的情況下,由於用戶還需處理龐大的後端底層業務,按目前的統計情況來看,實現一個中小規模的小程序還需 21 天左右,整體基本需要2 個月時間。

在 Serverless模式中,由於復雜的底層邏輯都已托管,域名等也已由平臺提供,用戶只需完成自己業務邏輯的開發即可,整體的開發時間能從以往的 21 天縮短到 5 天,大大提升了研發效率。
技術分享圖片
安全性的保證。

對於一般規模的團隊來說,安全是一個比較容易忽略的話題。但是現在互聯網時代攻擊無處不在,我們的業務可能隨時會受到別人的惡意攻擊,提供一套安全可靠的防控保障業務的健康尤為重要。

在傳統模式中,實現系統的安全可靠我們需要有專業的安全人員介入,並且需要在雲端購買大量的安全資源。和實現高可用一樣,我們需要投入很多的資源和成本,性價比很低。

得益於螞蟻多年來的安全積累,小程序 Serverless 服務為用戶的服務提供了全方位的安全管控,全方面保障用戶業務的安全。舉例來說,我們為用戶提供了如下安全控制:

  • 接入層控制: 在接入層控制上,平臺為所有應用提供了 ddos 的流量防護以及防火墻的防護,保障業務流量的安全性。 內容安全控制:
  • 針對所有上傳到平臺的資源,我們都會自動做風險識別,對於涉黃、涉政、暴力等有法律風險、輿論等風險的資源進行實時管理,確保不會給用戶業務帶來風險。
  • 訪問控制: 針對客戶端的 BaaS 服務,我們為開發者提供了基於 DSL的安全控制策略,開發者可以根據業務需求對數據進行強管控,保障數據不發生非法訪問以及泄漏。比如數據存儲服務的規則如下 控制臺控制:
  • 對於用戶的控制臺操作,我們接入了螞蟻專業的風控體系,對登錄用戶進行精確的風控校驗,即使用戶非法獲取到賬號密碼也無法直接操作控制臺,確保用戶後臺不會被惡意操作。

對於安全方案,basement 正在不斷補充優化,通過 basement,用戶無需單獨支付費用,即可享有專業的安全控制,性價比極高
技術分享圖片
產品的可靠性。

在傳統的模式中,由於受限於成本、技術等限制,大多數的應用都是單節點、單機房運行。這種情況的容災能力是很弱的,如果宕機或者機房網絡異常都會造成服務的中斷,勢必會影響到業務。

如果要實現高可用,在傳統模式中,我們需要投入大量的底層資源、開發、運維資源,實現復雜度高,成本高,對於一般規模的應用來說性價比很低

在使用小程序 Serverless的模式中,平臺原生支持了同城多機房的容災能力。所有服務的數據都會進行多機房的互備,同時在應用層,我們也提供了動態的切換能力,可以保障用戶的服務在單機房故障時能持續可靠繼續服務,保障業務的穩定性。

同時,平臺為上面運行的所有服務提供高可用能力的同時不針對高可用收費,用戶無需付費即可享受到專業的高可用服務,性價比極高
技術分享圖片
更低的成本

在傳統模式中,我們需要大量的人力投入,資源投入,這對公司來說是一筆不小的成本,我們從兩個方面來看:

  1. 人力成本

在傳統模式中,我們需要前端 + 後端 + 運維 + 安全等多個角色的協同,人力投入大,成本高

在 Serverless 模式中,只需一個全棧的前端工程師即可完成小程序的開發,人力投入小,成本低,收益高

  1. 資源成本

在傳統模式中,不管業務是否在運行,都需要為底層的眾多資源付費。這些資源包含服務器、數據庫、負載均衡、監控、安全等產品,對於 dau 不高或者訪問集中化的應用來說,這種付費方式成本很高。

在 Serverless 模式中,所有的資源都是按量付費,只有真正發生了使用才會收費。同時,對於安全、高可用等能力,用戶無需付費。所以,在使用小程序 Serverless 服務的情況下,用戶只需花費原有模式 50% 以下的資金投入即可快速實現一個可靠、穩定、安全的小程序服務。
技術分享圖片

混合部署模式

對於已有服務的開發者來說,可以采用兩種方式接入到螞蟻小程序 Serverless 服務中,我們稱之為混合部署模式:

  1. 對於現有自購 ecs 的開發者,可以通過服務托管的形式直接將應用部署到平臺中即可直接使用。
  2. 對於稍大規模的商家或者SV,在後臺已經搭建了整個集群,這樣的業務是沒有辦法直接遷移的。對於這種情況平臺提供了通過後端服務或者函數直接調用現有服務的方案。通過這些方式,把用戶現有的後端的代碼直接部署到平臺中,並通過平臺投放到多個渠道上面,讓業務能快速落地。
    技術分享圖片

總結

總體來說Serverless方案能給開發者帶來以下優勢:首先能夠帶來人力上、時間成本上、資金成本上的節省。更重要的是方案可以讓用戶能以最簡單最高效的方式上線業務,在目前電子商業瞬息萬變的節奏中,先發制人,達到最快占領市場份額並攻城略地的效果。
點擊閱讀更多,查看更多詳情

小程序 Serverless: 解放生產力,驅動研發效能提升