前些日子,与同事有个讨论,才发现一直以来,我对于 BaaS 的定义与其他人都不相同(或者说,至少与业界不同),既然如此,倒不如写篇文章,谈一谈我心中的 BaaS 。
业界眼中的 BaaS 是什么?
既然要谈 BaaS,那就自然的要先谈业界是如何定义 BaaS 的。这里我选择的是来自 CDN 领域的巨头 Cloudflare 的定义1
对于 CloudFlare 来说,他们认为:
后端即服务 (BaaS) 是一种云服务模型,在其中,开发人员外包 Web 或移动应用程序的所有幕后方面,仅需自行编写和维护前端。BaaS 供应商为服务器上发生的活动提供预编写的软件,例如用户身份验证、数据库管理、远程更新和推送通知(针对移动应用程序),以及云存储和托管。
用一副图来表示,
图中的「用户界面、客户端逻辑」是作为前端,由用户在本地完成的。这部分 BaaS 的服务商并不参与其中。
图中的 「数据库管理」、「云存储」、「用户鉴权」、「消息推送」、「托管」则作为 Backend ,由 BaaS 服务商提供支持。
我眼中的 BaaS 是什么?
我在很早之前的一篇文章中,提到过,我从 2014 年开始,就在使用一家国产的 BaaS 产品 —— LeanCloud 。而 LeanCloud ,也是我最早接触到的 BaaS 产品,正是 LeanCloud 帮我奠定了我对于 BaaS 的认知。
在我看来,BaaS 是这样的:
相比于业界的认知,我对于 BaaS 的认知多出了「逻辑」这个部分。这个部分则代表了我自己对于业务的理解和其价值。
BaaS 为什么需要逻辑?
在 mBaaS (Mobile backend as a service) 阶段,很多的逻辑都是在用户的手机上完成,甚至于支付,都可以通过手机端的逻辑来完成(比如苹果的 IAP 和 Google Play 的 IAP),在这种情况下,服务端的逻辑虽然需要,但也不是那么必要,总有一些方式,可以在移动端绕过去。但随着原生 App 的式微,各种小程序、网页应用的诞生, mBaaS 的逻辑无法在小程序、网页应用中完成时,就会需要出现一些服务端的逻辑。
举个例子, 就很好说明服务端逻辑的重要性:
- 支付逻辑的安全需求:各平台的支付,为了安全,会设计密钥、公钥、 Key 等机制,这就要求你需要将这些信息安全的保存。放在用户可以直接嗅探到的移动端显然是不靠谱的。在这种情况下,服务端逻辑的诉求就是必然的。
- 一些跨服务之间的沟通:在 2014 年,我们需要涉及到服务和服务之间协同的还很少。但如今,我们可以在不同的服务之间相互连接,在这种情况下,服务端之间的相互沟通是不需要用户感知的,也自然需要服务端逻辑。
BaaS 值得用?敢用么?
因为自己从事 BaaS 相关领域,所以,我个人的建议是,要大胆的使用,积极的使用。
原因也很简单,对于绝大多数企业来说,需要解决的问题不是性能问题,而是如何更快更好的让自己的业务可以正常的 Run 起来。如果你想要让你的业务可以更快的开始运转,那么 BaaS 会是你十分好的帮助。
固然, BaaS 存在技术绑定、功能不如自研后台更全面。但它可以让你构建业务的速度变快、更快、越来越快。
- https://www.cloudflare.com/zh-cn/learning/serverless/glossary/backend-as-a-service-baas/
