前些日子,与同事有个讨论,才发现一直以来,我对于 BaaS 的定义与其他人都不相同(或者说,至少与业界不同),既然如此,倒不如写篇文章,谈一谈我心中的 BaaS 。

业界眼中的 BaaS 是什么?

既然要谈 BaaS,那就自然的要先谈业界是如何定义 BaaS 的。这里我选择的是来自 CDN 领域的巨头 Cloudflare 的定义1

对于 CloudFlare 来说,他们认为:

后端即服务 (BaaS) 是一种云服务模型,在其中,开发人员外包 Web 或移动应用程序的所有幕后方面,仅需自行编写和维护前端。BaaS 供应商为服务器上发生的活动提供预编写的软件,例如用户身份验证、数据库管理、远程更新和推送通知(针对移动应用程序),以及云存储和托管。

用一副图来表示,

CloudFlare 对于 BaaS 的定义使用的图片
CloudFlare 对于 BaaS 的定义使用的图片

图中的「用户界面、客户端逻辑」是作为前端,由用户在本地完成的。这部分 BaaS 的服务商并不参与其中。

图中的 「数据库管理」、「云存储」、「用户鉴权」、「消息推送」、「托管」则作为 Backend ,由 BaaS 服务商提供支持。

我眼中的 BaaS 是什么?

我在很早之前的一篇文章中,提到过,我从 2014 年开始,就在使用一家国产的 BaaS 产品 —— LeanCloud 。而 LeanCloud ,也是我最早接触到的 BaaS 产品,正是 LeanCloud 帮我奠定了我对于 BaaS 的认知。

在我看来,BaaS 是这样的:

BaaS 就是 Backend as a Service ,而这里的 Backend 正是我们一般意义上的 Backend ,不仅仅包含于业界所定义的数据库管理、云存储、用户鉴权、消息推送、托管,还包括业务所需要的逻辑、一些涉及到业务的开放能力(比如短信)等原本由后端负责的工作。

相比于业界的认知,我对于 BaaS 的认知多出了「逻辑」这个部分。这个部分则代表了我自己对于业务的理解和其价值。

BaaS 为什么需要逻辑?

在 mBaaS (Mobile backend as a service) 阶段,很多的逻辑都是在用户的手机上完成,甚至于支付,都可以通过手机端的逻辑来完成(比如苹果的 IAP 和 Google Play 的 IAP),在这种情况下,服务端的逻辑虽然需要,但也不是那么必要,总有一些方式,可以在移动端绕过去。但随着原生 App 的式微,各种小程序、网页应用的诞生, mBaaS 的逻辑无法在小程序、网页应用中完成时,就会需要出现一些服务端的逻辑。

举个例子, 就很好说明服务端逻辑的重要性:

  1. 支付逻辑的安全需求:各平台的支付,为了安全,会设计密钥、公钥、 Key 等机制,这就要求你需要将这些信息安全的保存。放在用户可以直接嗅探到的移动端显然是不靠谱的。在这种情况下,服务端逻辑的诉求就是必然的。
  2. 一些跨服务之间的沟通:在 2014 年,我们需要涉及到服务和服务之间协同的还很少。但如今,我们可以在不同的服务之间相互连接,在这种情况下,服务端之间的相互沟通是不需要用户感知的,也自然需要服务端逻辑。

BaaS 值得用?敢用么?

因为自己从事 BaaS 相关领域,所以,我个人的建议是,要大胆的使用,积极的使用。

原因也很简单,对于绝大多数企业来说,需要解决的问题不是性能问题,而是如何更快更好的让自己的业务可以正常的 Run 起来。如果你想要让你的业务可以更快的开始运转,那么 BaaS 会是你十分好的帮助。

固然, BaaS 存在技术绑定、功能不如自研后台更全面。但它可以让你构建业务的速度变快、更快、越来越快。

天下武功,唯快不破!

Reference

  • https://www.cloudflare.com/zh-cn/learning/serverless/glossary/backend-as-a-service-baas/
0
0