天天看點

小程式上雲,有點猛

  前不久有一個朋友問我,到底是做什麼端的小程式比較好?

  我隻問了一句,你的産品裡是否涉及錢和服務,如果涉及這兩者,建議你選擇支付寶小程式。你可以通過其他小程式玩裂變,但如果你想做服務和商業,一定要考慮支付寶小程式。

  小程式To B的戰争早已打響。從前台看,是小程式、IoT的解決方案之争;從中台看,展現在資料服務的争奪;而在背景,則取決于雲服務的基礎設施誰更得使用者青睐。

  針對背景雲服務,支付寶小程式是如何建構自己的商業底層實力?

  傳統小程式開發

  VS

  小程式雲服務

  傳統的小程式後端開發常見的痛點是:後端環境搭建複雜,比如要考慮伺服器、資料庫、域名、證書等;搭建後端完成,應用釋出到雲端的過程冗長,這裡涉及CI/CD、編譯打包、多環境等;同時小程式的開放能力內建複雜,要考慮簽名驗簽、異步回調。所有這些流程梳理完要花費幾天時間。

小程式上雲,有點猛

  為了讓開發者不必在後端開發上耗費太多精力,支付寶小程式雲服務提供了兩種解決方案,一種是經典的有伺服器自主運維的雲應用,另一種是無伺服器托管模式的Serverless,通過小程式雲服務搭建背景,省去了開發者自己搭建背景耗費的人力物力成本,讓開發者可以把精力放在支付寶小程式的業務實作。

  ###支付寶小程式雲應用

  有伺服器自主運維

  小程式雲應用是一個以開發者為中心,以簡單友善+自主可控為目标,針對小程式進行場景優化的應用PaaS平台。小程式雲應用的定位是:專注于為小程式提供快速建構、穩定運作小程式後端的服務。

  小程式雲應用提供了哪些能力?

  (1)便利性:比如IDE端提供了插件之後,可以讓後端的開發者和雲端進行無縫打通,後端代碼可以在IDE裡面直接釋出到雲端,這裡小程式雲應用提供了一鍵建構雲端環境、一鍵釋出的能力。針對支付寶小程式的場景,小程式雲應用設定了自動配置設定測試營運和一些相關的證書,讓開發者可以直接使用MySQL資料庫。

  (2)靈活性:開發者可以一鍵建構後端環境,但這并不意味着缺少靈活性。小程式雲應用允許開發者自由組合螞蟻金服金融科技的産品,在滿足便利性的同時也能實作靈活性。另外小程式雲應用有一套高可用架構,提供監控預警能力。

  (3)自主可控:小程式雲應用提供伺服器,開發者可以擁有、登入或重新開機,也可以修改密碼。也就是說,伺服器是由小程式雲應用提供,但使用權歸開發者。

  (4)提高代碼的研發效率:除了友善開發者使用和建構後端環境之外,小程式雲應用更關注在開發過程中如何提高代碼效率,這裡小程式雲應用提供了自動生成代碼模闆的能力,友善開發者使用。

  對于一個有伺服器的後端研發流程,可以分為4步:建構雲端的環境和伺服器——>代碼開發——>應用釋出——>應用運維。小程式雲應用是如何在每個階段簡化開發過程呢?

  首先,作為一個小程式開發者,你需要了解IDE、螞蟻開放平台和小程式雲應用的關系:

小程式上雲,有點猛

 

  在螞蟻開放平台通過登入打通的方式,可以直接進入小程式雲應用的頁面,通過螞蟻開發者工具Node.js或者基于Java的IntelliJ IDEA插件,也可以進入到小程式雲應用中,這樣開發者不必在三者間切換,進而實作一站式開發小程式。

  在了解一站式開發小程式之後,小程式雲應用是如何幫助開發者建構雲端環境?這裡底層編排引擎非常重要,它通過應用建立、資源建立、資料庫配置、網絡配置、自動配置二級域名和證書,一次性幫助使用者完成雲端環境的建構,從使用者的體驗來看,就是完成5步的點選操作即可。

小程式上雲,有點猛

  

  IDE提供一鍵釋出的能力,幫助開發者直接将應用釋出到雲端。在一鍵應用釋出的背後,小程式雲應用其實是內建了CI/CD和釋出部署能力,進而給使用者提供良好的一鍵釋出的體驗。

  如何實作代碼研發效率的提升?

  代碼研發效率的提升有兩點:一是代碼托管雲端建構,二是代碼模闆自動生成。

小程式上雲,有點猛

  從代碼模闆自動生成的角度,比如技術類代碼模闆,通過支付寶認證擷取使用者資訊,完成檔案上傳、認證授權、資料庫通路等操作,進而提供給使用者生成代碼的能力;

  對于業務類代碼模闆,需要根據不同的業務類型,比如支付、營銷、信用等,深度內建螞蟻金服的自有能力。例如,支付不是一個接口就可以簡單搞定,而是需要多個接口串聯,是以小程式雲應用提供的代碼并不是針對一個接口,而是将整個支付鍊路串聯起來,使用者隻要通過修改一些參數(如公鑰、私鑰等)就可以運作代碼。

  對于場景類業務,不同行業的支付寶小程式,除了通用的能力之外,還應該具備行業特色。小程式雲應用結合螞蟻金服積累多年的行業經驗,針對不同行業打造不同的小程式代碼模闆,進而提升代碼研發效率。

  小程式雲應用的語言架構是什麼?

  小程式雲應用的語言架構有兩種選擇,對于熟悉前端開發的開發者,小程式雲應用提供Node.js;對于習慣Java的開發者,小程式雲應用提供SOFABoot和Spring Boot兩種架構,Spring Boot是目前最流行的開源架構,而SOFABoot 是螞蟻金服基于 Spring Boot 建構的一個研發架構,擴充了很多企業級特性,以解決大規模團隊開發雲原生微服務系統中會遇到的問題,如類隔離、ReadinessCheck,日志隔離等等能力,後續會開放更多内部實踐過的特性,如 Spring 上下文隔離,合并部署,動态子產品,Tracing、Metrics、Streaming、測試架構等。

小程式上雲,有點猛

  對于高可用,小程式雲應用提供以下方案的支撐:

  多可用區,可以簡單了解為多機房;通過SLB+ECS實作負載均衡;彈性伸縮和監控預警能力,保障對高可用的支撐。

  小程式雲應用的後期運維,通過一個Web控制台,提供多種運維能力幫助使用者做應用管理、釋出、復原、啟停等。

小程式上雲,有點猛

  小程式雲應用的技術架構:

  小程式雲應用的底層是阿裡雲計算、存儲、網絡的基礎能力,以及螞蟻開放平台支付、安全、信用等能力;在底層能力之上,通過螞蟻金服的應用PaaS平台提供一些基礎能力,包括環境資源管理、釋出部署、彈性伸縮、監控分析、分布式中間件;在基礎能力之上建構小程式雲應用的場景化能力,包括IDE插件的無縫內建、環境建構、應用運維和高可用支撐。最上面小程式雲應用支撐的是整個阿裡系小程式,包括支付寶、釘釘、淘寶、高德等。

  總而言之,小程式雲應用是一種經典的有伺服器自主運維模式的後端搭建,如果開發者不想關心後端如何搭建,隻想考慮前端業務邏輯,不妨考慮小程式Serverless。

  2

  小程式Serverless

  無伺服器托管模式

  當開發者想要開發一款小程式的時候,需要考慮的東西有很多:

小程式上雲,有點猛

  這個是一個典型的場景,也是開發商的一個标準模式。而對于創業者,或者想快速開發一款小程式的人來說,有沒有一種方式将複雜的後端簡化?

  設想一下,能否将右面所有的東西都簡化成一個API,這樣使用者在開發小程式的時候,隻需要考慮業務邏輯,後端直接調用相應的API即可?

小程式上雲,有點猛

  如何實作?——>Serverless提供思路:

  Serverless是目前最受開發者關注的技術之一。Serverless不代表再也不需要伺服器了,而是說:開發者再也不用過多考慮伺服器的問題,計算資源作為服務而不是伺服器的概念出現。Serverless是一種建構和管理基于微服務架構的完整流程,允許使用者在服務部署級别而不是伺服器部署級别來管理你的應用部署,使用者甚至可以管理某個具體功能或端口的部署,這就能讓開發者快速疊代,更快速地開發應用。

  Serverless對于小程式後端簡化的啟示:

  傳統開發模式可以抽象成三大類内容:

  計算資源,就是常說的伺服器,包括常見的實體機、虛拟機、容器等;

  中間是存儲和基礎能力,存儲包括檔案存儲、資料庫、離線存儲等,基礎能力是使用者在開發過程常用的輔助能力,比如視訊壓縮、圖檔水印、消息、定時任務等;

  網絡和安全,這往往是雲端最複雜的部分,這裡需要考慮安全、穩定、容災、風控等問題,也是開發者最容易忽視的問題。

  基于這三部分體系,Serverless如何簡化?

小程式上雲,有點猛

  網絡和安全的簡化方式:将域名、證書、流量控制、容災等通過平台内置,由雲端接管,形成底層基礎設施,對使用者直接透明。

  計算資源這部分的簡化方式:将其所有内容簡化為Compute,所有的計算資源在雲裡對于使用者的直覺感受就是運作池,運作池如何布置、彈性如何實作等,無需開發者關心。

  存儲和基礎能力的簡化方式:BaaS(Backend as a Service)是Serverless的核心。後端除了計算以外的所有能力都可以封裝為API,實作開箱即用。簡單來說,使用者根據需要可以随時調用相應的API,而不需要關心底層的執行和運維。

  以上就是Serverless最直覺的抽象。基于Serverless的原理,如何建構支付寶小程式Serverless呢?

  支付寶小程式Serverless架構如下:

小程式上雲,有點猛

  首先來看Compute 部分,從使用者的角度,他不需要考慮伺服器、Linux、檔案存儲等,而隻需要關心代碼,這裡涉及App Service的概念,App Service意味着當使用者送出一個應用到雲上,雲端會自動識别應用的構件、部署、彈性,中間的過程使用者不需要關心,直接通過API調用即可。

  BaaS這部分,就是将所有的能力封裝成API,上圖中列舉了三種解決方案:存儲方案、多媒體方案、安全方案。以存儲方案為例,存儲方案就是将檔案、資料庫的存儲進行API化。舉例來說,如果使用者有一份資料需要儲存,通過調用存儲方案API接口就可以實作直接儲存。

  在Compute和BaaS之上,整套小程式Serverless體系中,使用者是不需要關心域名和證書的,因為域名、證書、DDoS防禦、流量鏡像等已經内置在平台裡。需要說明的是,流量鏡像是螞蟻金服特有的能力,可以幫助使用者分析流量,尋找流量的風險點,進而對流量進行處理和清洗。

  小程式Serverless最上層要解決認證問題。小程式Serverless中已經内置支付寶、高德的體系,預設在使用時已經包含OAuth方案。随着阿裡系小程式的全面打通,雲端的認證差異問題将通過體系内置方案解決,對使用者而言隻需要使用統一的API就可以完成認證。

  小程式Serverless重點的技術方案如下:

  (1)共享資源管理

小程式上雲,有點猛

  當使用者通路網關時,網關會産生一份摘要資料,資料資訊很簡單,比如“A小程式通路a資料庫1次”;資料産生後會進入排程核心,排程核心會根據使用者的摘要資料判斷使用者要通路哪裡,并将資訊傳遞給決策,決策再把資訊錄入到相應資料庫中。

  由于使用者的規模是處在動态變化中,随着使用者規模的遞增,系統感覺到資料的增加,會新初始化一個獨立的執行個體,保證更高的性能和可用性;如果使用者數增長特别迅猛,系統感覺到後也會将資料進行一定的遷移。這樣就實作了根據使用者的增長情況,底層資源進行動态調配。

  (2)Compute排程

小程式上雲,有點猛

  Compute排程依賴于App Service的彈性支撐,是如何實作呢?

  App Service有兩個概念很重要,一是彈性免運維;二是按量。所謂按量,就是App Service是按照正在執行的業務量來計算。當使用者的通路資訊進入排程核心,如果機器沒開始運作,則将通路資訊放到預熱池。預熱池裡會提前初始化Node.js或者Java的執行環境,這樣當使用者通路資訊進入時,可以從預熱池中快速排程資源進入Runtime中執行。随着使用者通路資訊的減少,Runtime會釋放一定的資源。這樣Compute排程就可以實作根據業務量的情況,在底層資源配置上實作動态化。

  (3)資料安全

小程式上雲,有點猛

  資料安全問題是Serverless的核心問題。當小程式Serverless把後端服務開放到雲端時,後端服務的安全性如何保證?

  當使用者通路資訊通過語義控制後,會進入安全規則進行校驗,安全規則的樣例如上圖。安全規則可以簡化為兩條:一是使用者的資料寫入後,所有人都可以讀;二是使用者寫入的資料,隻有使用者自己可以修改。

  不僅如此,小程式Serverless還提供了角色的定義,這就意味着開發者可以指定管理者有哪些權限,遊客可以通路哪些内容等。

  小程式Serverless的優勢:

  (1)研發效率大幅提升:在小程式Serverless解決方案下,不需要考慮伺服器、資源配置、關聯端口等問題,整個開發效率會大幅提升。此外,由于在我國域名申請是需要備案的,備案時間需要30~45天,這就意味着新業務的上線至少要等到45天以後。這對于希望小程式快速上線的開發者而言絕對是一個漫長的時間。但是小程式Serverless方案裡是不需要使用者考慮域名、證書等問題,使用者開發完即可上線,這極大地提升了研發效率。

  (2)安全可靠的後端服務:網絡和安全這部分在小程式Serverless裡處于基礎設施層,相當于一個平台層,由平台管控,幫助使用者實作後端安全服務。整套方案是雙機房,資料備份已經幫使用者做好,隻要使用者使用這套方案,就享受安全可靠的後端服務。

  (3)更低的成本:以前小程式的後端開發主要考慮兩部分成本:一是人力成本,二是資金成本。使用小程式Serverless方案後,整個研發團隊不再需要配置運維工程師,後端工程師,安全工程師等,隻需要一個會Node.js的前端開發者就可以完成小程式前後端開發。

  使用小程式Serverless方案,節省了購買伺服器、資料庫等的花費,Compute排程是按量付費,也就是隻為運作的業務付費,進一步節省了資金成本。

  小程式Serverless的未來?

  (1)更豐富的BaaS:小程式Serverless會提供更多的基礎能力,完善開箱即用的API化。

  (2)完善的資料分析:對于商家而言,技術遠沒有資料更具有價值。資料對小程式的業務發展具有指導意義,小程式想在業務層面取得重大突破,離不開完善的資料分析,為使用者提供更多指引。小程式Serverless會不斷完善資料分析,幫助商家更好地服務消費者。

  (3)前後端一體化:對于商家而言,搭建管理背景非常關鍵。商家需要錄入商品、檢視賬單等操作,在Serverless方案裡提供可視化搭建的內建解決方案,通過拖動相應元件實作管理背景的需求。小程式Serverless後面會不斷強化前背景一體化,幫助商家更好地管理背景。

  (4)場景化解決方案:在實作通用的能力之外,小程式Serverless會針對一些特殊的業務場景,提供前後端一體化整套方案,滿足商家的個性化需求。

  支付寶小程式雲服務會越來越成為主流的開發模式,“隻要有創意、有想法,未來哪怕不具備豐富開發能力的人,也一樣可以通過雲服務,高效開發出一款不錯的小程式”。

  未來,阿裡系的幾大超級App,包括淘寶、釘釘、高德、餓了麼等,底層能力都将打通,形成無縫對接。這意味着,阿裡系的多元化能力,可以随意組合了。

  比如,支付寶小程式不僅可以擁有支付寶的芝麻信用能力,還可以擁有菜鳥的物流能力、餓了麼的配送能力、高德的LBS能力等。這些能力都以API接口的形式彙聚到一個API市場裡,開發者在開發應用的時候,可以友善地擷取,進行按需組裝。

  想象這樣一個場景:你想吃火鍋,在高德搜尋附近的海底撈,通過高德地圖導航過去,同時高德會自動彈出海底撈支付寶小程式,你可以先點餐、領優惠券;吃完飯想去商場逛逛,進入商場的支付寶小程式,小程式裡面有停車服務、商家的優惠券等。

  阿裡真的很懂B端。

  雖然阿裡系小程式還處于萌芽早期,落地案例并不多,不過随着各大超級App底層能力的互通,勢必會實作更多場景的打通和串聯。

  商家更關注的流量問題,目前,支付寶、手淘、高德、釘釘、餓了麼和微網誌,這5個App的月活總數已經超過20億。各大超級App間的互相導流,将原本各自為戰的流量彙聚在一起,形成超級流量紅利。這就意味着,通過入駐支付寶小程式,電商、金融、生活服務等各行業開發者和商家将無需反複“造輪子”,即可快速對接整個阿裡數字經濟體生态,直接複用阿裡巴巴二十年積累的營運能力。

  換句話說,支付寶小程式雲服務已經幫你到這了,剩下的就看誰有本事了。