从 CloudKit 看 BaaS 服务的趋势

从 6 月份 WWDC 苹果发布 CloudKit 开始,BaaS (Backend as a Service,也叫作 mBaaS,m 表明 mobile ) 的概念一会儿又走入了人们的视野。CloudKit 提供了基本的数据存储和用户账号管理功能,之后要写一个数据交互不是太复杂的应用/游戏,就再也不须要本身来开发后端架构,直接连 CloudKit 就搞定了,这就是 BaaS 的价值。这里之因此说「又」,是由于在 13 年初 Facebook 收购 Parse 的时候,不少人也都被震惊到了,只是当时会有人以为,真的有不少人会使用这种后端服务么?如今好了,连号令江湖的水果公司也加入到了服务商的行列,你们不得不从新审视 BaaS 的价值。数据库

咱们仍是先来看看 CloudKit 能够为咱们作什么吧。从目前公开的资料和 API 来看,CloudKit 有以下几个基本概念:segmentfault

  • 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,江湖上还流传着这样一则轶闻:当年苹果也是 Parse 的竟购方之一,只是 Facebook 为了打造开发者生态圈而志在必得,苹果只能铩羽而归,可是数据平台的价值又一直让苹果念念不忘,最后苹果的工程师和 PM 只能心一横,本身作一个 CloudKit 了。不过与其余 BaaS 平台相比,笔者认为 CloudKit 存在以下不足:后端

  1. 数据模型过于简单。数据之间的关联只能经过 CKReference 创建,这样的话对于多对多的映射模型就比较吃力,不论是读取仍是存储,都会比 Parse 的方案繁琐不少。
  2. 不能自定义业务逻辑,没有相似于 Parse 的云代码功能,不少时候须要在客户端完成所有业务逻辑,这都会给开发带来一些不便,而且也会影响到移动设备的耗电和网络流量。
  3. 访问速度过慢,从我实际的测试来看,在 Wifi 下 API 的延迟都已经很是明显,要是再扩大到国内五花八门的网络环境,特别是弱网环境,数据访问的延迟会变成一个很大的障碍。并且,对于国内用户来说 Apple ID 的利用率也不高。
  4. 不支持跨平台。全部的数据都是存放在 iCloud 里面,须要经过开发者或者最终用户的 Apple ID 才能访问,这样的服务方式让 Android 生态圈和 Web Application 等彻底成为了另外的平行世界,对于第三方应用开发者来讲,或许没有人能把本身的用户群所有押宝到 iOS 上。
  5. 在中国市场面临政策风险。从 WordPress、网盘、AWS 等的前车可鉴来看,全部的数据黑洞都会让监管部门感到无能为力,从而心生恐惧,他们只能使用最简单粗暴的办法来进行处理,那就是让你变的「不存在」。

在苹果的发布会以后,谷歌在今年的 IO 大会上也发布了 Google Driver for Work / Google Fit Platform,加上最先的 Facebook,三大巨头相继推出相似产品,让人们对 BaaS 服务的前景充满期待。CloudKit 存在的问题,可能就是其余第三方 BaaS 服务商们的机遇。在国外 ParseKinvey 都作得不错,StackMob 原本也算是领头羊之列的 player,可是被 Paypal 收购以后就马上被关停,只能让人唏嘘。国内的 BaaS 服务提供商,多只在某一个领域出现,譬如推送领域的个推、统计领域的友盟,可以像 Parse 同样提供完整的平台能力,特别是后台数据存储能力的,目前来看只有 AVOS Cloud 一家。而且 AVOS Cloud 的 API 设计是彻底兼容 Parse 的,对于用惯了 Parse 服务的开发者来说,可能会像碰到了孪生兄弟同样熟悉。网络

在全部人都在强调「移动!移动!」的今天,BaaS 或许能开创出一个新的云计算方向,让咱们拭目以待吧。架构

(0)

相关推荐