鉴于我们在web产品开发过程中采用了前后端分离(也是广泛采用的新技术)的技术,前端开发与后端开发在约定完交互接口之后往往存在一定的开发时间差,也就是说移动端和页面程序已经开发出界面了,但是后端的接口还没提供好,导致调试困难。于是我们很自然的就想到一个点子,为何不制作一个服务专门用来生成供前端调试调用的“假”接口呢?
于是我们很快就选用了MongoDB作为数据库,基于nodejs开发了一个模拟各种数据增删查改的接口,符合RESTful标准,可以通过web页面随时增加你想要模拟的接口,除了没有业务逻辑之外,可以满足移动应用和web前端页面开发的数据模拟和接口访问,解决了前后端开发的时间差问题。
后来我进一步想了一下,为什么我们不能将这个服务增强,使之具有一定的业务扩展能力(比如使用js脚本来插入业务逻辑),并配上我们的基础服务(权限、流程、报表等),这样我们是不是就不用开发纯业务的后端程序了呢?
这个想法令我很兴奋,因为这就是传说中的云计算PaaS落地的一个体现,而且看起来像是一个伟大的产品的小时候,于是我就上网搜索了一下,看看有没有类似产品,结果令人欢欣鼓舞,原来Facebook早在两年前就投资了一家创业公司开始做这个了(名字叫Parse,有兴趣可以搜索一下),谷歌公司也收购了类似产品。国内也已经有人做了,而且据说还不错,比较出名的是LeanCloud,我看了一下已经是比较成熟的解决方案了。
在移动互联网飞速发展的今天,后端服务的开发需求量非常之大(当然很多风投老板至今还认为移动应用的开发工作量只是手机上面的那些界面,这使得他们数次掉进坑里),上面那些厂商就是看准了这个需求,开发了面向后端的PaaS服务,使得一大票创业团队不再为后台服务发愁,找几个app程序员专注于客户端的应用开发就行了。
云计算技术发展到今天,上层的软件即服务(SaaS)和底层的基础设施即服务(IaaS)发展的都特别好。一方面,软件即服务已经渗透到社会各行各业,很多在线服务已经成为了普通人生活中不可或缺的一部分(比如在线地图),另一方面,基础设施即服务也得到了广大开发者的认可,几乎每个上进的开发者都在互联网上租赁(或免费)有自己的虚拟服务器或存储服务。唯独处在中间层的平台即服务(PaaS)发展的不尽如人意,无论是国内的SAE(新浪)还是国外的谷歌的GAE(现在改名叫GoogleCloudPlatform了),用户都没有达到较大的规模。因为现有PaaS仍没有很好的提升后端开发的工作量,即使存在那么多的中间件,仍然需要大量的后端开发工作要做。这时候,上帝说:要有光,于是就诞生了BaaS。
BaaS(后端即服务)是指专为移动应用开发者提供整合云后端的服务。开发者无需过多研究服务器端程序,而只需调用云计算平台提供的API,使用相应SDK,就能迅速完成数据存储、账户管理、消息推送、社交网络整合等功能。
BaaS本质上来说是PaaS的一个细分领域实现,但是基本解决了后端开发问题。鼓吹者甚至扬言用一个云平台来解决所有互联网产品后端服务的需求。
想法有些激进,但是可以回顾操作系统的发展历史来借鉴。很久以前,所有的计算机都没有通用操作系统,那个时候的软件厂商提供给客户的软件是自带操作系统的,完全从硬件底层做起,一直到业务功能开发。直到后来有了通用的操作系统如(windows、linux等),才将这些软件厂商从底层解放出来,控制硬件的事情交给了操作系统,应用软件厂商专注于业务开发。
现在的情形跟当年的操作系统诞生时很像,很多厂商还在自己解决后端服务的开发,但是随着后端技术的越来越成熟,必然出现像当年微软这样的厂商彻底解决后端服务的问题。
所以现在还在编写后端业务代码的企业和技术人员,需要用发展的眼光来看自己的软件架构,业务逻辑逐渐向前端倾斜,底层服务围绕数据为中心,很有可能在未来的某一天后端开发(这里指侠义的业务逻辑开发)将淡出应用软件开发的领域。