摘要: 什么是BaaS? BaaS(Backend as a Service)是一种新型的云服务,旨在为移动和Web应用提供后端云服务,包括云端数据/文件存储、帐户管理、消息推送、社交媒体整合等。BaaS是垂直领域的云服务,随着移动互联网的持续火热,BaaS也受到愈来愈多的开发者的亲睐。它做为应用前端
BaaS(Backend as a Service)是一种新型的云服务,旨在为移动和Web应用提供后端云服务,包括云端数据/文件存储、帐户管理、消息推送、社交媒体整合等。BaaS是垂直领域的云服务,随着移动互联网的持续火热,BaaS也受到愈来愈多的开发者的亲睐。它做为应用开发的新模型,能够下降开发者成本,让开发者只需专一于具体的开发工做。web
能够说BaaS是诞生于移动互联网,为了加速移动应用开发和下降成本而造成的开发架构。BaaS能够带来后端能力的服务化,服务化也为后端能力优化管理带来了可能,这些能力经过服务开发者而诞生,重复的建设和规划会在初期就获得避免。 开发者经过使用这些服务,实现本身的业务功能的同时,也会对服务的能力进一步提出要求,促进后端服务的发展。数据库
咱们很熟悉IaaS, PaaS和SaaS,这些也是云计算发展的经历阶段,后端
IaaS, Infrastructure as a Service: 基础设施的服务化,诞生里AWS,阿里云等 PaaS, Platform as a Service: 开发平台的服务化,诞生了Google APP Engine,阿里云,百度开放平台,腾讯开发平台,sina开发平台等。 SaaS,Software as a Service, 软件的服务化,如微软的Office 365. BaaS, Backend as a Service ,后端的服务化。
BaaS是在PaaS和SaaS之间,为了知足移动互联网快速发展的须要,将后端的能力以服务形式提供,是在PaaS平台开发能力的基础上,用SaaS的思路,将后端能力服务化,让开发者在此基础上开发本身的Software解决方案。安全
BaaS也是移动中间件的替代品(或者说备选方案),它使用统一的API和SDK来链接移动应用到后端云存储,传统的移动中间件经过本地的物理服务把后端服务集成到应用中。而BaaS经过云来集成后端服务。中间件和BaaS的最大不一样是它们是否包含或者提供云的服务,BaaS能够说是PaaS平台在移动垂直领域的延伸,更能够说是移动中间件和云的融合。服务器
BaaS简化了应用开发流程,而PaaS简化了应用部署流程。PaaS是一个执行代码以及管理应用运行环境的开发平台,用户经过SVN或者Git之类的代码版本管理工具与平台交互,对于开发者来讲,PaaS就像是一个容器,输入是代码和配置文件,输出是一个可访问应用的URL。而BaaS平台进一步将用户需求进行了抽象,好比用户管理,开发者但愿建立用户数据库表(模型)后,客户端就能够经过Restful接口直接操做对应的模型,全部的操做均可以被抽象为CRUD。以前,开发者须要建立表、写接口、写校验,而在BaaS平台中,开发者只须要定义模型,平台就会自动生成对应的接口,这可让开发者更加专一具体的客户端代码。架构
从web时代兴起以来(web 1.0, web 2.0),咱们就进入J2EE时代一直到如今,个人的开发架构基本在J2EE各类规范的覆盖下, J2EE经过定义一整套服务(Services)、应用程序接口(APIs)和协议,对开发基于Web的多层应用提供了技术栈支持:
1. JDBC(Java Database Connectivity),JDBC API为访问不一样数据库提供了统一的路径
2. JNDI(Java Name and Directory Interface),远程方法请求,RMI协议调用远程对象上的方法.它使用了序列化的方式在客户端和服务器之间传递数据
3. Java Servlet, web服务器的功能扩展
4. JMS, 面向对象消息的中间件相互通讯的应用程序接口
5. ...app
咱们的服务器端开发由此也进入中间件时代,利用这些中间件提供的功能,规范来知足商业需求。J2EE,中间件的发展也最后造成了云架构时代的PaaS基础,这些中间件,服务器等造成一个开发平台,利用各类规范和协议来提供开发者全面的能力,
这也是咱们目前最熟悉和习觉得常的开发架构。咱们会一度认为,功能太强大丰富了,已经发展到足够好了,剩下的是须要开发者努力去掌握各类技术细节就好。 当咱们有这种想法的时候,其实也表明这种架构发展到了瓶颈期。运维
这种开发架构在咱们队开发效率和成本的追求下,更逐渐暴露出教多的缺点,他对开发人员的技术素质要求较高,同时对开发效率的提高设置了必定的壁垒。当咱们想进一步追究开发效率和减低开发成本时,咱们就须要对这种开发架构作进一步的发展升级,同时随着云计算时代的到来,也为开发技术架构的升级提供了基础。
让咱们想一想咱们开发一个典型web业务系统须要作的事情。
这种开发通常分为后端开发和前端开发, 其中后端须要负责数据存储,检索,集成,业务逻辑,认证受权等一些列功能,想象中能够很简单:
其实这更接近真相:
然而这些还不是所有:
作一个互联网的高可靠高并发高性能的web系统,开发的能力可能须要长时间的积累和付出巨大的资源成本。
当开发了愈来愈多的相似系统后,咱们就会感受到,除了具体业务逻辑外,咱们在作不少重复相似的工做。若是有个界面给咱们,让咱们选择输入咱们想要的功能就能一键输出最后的API,世界将会美好不少。
而云计算的发展也让咱们对这种设想变得原来越可能,
咱们在阿里云这样的IaaS上,输入咱们须要的服务器数目和配置,点击后,咱们就把服务器部署解决了。
当咱们在阿里云的PaaS上选择RDS,OSS,消息这种中间件服务时,咱们须要的存储,消息等能力也能够说一键解决了。
那么更进一步指望, 咱们不少的共用服务,好比认证和受权,消息推送,数据建模,地图,语音等是否也可以一键解决就行了,阿里云提供的功能还不能到这一阶段。
而提供这些服务的方式就是BaaS,后端即服务。将后端的能力打包以服务的方式向外提供。
将后端能力造成平台,构建新的开发架构:
这就是BaaS架构的公式:
BaaS = IaaS + PaaS + APIs + SDKs
利用IaaS , PaaS ,API以及SDK基础, 把后端能力以服务的形式提供出来。
对于开发者来讲,只须要利用API或者SDK,就能够完成对应的功能,从而能够只专一于自己业务逻辑的开发。 在这种开发架构下, 业务系统的开发将大大提速,没有后端复杂的开发,维护,只须要利用之后的服务完成业务逻辑的开发。 对开发人员的技术要求也极大下降。
BaaS在2012年以来在业界发展迅速,
2013年4月,Facebook收购Parse;2014年6月,苹果在一年一度的WWDC上发布了CloudKit;等到了2014年10月份,Google也出手收购了Firebase。
Parse,Firebase等是BaaS创业公司里的佼佼者,三大互联网公司最近2年在BaaS里的动做也反应了他们对BaaS的重视。
Facebook指望结束应用之间的信息孤岛状态,让不一样应用之间的内容可以互通和无缝跳转,因而就发布了一个名为AppLinks“协议”,但这个协议背后则须要Parse这样的后端服务提供数据存储、计算能力、Push通知等一系列技术支撑。
苹果来讲,CloudKit能够提供完善且有弹性的后端解决方案,帮助开发者减轻编写服务器代码和维护服务器的需求。很明显,苹果此举也是为了下降开发iOS应用的成本,维护iOS生态圈的繁荣。
Firebase创始人James Tamplin在博客上说的那样,Firebase和Google Cloud Platform能够很好的互补。并且在苹果为iOS开发者提供了CloudKit以后,Google或许也想能有相似服务来为Android生态圈的开发者们提供便利。
在下篇《BaaS后端即服务 - 分析篇》中,咱们会对这些主流BaaS平台的功能和架构作详细对比分析,研究其发展趋势。
BaaS能够很好的解决技术和业务之间的沟壑,经过BaaS,业务开发团队就像是外界的创业公司,他们的核心竞争力是对业务的理解和实现,让他们以用低成本的方式快速作出能知足自身需求的应用,而后把主要的资源都投入到扩展核心竞争力上面。
BaaS平台自己能够以产品的方式构建,将PaaS的能力升华成对开发者更加简单易用的BaaS服务。 平台独立运维,部署,提供高并发高性能高可靠的服务能力。
BaaS平台能够做为云产品为中小型开发者、创业团队、企业和机构,提供各类BaaS的相关产品和服务。
简单地说,Baas 是业务开发的后端业务逻辑解决方案的提供者。为我的开发者和创业团队提供免费的公有云服务,为企业提供私有云定制服务。BaaS的主旨是为开发者免去后端开发和部署的烦恼,让开发者无需购买服务器(IaaS),无需部署后端环境(PaaS),无需编写后端代码(BaaS),轻松修改业务逻辑(SDK和API),快速实现创意(Happy)。
同时,这些无需的背后意味着各类成本的下降,你不用去操心运维了,不用去学习各类中间件了,不用去担忧高并发稳定性了,等等.... 全部的这些都变成了简单的服务。