在当前快节奏和十分内卷的IT行业中,后端服务(BaaS)是开发人员快速开发应用的利器。利用BaaS可以缩短产品研发周期,提高上线效率,节省项目资金。
本文主要简要介绍BaaS的概念,并推荐几个比较优秀的开源的BaaS项目。
注意:在区块链领域许多人把区块链即服务称BaaS,而我们这里讨论的并非区块链,而是指后端即服务——Backend as a Service。
后端即服务 (BaaS) 是一种云服务模型,开发团队或者企业可以外包 Web 或移动应用程序的所有幕后内容,仅需自行编写和维护前端。BaaS 供应商为服务器上发生的活动提供预编写的服务,例如:用户身份验证、数据库管理、远程更新和推送通知(针对移动应用程序),以及云存储和托管等。
在Web和移动应用开发的早期阶段,开发主管必须协调后端和前端开发人员。如今,后端即服务作为一种云服务的模式,允许前端开发人员专注开发网站或应用程序的前端,无需担心后端方面的内容。通过 BaaS 平台提供的 API 和 SDK,他们可以集成所需的所有后端功能,而无需自行构建后端。他们也不必管理服务器、虚拟机或容器,即可实现一个可以执行的应用程序。因此,他们可以更快地构建和启动移动应用程序或者Web应用程序。简化了开发工作、提高了工作效率。
BaaS和Serverless(无服务器)之间存在一些重叠,在这两者中,开发人员都只需要编写应用程序代码,而无需考虑后端。此外,许多 BaaS 提供商还提供无服务器计算服务。然而,使用 BaaS 构建的应用程序与使用真正的无服务器架构构建的应用程序之间存在显著的操作差异。
Serverless应用程序的后端分为多个函数,每个函数都响应事件并仅执行一个操作。而 BaaS 服务器端功能可以按提供商的意愿进行构建,并且开发人员不必担心除应用程序前端以外的任何事务。
Serverless架构是事件驱动的,每个函数仅在由某个事件触发时才运行,否则不会运行。BaaS 构建的应用程序通常不是事件驱动的。
Serverless函数可以从任何机器上的任何位置运行,使得将边缘计算整合到应用程序中成为可能。BaaS 并不一定是随时随地运行代码,取决于BaaS服务商。
在Serverless中,应用程序会随着使用量的增加而自动扩展。而BaaS,除非供应商也是基于Serverless,否则BaaS应用程序无法以这种方式进行扩展。
PaaS是通过云基础设施提供的一个“平台服务”。与无服务器计算和 BaaS 一样的地方是:消除了开发人员构建和管理应用程序后端的麻烦。但是,PaaS 不包括预先构建的服务器端应用程序业务逻辑,例如:推送通知和用户身份验证。PaaS 为开发人员提供了更大的灵活性,而 BaaS 则提供了更多的功能。
市面上有很多成功的BaaS供应商,他们能够提供各种服务器端功能,如:消息推送、用户身份验证、数据库管理、远程更新和云存储等。另外,BaaS公司还提供了一些自己的平台特定的功能。市面上有许多比较好的商业版BaaS,例如:Firebase、AWS Amplify、Back4App等。但这些项目在私有化部署、定制化开发以及成本控制等方面并不是最佳选择。
以下是一些优秀的开源后端服务系统,完全可以根据需要拿来改造。
Appwrite是一个完整的后端即服务开源解决方案,几乎适用于任何web或移动的应用。并且它具有零依赖性、易于集成等特点。
Appwrite可以打包为一组Docker容器。可以在任何支持Docker CLI的操作系统中安装。这种跨平台功能允许我们在本地桌面或任何公有云服务上运行Appwrite。
Appwrite附带了一个集成面板,可以将应用程序作为项目进行管理。每个项目都可以直接与Web或移动的应用程序集成。
功能特性:
https://github.com/supabase/supabase
Supabase可以执行重复的CRUD功能,并让开发人员专注于产品。Supabase支持像Appwrite一样私有化部署。它提供了构建产品所需的所有后端服务,包括:Postgres数据库、认证、文件存储、自动生成API等。可以在几分钟内创建应用程序。Supabase系统本身带有仪表盘、表格编辑器(类似于电子表格)、内置的SQL编辑器和用户管理等功能。
https://parseplatform.org/
https://github.com/parse-community/parse-server
Parse Platform是一个完整的应用程序服务栈。Parse Server是平台的一部分,它是一个可以部署在任何能够运行Node.js的基础设施中的系统。Parse Server支持使用MongoDB或Postgres作为数据库,并允许使用自己的基础设施来部署后端。
Parse Platform提供了一些开源SDK,支持与现有的Web或者移动应用集成。
Nhost与Firebase类似,是一个开箱即用的开源后端服务系统,提供的服务内容包括:Postgres数据库、Hasura、GraphQL、身份验证和文件存储等。另外,它还提供了一组SDK来集成Android、IOS、JAVAScript等应用程序。
系统架构如下图所示: