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:

Backend as a Service(BaaS) Ecosystem Map:

如果想系统了解BaaS的思想,架构,Kinvey的网站是很好的地点。

简介:

Kinvey成立于2010年,位于马萨诸塞州的剑桥市。Kinvey强调加速移动应用开发与销售的“即取即用”理念。Kinvey的中间层与数据层均托管在多个云服务提供商处,包括 Rackspace、Amazon与Microsoft。

架构:

界面:


功能:

总结:
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数据的七个实用工具。

界面:

功能:

总结:

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与谷歌云计算平台融合,我们便可为移动应用开发者制作出最好的端对端平台。”

界面:

功能:

总结:
Firebase最主要的功能是提供了实时后端数据库BaaS功能, 和绝大多数云服务一样,不需要额外的服务器硬件设备,并且是可以随时扩展的,对数据存储容量没有限制,Firebase最高能处理百万级的并发和TB级的数据传输,数据发生更改,同步敏感颗粒度基本达到10毫秒级别。Firebase用法也足够简单,页面完全是标准HTML代码,数据读取和展现使用JSON API就可以完成,

Firebase其重点在于解决不同设备/平台间的数据同步,采用的机制类似于 zookeeper 的监听-通知方式。其优点是 API 简洁易用,非常适合用来构建动态的、数据驱动的网站(或应用)。

1.4 Apple+ CloudKit

2014年6月,WWDC 苹果发布 CloudKit。CloudKit 提供了基本的数据存储和用户账号管理功能,代表苹果也正式进入BaaS领域。CloudKit让每款应用都获得一个存放数据库和记录的容器,而这些记录可以被查询,同时应用也可以通过订阅来改变这些数据。CloudKit还同时支持应用的共享及公共数据库,方便开发者完成数据存储工作。

界面:

功能:

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的实现。

功能:


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:不再理会「应用服务器」、「数据服务器」,不再担心流量和压力
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/),目前已接受内测,完整版服务将逐步上线。

功能:
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集成,便捷的接口调用,即可使用实现原本复杂的后端服务,使后端代码量急剧减少。

界面:


功能

简单的应用数据存储
无需再进行数据库配置等复杂操作,只需调用接口,即可把应用数据轻松存储到云端,安全便捷。

免费大空间的用户数据存储
让开发者的终端用户也免费拥有超大存储空间,帮助提升开发者应用的体验。

支持富媒体的消息推送
以透传的方式将开发者自定义的内容发送到开发者的用户客户端,支持图片、视频、音频、网址等富媒体推送。让你可以用户丰富的形式刺激开发者的用户活跃度。

轻松的用户获取
支持百度、QQ、新浪微博等多个第三方平台登录,使开发者省掉接入多个平台的成本,简单调用即可轻松获取多个平台用户。

自在分享
支持百度、QQ、新浪微博等多个第三方平台进行分享,让开发者的应用能更便捷的传播。

应用统计,让你更了解你的应用
应用的基础数据信息,终端分析,用户分析,尽在你掌握。

总结

2013年发布,作为百度开放云的一部分,提供了较为完整的BaaS级别的服务。

综述

下图是一个综合对比图表,可以更清楚了解主流BaaS的功能和发展状况。

从国外和国内的BaaS发展来看,BaaS是目前云计算发展较为迅速的领域,代表着新一代的云服务。互联网巨头和新兴技术创业公司都积极投身于此,我们也将持续关注该领域的发展。

时间: 2024-10-03 02:50:26

BaaS后端即服务 - 分析篇的相关文章

BaaS后端即服务 - 概念篇

什么是BaaS? BaaS(Backend as a Service)是一种新型的云服务,旨在为移动和Web应用提供后端云服务,包括云端数据/文件存储.账户管理.消息推送.社交媒体整合等.BaaS是垂直领域的云服务,随着移动互联网的持续火热,BaaS也受到越来越多的开发者的亲睐.它作为应用开发的新模型,可以降低开发者成本,让开发者只需专注于具体的开发工作. 可以说BaaS是诞生于移动互联网,为了加速移动应用开发和降低成本而形成的开发架构.BaaS可以带来后端能力的服务化,服务化也为后端能力优化管

BaaS后端即服务 - 中台篇

前面BaaS的文章铺垫了BaaS的体系,架构,和实践. 在本篇我们将关注如果在阿里的技术体系构建BaaS平台,如果把BaaS作为中台的实现架构之一, 并探讨什么样的中台系统可以满足我们的设计目标. 阿里发展到今天,早已超出了电商的范围, 基本上所有互联网相关的领域,阿里都涉足其中,并积极通过创新引导生活方式的改变.可以说,阿里代表目前中国的互联网也不为过. 通过16年来的发展,目前阿里在各个领域发展的技术储备和能力已经发展成为互联网世界里的"国中之国",自成体系. 中台是以BaaS架构

BaaS后端即服务 - 通往中台架构之路

该文章来自阿里巴巴技术协会(ATA)精选集 BaaS代表第二代云服务,相对于AWS.阿里云等公有云(IaaS,PaaS)是第一代云服务,通过广泛部署云数据中心解决了开发和运维系统不需要管理服务器的问题,BaaS则在第一代公有云数据中心基础之上,对云计算资源进一步封装.简化与优化,提供开发.运维和服务的一站式云服务. 这就是所谓BaaS(后端即服务)模式的兴起,BaaS将公有云数据中心资源根据前端应用场景打包,通过简化的调用接口提供给开发者使用.通过减负,开发者得以集中精力于用户的研究.APP软件

[WCF 4.0新特性] 路由服务[实例篇]

在本篇文章中,我们将通过一个具体的实例来演示如何通过路由服务.在这个例子中,我们会创建连个简单的服务HelloServie和GoodbyeService.假设客户端不能直接调用这两个服务,需要使用到路由服务作为两者之间的中介.整个消息路由的场景如下图所示,中间的GreetingService.svc就是代表路由服务,而两个目标服务则通过HelloServie.svc和GoodbyeService.svc表示.路由服务使用的消息筛选器EndpointAddressMessageFilter,即根据

[WCF 4.0新特性] 路由服务[原理篇]

在一个典型的服务调用场景中,具有两个基本的角色,即服务的消费者和服务的提供者.从消息交换的角度讲前者一般是消息的最初发送者,而后者则是消息的最终接收者.在很多情况下,由于网络环境的局限,消息的最初发送者和最终接收者不能直接进行消息交换,这就需要一个辅助实现消息路由的中介服务,这就是我们接下来要介绍的路由服务. 目录 一.路由服务就是一个WCF服务       路由服务契约的定义       路由服务契约的定义 二.基于消息内容的路由策略       RoutingBehavior服务行为    

MongoDB家族添新!推出了自己的后端即服务Stitch

文章讲的是MongoDB家族添新!推出了自己的后端即服务Stitch,MongoDB是最受欢迎的.开放源码的.面向文档的NoSQL数据库,目前已经推出了自己的后端即服务(BaaS),有望减轻数据开发人员编写样板代码的难度. MongoDB Stitch昨天在MongoDB Inc.的MongoDB世界会议上公布,目的是让程序员专注于应用程序逻辑和UI,而不是操作复杂的后端. 目前来说,Stitch可以作为一种公开测试版,仅针对Amazon Web Services Inc.(AWS)云上的Mon

android4.4系统LoadAverageService服务分析

android4.4系统LoadAverageService服务分析          在前一段时间写的<android系统cpu资源相关查询>感觉还比较实用,上次没有对LoadAverageService做深入一点的分析,今天我们接着来看看.        首先看看大智慧低调的LoadAverageService的源代码小心翼翼的潜伏在android\frameworks\base\packages\SystemUI\src\com\android\systemui下面, 文件很小,也就12

小议学习java的浮躁心态-分析篇

  知识是需要沉淀的:思想也是在不断的学习.磨练中走向成熟的:而技术也是在不断的创造中开拓的. 在<引出篇>中,我简单的举了一个身边的例子,以及夸张的描述了一个浮躁学习的状态.这些只简单的点出了浮躁心态的表象,那么现在让我们来分析一些根源. 在<引出篇>的议论中,有朋友提到"软件业的浮躁"一词,也建议在"分析篇"中从这方面分析一下.有关"软件业"之类的议论,在各大论坛或网站上比比皆是,有抱有积极心态的,有唉声叹气的,有发牢

关键词分析篇:如何让更多长尾出现在后台

        既然做搜索引擎排名,就离不开关键词.对于关键词的挖掘站长朋友都有自己的一套方法,但不论如何,一个网站关键词当然是多多益善了,有了大量的关键词支 撑,才能让网站有更多的流量,特别是很多有针对性的长尾关键词,能够带来的转化率也比较高:对于很多新站.小站来说,难以抗衡那些大站,站长朋友唯一能够 做到的就是利用长尾关键词带来订单.带来转化率.         对于关键词这一快,每天还是对它有观察,主要是分析用户是通过搜索哪些词进来的,哪些关键词是通过自己每天更新文章后带来的关键词,从中可