BaaS后端即服务 - 分析篇

  1. 云栖社区>
  2. 博客>
  3. 正文

BaaS后端即服务 - 分析篇

uyang 2016-03-19 14:04:26 浏览11410
展开阅读全文

在本文中我们将主要研究目前主要的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是目前云计算发展较为迅速的领域,代表着新一代的云服务。互联网巨头和新兴技术创业公司都积极投身于此,我们也将持续关注该领域的发展。

网友评论

登录后评论
0/500
评论
uyang
+ 关注