SaaS(软件即服务:Software as a Service)、IaaS(基础设施即服务:Infrastructure as a Service)和PaaS(平台即服务:Platform as a Service)早已为业界人士所熟悉 ,BaaS生态系统正从一个小众垂直领域迅速成为非常重要的行业环节。BAAS为应用开发提供后台的云服务,在当前的移动互联网+云计算热潮中,尤其为这2类应用提供了大量的技术支持。包括提供存储、托管环境,也包括提供推送等通行后端技术能力。有单独的mBAAS的说法,但大多数人习惯将BAAS等同于为移动互联网应用开发而提供的云服务。BAAS作为应用开发的新模型,进一步实现专业分工,有助于应用的成本下降和市场的进一步繁荣。
从技术上讲,BaaS关键问题是要保持REST Web服务模型接口的优势。这些接口呈现出一个简单的PUT或GET事务处理模式,但并不会一直保持在调用的处理状态中。多数PUT/GET方法显示出了他们自己的服务API,作为RESTful 接口,这些接口使用XML数据结构来接收和响应。XML处理是一件琐碎的事情,然而,在每个目标移动设备中,接受一个简单的数据结构或者提供编程逻辑来重复使用该界面都会有所帮助。
创建一个BaaS服务,拥有正确功能级别的粒度,也同样重要。移动用户通常希望设备能够快速响应一个请求,而且有一些接口时间问题:将具有较长执行时间的复杂功能转移到一个单独的服务上是不合适的。因为RESTful接口预计是无状态的,因此在把复杂功能转化为一系列可以单独使用的元素时要高度注意,但是当需要时这些功能又可以聚集到一起。每个请求必须是独立的,并且可以将数据反馈给特定的需求。如果稍后还会需求,就必须将其存储到设备中,或者通过设备返回、维护并更新。
Baas是对前端开发人员的利好,更是创业团队的春天,Baas意味着更小的创业成本:
1)人力成本:后端开发人员不再是初创团队的compulsory option.
2)时间成本:Baas对初创企业最大的吸引力在于原型快速的验证阶段。在刚有产品雏形的时候,用户数大都不多,这时候性能和稳定性并不是最主要的目标,把产品放到市场上去验证想法,快速试错才是这时候最主要的目标。Bass意味着更快速的产品迭代,更小的试错成本,更有利的抢占市场时机。
Baas也有自己的劣势,后端逻辑变成了一个黑盒,出了问题只能等待服务提供商解决。而且现在的大部分Baas服务提供者都是初创团队,在服务的稳定性和性能方面还有很大的成长空间。
在DevOps越来越盛行的今天,其实我们早已很难界定“后端”的边界在哪里了。甚至在很多前端开发人员的眼中,所有前端以外的工作都是后端,包括测试,运维。这其中的痛点,也诞生了一批创业公司。比如专注于做移动app真机测试的testin,专注于android应用市场渠道接入的酷传,专注于手游SDK渠道接入的棱镜等等。它们从广义上很难说是纯正的Baas,但是它们都在移动开发的生命周期的某个环节切切实实的解决了某个痛点问题,提高了效率,而且它们只专注于做这一件事,虽然这可能只是一个很小的不起眼的工具。
Baas兴起的意义在于更好的基于软件工程角度的分工和对服务的抽象,让最专业的人做最专业的事,更专业的人做更专业的事。