BaaS后端即服務 - 分析篇

在本文中我們將主要研究目前主要的BaaS平臺的功能,以及Google,Facebook,Apple等互聯網巨頭在BaaS領域的動作。同時我們也會關注國內一些主流BaaS平臺的發展以及國內互聯網巨頭如百度,華為等在BaaS領域的投入發展。

1. 國外主流的BaaS平臺

在BaaS領域,有幾件事情值得關注:

2013年4月,Facebook收購Parse;
2013年12月,Paypal收購stackmob;
2014年6月,蘋果在一年一度的WWDC上發布了CloudKit;
2014年10月,Google收購Firebase。

Parse, Firebase是BaaS領域里先驅和領頭羊之一。初次之外,Kinvey,StackMob,Apigee,Appcelerator等也非常值得關注。我們將對這些主流BaaS平臺的功能,架構特點進行分析,從而可以為我們設計自己的BaaS提供經驗。

我們對每個平臺的分析按以下方式組織, 介紹->架構->界面->功能->總結。然后我們在匯總一個表格對各平臺進行對比分析。

1.1 Kinvey###

第一個介紹Kinvey,不止因為他們對BaaS的實現很完整,更重要的是他們網站對BaaS架構的思考總結,也為BaaS的推廣做了很多工作。Kenvey網站上提供了兩張開發生態的圖,對當前云架構體系和技術有很好的對比總結。

The Enterprise Mobile Ecosystem Map:

baas_subway_map

Backend as a Service(BaaS) Ecosystem Map:

baas_eco

如果想系統了解BaaS的思想,架構,Kinvey的網站是很好的地點。

簡介:

Kinvey成立于2010年,位于馬薩諸塞州的劍橋市。Kinvey強調加速移動應用開發與銷售的“即取即用”理念。Kinvey的中間層與數據層均托管在多個云服務提供商處,包括 Rackspace、Amazon與Microsoft。

架構:

baas_24

界面:

baas_12

功能:
baas_13

總結:
Kinvey(www.kinvey.com)自稱是一個完整的移動和Web應用程序平臺。它提供廣泛的客戶端支持,與主要的企業數據庫整合,還提供后端數據存儲區、文件存儲區、推送通知、移動分析、iBeacon支持以及在后端運行自定義代碼的功能。

  1. 客戶端支持:

    它為iOS和安卓提供了原生工具包支持。此外,它還支持Angular、Backbone、Node.js、Apache Cordova/PhoneGap和Appcelerator Titanium,它還提供了一套REST API。Kinvey通過代碼庫和API調用與應用程序整合起來,期望你在本地編輯應用程序。

  2. 云代碼支持:

    Kinvey云代碼用JavaScript編寫,不過不是Node.js,實現在線編輯。除了使用標準的JavaScript和外部服務外,它還可以使用Kinvey API實現眾多功能,比如日志、訪問組合、發送推送通知、發送電子郵件、驗證請求、日志和時間功能、異步處理、顯示Mustache模板以及獲取后端上下文。云代碼可以在駐留在處理鉤子的函數和自定義端點中。云代碼在Kinvey中實現內部版本控制。

  3. 數據存儲

    Kinvey組合使用MongoDB,MongoDB提供了供應用程序使用的無模式、非SQL數據庫。該屏幕讓你可以創建和設計組合(只需要創建步驟),并選擇是啟用還是繞過你的數據庫業務邏輯。

  4. 部署安全

    Kinvey支持部署在幾乎任何云上,當然包括私有云

  5. 離線支持
    Kinvey提供了自動化控制機制,實現離線數據同步,要是應用程序處于離線狀態,就自動從緩存獲取數據。要是應用程序處于在線狀態,就從網絡獲取數據,并將數據存儲在緩存中。使用自動化控制,只要設備再次處于在線狀態,你的Kinvey應用程序就會試圖同步任何本地存儲的數據,但如果服務器數據也出現了變化,就會發生沖突。你可以將設置沖突解決策略設置成clientAlwaysWins、serverAlwaysWins或自定義沖突解決功能。

1.2 Facebook + Parse###

簡介:
Parse(www.parse.com)一度是MBaaS領域的典范,2014年被Facebook收購,其說明文檔完備,提供了良好的原生客戶端支持和基于Backbone的JavaScript客戶端SDK。Parse還可以在后端運行JavaScript代碼,這為開發人員提供了全是JavaScript應用程序堆棧這一選項。被Facebook整合后,現在它大大加強了與這個社交巨頭的整合。Parse的SDK現在提供了專門用來簡化訪問某些部分的Facebook數據的七個實用工具。

界面:

baas_14
baas_16
baas_17

功能:

baas_15

總結:

Parse,側重于提供一個通用的后臺服務,包含了 schema free 的數據存儲和云代碼(CloudCode)。其數據存儲服務涵蓋了結構化的對象存儲和非結構化的文件存儲(也包括 CDN),并且,Parse 提供了完善的賬戶系統和數據訪問控制,而且提供了強大的數據關聯(一對一、一對多、多對多等)和查詢能力。

除此之外,由于定位于通用的后臺服務,所以在標準化 API 之外,Parse 也提供了方法讓開發者可以定制自己的商業邏輯。他們的做法是建立一個 node.js 容器,讓開發者使用 javascript 這種廣為人知的前端語言來完成數據整合、計算,再將結果返回給客戶端。這就是云代碼。

  1. 客戶端支持:

提供了良好的原生客戶端支持和基于Backbone的JavaScript客戶端SDK。支持原生移動應用程序、JavaScript應用程序和桌面應用程序。在移動端,它為iOS、安卓和Windows Phone 8提供了原生支持。在桌面端,它支持OS X和Windows 8(.Net),另外還支持Unity游戲。

  1. 云代碼支持:

可以在云端運行JavaScript代碼,使用與客戶端一樣的Parse JavaScript SDK。Parse提供了一款命令行工具,可用于管理Parse云中的代碼,還讓你可以使用電腦上經常使用的JavaScript編輯器,命令行工具集多種角色于一體:應用程序框架生成器、應用程序部署工具、日志打印器、應用程序回滾工具以及自動更新器。

  1. 數據存儲

Parse云數據瀏覽器讓你可以導入批量數量,添加類、列和欄,以及查看過濾后的數據。

1.3 Google + firebase###

簡介:
2014年10月22日,谷歌收購了軟件工具提供商Firebase,后者的產品可以方便工程師在移動應用和網站之間存儲和同步數據。這家總部位于舊金山的創業公司,為蘋果iPhone和搭載谷歌Android系統的智能手機提供服務,它還可以簡化離線應用的開發流程。 谷歌將提升云計算技術的投資,讓軟件開發者通過互聯網 獲取計算資源?!巴ㄟ^將Firebase與谷歌云計算平臺融合,我們便可為移動應用開發者制作出最好的端對端平臺。”

界面:

baas_18

功能:

baas_19

總結:
Firebase最主要的功能是提供了實時后端數據庫BaaS功能, 和絕大多數云服務一樣,不需要額外的服務器硬件設備,并且是可以隨時擴展的,對數據存儲容量沒有限制,Firebase最高能處理百萬級的并發和TB級的數據傳輸,數據發生更改,同步敏感顆粒度基本達到10毫秒級別。Firebase用法也足夠簡單,頁面完全是標準HTML代碼,數據讀取和展現使用JSON API就可以完成,

Firebase其重點在于解決不同設備/平臺間的數據同步,采用的機制類似于 zookeeper 的監聽-通知方式。其優點是 API 簡潔易用,非常適合用來構建動態的、數據驅動的網站(或應用)。

1.4 Apple+ CloudKit###

2014年6月,WWDC 蘋果發布 CloudKit。CloudKit 提供了基本的數據存儲和用戶賬號管理功能,代表蘋果也正式進入BaaS領域。CloudKit讓每款應用都獲得一個存放數據庫和記錄的容器,而這些記錄可以被查詢,同時應用也可以通過訂閱來改變這些數據。CloudKit還同時支持應用的共享及公共數據庫,方便開發者完成數據存儲工作。

界面:

cloudkit_dashboard_options_2x

功能:

CKContainer —— 每個應用有一個 Container,應用之間的數據是隔離的,如果愿意數據可以跨應用共享。
CKDatabase —— 每一個 Container 都會包含兩個 Database:公開的和私有的。公開的 Database 存放應用內共享的數據,需要開發者自己的 Apple ID 才能修改;私有的 Database 則存放單個用戶相關的數據,需要終端用戶自己的 Apple ID 才能訪問。
CKRecord —— 代表 Database 里面一條結構化記錄,是鍵值對的封裝,所以可以存儲任何數據。與 Parse 等提供的子類化數據模型不一樣,CloudKit 中所有存儲的數據只能是 CKRecord 類型,開發者需要使用一個名叫 Record Type 的字符串來區分不同類型的數據。
CKRecordZone —— CloudKit 還引入了 RecordZone 的概念,來給不同的數據進行分區,與 Mongodb 中的 collection 比較相似。
CKReference —— 類似于數據庫中的「外鍵」概念,主要用來進行數據關聯。CKRecord 中某一個屬性的值,可以是另一個 CKRecord(譬如 Instagram 中的每張圖片,都有一個作者字段),這時候屬性值就可以是 CKReference 類型。按照 CloudKit API 的說明文檔,這種引用的關聯是可以做到反向查詢和級聯刪除的,不過筆者好奇的是,對于一對多的關聯模型,級聯刪除該怎么才能做到呢?
CKAsset —— 用來處理文件這種非結構化數據的存儲,按照 API 的說明文檔,可以高效支持上傳和下載,看來蘋果應該也是提供 CDN 支持的,但是國內用戶應該就享受不到了。
CKQuery —— 主要用來獲取數據,通過組合 Record Type、NSPredicate 和 NSSortDescriptor 來查詢數據,不過從 API 說明文檔看不出它能否支持 Parse 的級聯獲取。
CKSubscription —— 與 CKQuery 只是每次去拉 Server 端的數據不同,CKSubscription 提供了一種 Server 端主動 Push 的機制,通過組合 Record Type、NSPredicate 和 APNs Push,可以讓 Client 端主動去監聽 Server 端的數據變化,從而實時得到通知。

總結:
CloudKit的發布表明蘋果開始重新重視云服務API和云端數據存儲。但是Apple目前對該服務的策略是鎖定在蘋果的生態系統之內。

1.5 Apigee+ Usergrid###

簡介:

usergrid是Ed Anuff(http://www.anuff.com) 2011年10月創立的,2012年1月被apigee收購,2012年10月,韓國電信hitel公司開發分支,2013年10月向apache提交的開源baas(backend as a service)。韓國電信,三星等有使用該baas。實現了用戶,數據,文件,安全,設備,社交,統計,電郵,自定義API等功能。

Apigee是個API管理方面的領頭羊,在收購BaaS平臺usergrid后,將其作為其主要功能之一API BaaS的實現。

功能:

baas_39

Apigee除了在Usergrid基礎上構建了BaaS平臺外,還對API的管理,測試,整合做了很多的工作。

1.5 其他值得關注的BaaS平臺###

其他值得關注的BaaS平臺,還有Appcan,Sencha,anypresence等。

2. 國內主流的BaaS平臺

國內最近幾年BaaS的發展也很迅速,可以說目前國內的創業環境和這些BaaS服務的發展相輔相成。
除了大型互聯網公司外,很多的技術創業公司集中在BaaS領域,提供綜合或者部分的BaaS能力。目前國內在BaaS中除了互聯網巨頭外,領頭的公司有Leancloud,Bmob等,而互聯網巨頭中,百度和華為在BaaS中有清晰的路線,在此領域做重點發力。百度依托百度開放平臺,百度開發云基礎上,開發Fontia繁星平臺,發力BaaS領域。 華為目前在開發powerapp.io,面向App開發者打造 BaaS/PaaS 公有云平臺,提供 App從設計、開發、測試、部署、運維的全生命周期服務,目前以出于內側階段。

2.1 Leancloud

簡介:
LeanCloud是AVOS中國團隊在2013年9月發布的應用開發一站式后端服務,為開發者提供數據存儲 、實時消息、消息推送以及統計分析等服務。

界面:

baas_22

功能:

baas_23

數據:

BaaS:不再理會「應用服務器」、「數據服務器」,不再擔心流量和壓力
Schema-Free:只需要滿足「JSONObject」這一基本格式
離線數據分析:使用 SQL 語句分析應用數據
文件存儲采用國內全網加速 CDN,支持圖片、音頻、視頻等多種類型文件
全平臺 SDK 支持:iOS、Android、Windows Phone、Unity 3D、Cocos2D-x 以及 JavaScript

云引擎:

把你的代碼部署在 LeanCloud 云端來執行,靈活應對各種需求
支持定時任務,beforeSave 等 Hook 調用
支持在線編輯,本地部署,方便調試
提供成熟的 命令行工具,高效的部署、發布、回滾云引擎

總結:
可以說Leancloud是國內BaaS領域的領頭羊,功能比較完整強大。

2.2 Bmob

簡介:

功能:
數據服務: 支持豐富的數據類型,靈活方便的增刪改查,可視化的數據操作,安全的角色和ACL管理,多表關聯處理,數據的批量處理,本地數據緩存,讓開發者們可以不需要關注服務器后端的事情,只需要使用我們的Android/iOS/Cocos2d-x/Unity 等SDK就可以實現多平臺的同步開發;

文件服務:文件服務允許上傳任何的文件類型,支持分片斷點續傳,此外,針對移動端對圖片業務的需求,還提供了生成高壓縮比的縮略圖服務。

(3)推送服務:提供了Android和iOS兩個版本的推送服務,采用Websocket保持長連接,穩定性更好,目前,64GB的單機能夠支撐600萬的用戶長連接;

(4)擴展服務: 提供APP官網、計劃任務、地理位置、云端代碼等擴展服務,確保您的個性化業務邏輯能夠在云端更好的運轉。

總結:

2.3 華為powerapp.io

簡介:
2015年3月,華為在北京召開發布會,推出面向APP開發者BaaS后端服務平臺PowerApp(http://www.powerapp.io/powerapp/),目前已接受內測,完整版服務將逐步上線。

baas_37

功能:
PowerApp所提供的功能可以按照 App 的開發流程劃涵蓋6個板塊:數據分析、基于云的開發環境、能力模塊、測試模塊、運營支撐以及推廣模塊。。

一、數據倉庫:包含數據統計報告和行業報告兩部分,來幫助開發者確立App 市場方向;

二、基于云的開發環境:也是這次 PowerApp重點發布的“支撐者開發中心”板塊,PowerApp 選擇了云計算企業青云和為云計算解決安全問題的安全寶為合作方,并以菜單化的形式提供給開發者以供自由選擇組合;

三、能力模塊:PowerApp 將這部分分為互聯網開放能力和有價能力,前者包含社交分享、地圖、天氣等功能接口,后者則為條形碼、音樂識別、航班數據、打車信息等 API 的提供;

四、測試模塊:在 PowerApp 看來,在小型創業團隊中,往往匱乏有力的后期測試人員,而 PowerApp 在這個模塊中,有華為電信級的測試標準、流程和服務;另外,華為還選擇了美國的技術公司 Soasta 為合作伙伴來提供App開發后期的測試服務;

五、運營支撐:在這部分,PowerApp 主要提供名為 Seed 的數據統計系統、名為 Push 的消息推送系統(生成99.99%的到達率)和名為 Up 的統一帳號系統,來方便開發者管理自己的多個 App;

六、推廣模塊:除了華為開發者聯盟和出貨量達5200萬臺的自有終端外,PowerApp 還計劃開通一個 App 的加“V”綠色認證,給那些號店最少、占內存最小、和用戶手機系統最貼近的應用加綠 V 認證符號,來和應用推廣市場更好結合

總結:
可以看到華為在BaaS領域有清晰的目標和宏大的發展計劃,目標是提供PaaS到BaaS的完整開發體系,并以大平臺的方式在構建開發者生態,后續需要更多關注華為的發展。

2.4 百度繁星(Frontia)平臺

簡介:
Frontia是百度開放云為開發者提供的基于MBaaS(后端即服務:Backend as a Service)的服務。Frontia集成了開發者開發一款APP所需的核心服務,包括數據存儲、推送、第三方用戶體系等,使開發者可以通過簡單的SDK集成,便捷的接口調用,即可使用實現原本復雜的后端服務,使后端代碼量急劇減少。

baas_38

界面:

baas_40

功能

簡單的應用數據存儲 
無需再進行數據庫配置等復雜操作,只需調用接口,即可把應用數據輕松存儲到云端,安全便捷。

免費大空間的用戶數據存儲 
讓開發者的終端用戶也免費擁有超大存儲空間,幫助提升開發者應用的體驗。

支持富媒體的消息推送 
以透傳的方式將開發者自定義的內容發送到開發者的用戶客戶端,支持圖片、視頻、音頻、網址等富媒體推送。讓你可以用戶豐富的形式刺激開發者的用戶活躍度。

輕松的用戶獲取 
支持百度、QQ、新浪微博等多個第三方平臺登錄,使開發者省掉接入多個平臺的成本,簡單調用即可輕松獲取多個平臺用戶。

自在分享 
支持百度、QQ、新浪微博等多個第三方平臺進行分享,讓開發者的應用能更便捷的傳播。

應用統計,讓你更了解你的應用 
應用的基礎數據信息,終端分析,用戶分析,盡在你掌握。

總結

2013年發布,作為百度開放云的一部分,提供了較為完整的BaaS級別的服務。

綜述

下圖是一個綜合對比圖表,可以更清楚了解主流BaaS的功能和發展狀況。


baas_41

從國外和國內的BaaS發展來看,BaaS是目前云計算發展較為迅速的領域,代表著新一代的云服務?;ヂ摼W巨頭和新興技術創業公司都積極投身于此,我們也將持續關注該領域的發展。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容