摘要:以「數字金融新原力(The New Force of Digital Finance)」爲主題,螞蟻金服ATEC城市峯會於2019年1月4日於上海如期舉辦。ATEC移動開發專場分論壇上,螞蟻金服前端技術專家袁收納帶來了主題爲《小程序 Serverless: 解放生產力,驅動研發效能提高》的精彩分享。前端
演講中,袁收納分享了螞蟻金服Serverless架構的技術特色及設計框架。對比目前小程序的傳統開發流程,展現了Serverless架構高效簡潔的優點。
袁收納 螞蟻金服前端技術專家java
首先來看一下在目前小程序開發的狀況下應該如何處理。
在傳統模式中,當咱們須要去開發一個小程序的時候,咱們依舊須要採用像開發傳統 app 同樣的方式進行業務開發。在總體業務開發中,咱們須要多個角色的協同,大體來講,咱們須要以下的一些流程:node
人力成本git
在上述模式中,咱們一個小程序須要 3-4 個角色的參與才能確保咱們的小程序能持續穩定的服務。這對小規模的小程序或者孵化階段的小程序來講人員投入是很是大的。數據庫
資源成本小程序
在傳統的模式中,爲了能讓咱們的小程序穩定運行起來,咱們須要購買大量的資源。最多見的就是 ecs * 2 + rds + slb + 域名 + 證書 等,若是咱們要作安全控制,還需購買雲上的安全設施,好比 ddos 防護等。這些資源無論咱們業務量多大,咱們都須要持續付費,對用戶來講,這個成本是很是高的。c#
綜上,咱們能看出,在傳統的模式中,人力成本和資源成本兩大投入會成爲制約小程序快速佈局落地的攔路虎。若是咱們在小程序業務中仍是使用傳統的開發模式,那咱們業務的總體賦能將會來的不夠經濟、快速。後端
因此,咱們須要使用一種更加簡單、高效的開發方式api
經過上述的分析,咱們能看到傳統模式不利於咱們小程序的快速佈局,咱們須要採用一種更高效的研發方式來實現快速佈局,這種方式就是 Serverless 模式。採用螞蟻的 Serverless 產品 後端雲服務,咱們能夠用更高效、簡單的方式快速實現穩定、可靠的小程序後臺服務。
BaaS安全
模塊後端級服務。通常狀況下,在開發小程序的後臺數據服務時,開發團隊須要在雲上購買相關的短信服務來供前端使用。在有了BaaS以後,開發團隊能夠經過小程序自己直接操做,例如發送短信的功能,如今能夠直接經過小程序完成,而不須要後端參與,所以大大節省了開發成本。
服務託管
目前的狀況下,不管是前端應用仍是後端應用,都須要後臺來處理不少東西,開發者還會去購買雲ECS、購買域名並進行域名備案等工做,以上這些步驟都是不可避免的。在服務託管模式中,數據庫、域名、證書以及整套安全防控均爲服務性體系。在這種模式下,開發者只須要把本身業務邏輯實現好提交給平臺,平臺會完成系統部署並掛到網關上。簡而言之,開發者無需再關心底層環境、數據以及服務器的各類配置等,取而代之的是把代碼提供給小程序平臺,由平臺完成這一系統操做。
函數計算
函數計算是比較簡單的計算單元,咱們能夠採用函數計算來處理一些簡單的異步、批處理操做,例如批量化操做、批量化處理圖象以及處理一些比較耗資源的數據。基於異步事件以及按量付費的函數計算,咱們無需再搭建大規模的計算集羣,只需經過函數計算便可快速、低成本地實現計算能力,串接業務。
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 服務的後端解決方案開發將會變得很是簡單,只需執行以下的操做便可:
在 ide 中編寫後臺服務代碼以及 function 代碼後將代碼經過 ide 提交到雲端
根據業務需求配置 function 觸發器
在小程序端經過 sdk 直接請求後臺的服務接口
整個過程開發者無需關心雲上基礎設施的搭建以及相關的運維管控,只需實現實現業務邏輯便可,簡單高效
對於一些輕量化的場景,咱們只需執行簡單的一些數據操做便可。基於這種場景,小程序 Serverless 服務提供了客戶端解決方案。
區別於後端解決方案,客戶端解決方案的核心是平臺把後面的服務經過服務化能力直接輸送給小程序,小程序可經過客戶端的方案直接操做相應的服務而無需後端的參與。
假如一個商家給顧客發促銷短信,經過平臺的SDK不須要通過任何服務器,發短信發推送等功能小程序均可以直接實現。實現過程當中,通訊鏈路接入安全防控體系,經過這條鏈路的數據將都有安全保障。
在原有模式下,創建一個芝麻信用或者創建一個支付可能須要半天或者一天的時間, 其中涉及到認證、授信、鑑權等多種複雜操做。 爲了給開發者提供便利,小程序 Serverless 平臺和螞蟻開放平臺進行了互信打通,開發者經過平臺開發時無需再關心原有的複雜認證流程,只需採用咱們的 sdk 調用相應接口便可,簡潔高效。
Serverless方式會爲開發者帶來多方面的優點:
研發率的提高
在傳統模式中,咱們須要大量的資源、人力投入。協同成本高,時間週期長。好比在傳統的方案中,咱們須要備案域名,購買證書,這部分至少須要 40 天的時間,這部分時間沒法節省,成本很是高。在具有域名的狀況下,因爲用戶還需處理龐大的後端底層業務,按目前的統計狀況來看,實現一箇中小規模的小程序還需 21 天左右,總體基本須要2 個月時間。
在 Serverless模式中,因爲複雜的底層邏輯都已託管,域名等也已由平臺提供,用戶只需完成本身業務邏輯的開發便可,總體的開發時間能從以往的 21 天縮短到 5 天,大大提高了研發效率。
安全性的保證。
對於通常規模的團隊來講,安全是一個比較容易忽略的話題。可是如今互聯網時代攻擊無處不在,咱們的業務可能隨時會受到別人的惡意攻擊,提供一套安全可靠的防控保障業務的健康尤其重要。
在傳統模式中,實現系統的安全可靠咱們須要有專業的安全人員介入,而且須要在雲端購買大量的安全資源。和實現高可用同樣,咱們須要投入不少的資源和成本,性價比很低。
得益於螞蟻多年來的安全積累,小程序 Serverless 服務爲用戶的服務提供了全方位的安全管控,全方面保障用戶業務的安全。舉例來講,咱們爲用戶提供了以下安全控制:
對於安全方案,basement 正在不斷補充優化,經過 basement,用戶無需單獨支付費用,便可享有專業的安全控制,性價比極高
產品的可靠性。
在傳統的模式中,因爲受限於成本、技術等限制,大多數的應用都是單節點、單機房運行。這種狀況的容災能力是很弱的,若是宕機或者機房網絡異常都會形成服務的中斷,勢必會影響到業務。
若是要實現高可用,在傳統模式中,咱們須要投入大量的底層資源、開發、運維資源,實現複雜度高,成本高,對於通常規模的應用來講性價比很低
在使用小程序 Serverless的模式中,平臺原生支持了同城多機房的容災能力。全部服務的數據都會進行多機房的互備,同時在應用層,咱們也提供了動態的切換能力,能夠保障用戶的服務在單機房故障時能持續可靠繼續服務,保障業務的穩定性。
同時,平臺爲上面運行的全部服務提供高可用能力的同時不針對高可用收費,用戶無需付費便可享受到專業的高可用服務,性價比極高
更低的成本
在傳統模式中,咱們須要大量的人力投入,資源投入,這對公司來講是一筆不小的成本,咱們從兩個方面來看:
在傳統模式中,咱們須要前端 + 後端 + 運維 + 安全等多個角色的協同,人力投入大,成本高
在 Serverless 模式中,只需一個全棧的前端工程師便可完成小程序的開發,人力投入小,成本低,收益高
在傳統模式中,無論業務是否在運行,都須要爲底層的衆多資源付費。這些資源包含服務器、數據庫、負載均衡、監控、安全等產品,對於 dau 不高或者訪問集中化的應用來講,這種付費方式成本很高。
在 Serverless 模式中,全部的資源都是按量付費,只有真正發生了使用纔會收費。同時,對於安全、高可用等能力,用戶無需付費。因此,在使用小程序 Serverless 服務的狀況下,用戶只需花費原有模式 50% 如下的資金投入便可快速實現一個可靠、穩定、安全的小程序服務。
對於已有服務的開發者來講,能夠採用兩種方式接入到螞蟻小程序 Serverless 服務中,咱們稱之爲混合部署模式:
對於現有自購 ecs 的開發者,能夠經過服務託管的形式直接將應用部署到平臺中便可直接使用。
對於稍大規模的商家或者SV,在後臺已經搭建了整個集羣,這樣的業務是沒有辦法直接遷移的。對於這種狀況平臺提供了經過後端服務或者函數直接調用現有服務的方案。經過這些方式,把用戶現有的後端的代碼直接部署到平臺中,並經過平臺投放到多個渠道上面,讓業務能快速落地。
整體來講Serverless方案能給開發者帶來如下優點:首先可以帶來人力上、時間成本上、資金成本上的節省。更重要的是方案可讓用戶能以最簡單最高效的方式上線業務,在目前電子商業瞬息萬變的節奏中,先發制人,達到最快佔領市場份額並攻城略地的效果。
點擊閱讀更多,查看更多詳情