#用 Parse 作后台服务乃下下策
不知你是否已经听说,Facebook将关闭Parse,就是不久前才被Facebook收购的“后端即服务”(BaaS)。不少开发者多少有些失落,甚至有被Facebook欺骗的感觉。我在twitter上发表过的一张截图几乎可以说明这一切(该图是Parse关闭前别人从其主页截取的):
:/ pic.twitter.com/ctoxrvTLYx — Jameson Quave (@jquave) January 29, 2016
都不用我加粗,他们自己也强调:成千上万的开发者信任我们。从这种官方表述中你也不难理解为什么开发者们感到被深深地欺骗了。有这样的前车之鉴,我们怎敢继续使用诸如 React Native, React JS, HHVM, Relay 等由Facebook推出的技术,明知某一天这项技术可能突然就被 Facebook 宣告死亡?
诚然,这些都是开源项目,一旦倒掉了还可以由社区接管。但对开源项目而言,除了需要维护者,官方的支持也有着重大的意义。Facebook 此举证明了我们无法信任他们,但发生这种事件,那些曾使用 Facebook 或其他第三方社交媒体API的人其实大不必如此惊讶。关于这一点我待会儿再详述。我们先换个话题谈谈另一只“房间里的大象” —— Twitter,以及更重要的 Twiiter Fabric, 目前Fabric 不仅集成了Crashlytics,Felix Krause也为其添砖加瓦,完成了一系列令人惊叹的工作。
要了解 Twitter 当初是如何对待它的开发者社区,我们先从一个叫 Meerkat 的app谈起。我保证待会儿会回过头来继续讨论 Parse 和 Facebook ,不过这两个事件其实如出一辙,所以大家多多包涵吧!
##Meerkat 小背景:我住在德克萨斯州奥斯汀,每年的 SXSW 大会上我都能有幸提前接触到一些初创公司,这些小公司往往会在未来一年发展壮大。Twitter, Foursquare, GameSalad, 甚至 the 4-Hour Work Week 都是在 SXSW 大会上推出的,这些都是非常成功的例子。但其实每年都有大批天真的创始人现身奥斯汀展示他们的产品,并希冀在大会上获得人们的青睐。而在2015年,Meerkat 成为当之无愧的SXSW赢家。
Meerkat 本质上是一个在线视频直播的P2P平台,供人们用iPhone直接向好友进行视频直播,这款应用曾在SXSW大会风靡一时。去年的SXSW大会上在奥斯汀随处可见印有Meerkat logo的T恤。几乎人人都在用它直播音乐、SXSW 会议、他们的午餐以及任何能用来直播的事情。而后这一切戛然而止,原因也非常明确:
这场直播盛宴达到高潮之时,Twitter下达封锁令,仅两个小时后 Meerkat 惨遭 Twitter 封杀接口。
如果你熟悉 iOS App Store 产品上架审核等流程的话,就会明白这意味着什么:即便 Meerkat 的开发者们能重写整个app,使其不再依赖 Twitter 的API,他们也不可能让更新的产品在两个小时内通过app store 的审核……实际上这可能需要三个礼拜左右的时间。
这场直播盛宴达到高潮之时,Twitter下达封锁令,仅两个小时后 Meerkat 惨遭 Twitter 封杀接口。
我个人并未感到非常惊讶,但有不少人质疑Twitter的这一举动……难道他们违反了API协议中的条款?或者做了什么非法的事情?
然而并没有……
真相只有一个!Twitter之所以决定将这款有史以来基于 Twitter 最成功的app扼杀在摇篮里,是因为其产品线上有Meerkat的竞争对手 —— Pipeline,我拒绝给出该产品的链接!
这里有关于 Twitter 向开发者社区请求信任的一条新闻。呵呵……
##Parse
看,我说过我们还会回来的!
如此看来 Twitter 和 Facebook 本质上只是社交媒体这一硬币的两面而已,对我来说不论信任谁后果都是一样的。每当我好奇一家科技公司未来的发展方向时总是重复那句口头禅——"向钱看"。通常从这一原则出发便可得知大公司应走哪步棋,尤其是上市公司(TWTR 和 FB 都已上市)。美国的上市公司需要向股东提交季度财报,有时不惜对他们的用户或合作伙伴(甚至是两者)造成损失。看到Parse如此激进的价格策略,我真心为其感到担忧。因为在我看来,99%(甚至更多)以上的app永远达不到付费级别,即便达到了也仅需支付极少费用。就开发工具,尤其是后端即服务而言,Facebook的动机究竟是什么?我想答案显而易见——他们想要你的数据,结果发现并没有什么卵用。因此他们认为没有必要继续在Parse身上耗费时间了。既然无法通过为成千上万的开发者提供免费的后台服务而盈利,不如直接割掉这一赘肉。用Facebook自己的话来说:
我们很荣幸帮助大家构建了那么多优秀的 App,但是我们需要把资源专注到别的方向。
翻译一下:
"从你们身上赚不到多少钱"。
Facebook几乎全部利润都来自广告,这一点Twitter,以及市值超过苹果目前全球第一的公司——Google都是如此。实际上,当前重要的几家平台供应商中只有苹果不是以广告作为主要的盈利来源。
##向钱看 今天早些时候我发了条推文:
People asking me how to replace Parse in their code: If you don’t build & host your own server code, your backend is always in danger. — Jameson Quave (@jquave) February 2, 2016
(译:人们问我如何更换代码中的Parse:(我的回答是)如果你不自己构建和部署后端代码的话,你的后台永远是不安全的。)
说真的,你不能盲目地将自己的后台交给这些社交媒体公司。你得遵循*“向钱看”*的原则分析一下这些公司的动机。如果他们无法通过为你提供贴心的服务而盈利的话,这种“贴心服务”是坚持不了多长时间的。假如你是一家初创公司的创始人或CEO,这套分析法同样适用于你自己的事业。不论跟谁合作,你都得确保对方的经济动机与你保持一致,否则必然会产生分歧。这里的“对方”包括你的员工、合伙人、友商,以及供应商等。
早期利用Facebook的API很容易获取到用户的联系人列表,这直接导致了大量Facebook游戏垃圾邮件的产生,以及Farmville的崛起。Facebook感到很不爽,于是封杀了这一特权。一众app纷纷躺枪,Zynga股票也惨遭重挫。这可不是玩笑,看看Facebook此举对Zynga股票的杀伤力吧:
如果你的商业模式依赖于某个app的话,那么后端就是必须由你亲自掌握的一笔至关重要的商业财富。像Salesforce之类的云计算公司发展了十几年才成长为大型企业,直到今天它们中的大部分公司还在使用线上托管型软件。究其原因,对于一家运行良好的企业来说,关键任务是由自己执掌一切。尽管这会增加维护成本以及最初部署时的开销,但如果没有这种掌控力,你的事业将始终依赖一帮任性而靠不住的人,那些费尽心机挖掘你的数据来投放广告的人。你想让他们来控制你的后台吗?你有多信任Facebook,Twitter和Google?
如何为你的app提供一个由你掌控的稳定后台?唯一的办法就是自己动手搭建。这听起来不容易,事实上利用 Ruby on Rails 或者 NodeJS 创建一个简单的API来支持移动应用并没你想象的那么难。坦白讲,用express框架写NodeJS app,利用一些node module实现简单的API传送,并用MongoDB备份所有数据,这与javascript事件驱动的Parse后端并无多大区别。要是仍觉得困难,花几个小时阅读一下网上的教程,你就会发现自己实现这一切其实so easy。此外,你还可以咨询我们,我们是专业的!(无耻地打个广告……)
如果你非要雇佣供应商来搭建你的后台,请确保你能拿到源码以及服务器加载所需的工具。对一款app来说,用Docker集成一切环境需求是个不错的选择,还有像Heroku之类的服务也大大简化了Rails app的开发。
小花絮:这篇帖子写到大约95%的时候,我在文中嵌入的Twitter格式都莫名其妙乱掉了,最后我只得重新排版。^_^