在當前快節奏和十分內卷的IT行業中,后端服務(BaaS)是開發人員快速開發應用的利器。利用BaaS可以縮短產品研發周期,提高上線效率,節省項目資金。
本文主要簡要介紹BaaS的概念,并推薦幾個比較優秀的開源的BaaS項目。
什么是BaaS?
注意:在區塊鏈領域許多人把區塊鏈即服務稱BaaS,而我們這里討論的并非區塊鏈,而是指后端即服務——Backend as a Service。
后端即服務 (BaaS) 是一種云服務模型,開發團隊或者企業可以外包 Web 或移動應用程序的所有幕后內容,僅需自行編寫和維護前端。BaaS 供應商為服務器上發生的活動提供預編寫的服務,例如:用戶身份驗證、數據庫管理、遠程更新和推送通知(針對移動應用程序),以及云存儲和托管等。
在Web和移動應用開發的早期階段,開發主管必須協調后端和前端開發人員。如今,后端即服務作為一種云服務的模式,允許前端開發人員專注開發網站或應用程序的前端,無需擔心后端方面的內容。通過 BaaS 平臺提供的 API 和 SDK,他們可以集成所需的所有后端功能,而無需自行構建后端。他們也不必管理服務器、虛擬機或容器,即可實現一個可以執行的應用程序。因此,他們可以更快地構建和啟動移動應用程序或者Web應用程序。簡化了開發工作、提高了工作效率。
BaaS 和 Serverless 有什么區別?
BaaS和Serverless(無服務器)之間存在一些重疊,在這兩者中,開發人員都只需要編寫應用程序代碼,而無需考慮后端。此外,許多 BaaS 提供商還提供無服務器計算服務。然而,使用 BaaS 構建的應用程序與使用真正的無服務器架構構建的應用程序之間存在顯著的操作差異。
Serverless應用程序的后端分為多個函數,每個函數都響應事件并僅執行一個操作。而 BaaS 服務器端功能可以按提供商的意愿進行構建,并且開發人員不必擔心除應用程序前端以外的任何事務。
Serverless架構是事件驅動的,每個函數僅在由某個事件觸發時才運行,否則不會運行。BaaS 構建的應用程序通常不是事件驅動的。
Serverless函數可以從任何機器上的任何位置運行,使得將邊緣計算整合到應用程序中成為可能。BaaS 并不一定是隨時隨地運行代碼,取決于BaaS服務商。
在Serverless中,應用程序會隨著使用量的增加而自動擴展。而BaaS,除非供應商也是基于Serverless,否則BaaS應用程序無法以這種方式進行擴展。
BaaS 和 PaaS的區別?
PaaS是通過云基礎設施提供的一個“平臺服務”。與無服務器計算和 BaaS 一樣的地方是:消除了開發人員構建和管理應用程序后端的麻煩。但是,PaaS 不包括預先構建的服務器端應用程序業務邏輯,例如:推送通知和用戶身份驗證。PaaS 為開發人員提供了更大的靈活性,而 BaaS 則提供了更多的功能。
市面上有很多成功的BaaS供應商,他們能夠提供各種服務器端功能,如:消息推送、用戶身份驗證、數據庫管理、遠程更新和云存儲等。另外,BaaS公司還提供了一些自己的平臺特定的功能。市面上有許多比較好的商業版BaaS,例如:Firebase、AWS Amplify、Back4App等。但這些項目在私有化部署、定制化開發以及成本控制等方面并不是最佳選擇。
以下是一些優秀的開源后端服務系統,完全可以根據需要拿來改造。
1.Appwrite
- https://appwrite.io/
- https://Github.com/appwrite/appwrite
Appwrite是一個完整的后端即服務開源解決方案,幾乎適用于任何web或移動的應用。并且它具有零依賴性、易于集成等特點。
Appwrite可以打包為一組Docker容器??梢栽谌魏沃С諨ocker CLI的操作系統中安裝。這種跨平臺功能允許我們在本地桌面或任何公有云服務上運行Appwrite。
Appwrite附帶了一個集成面板,可以將應用程序作為項目進行管理。每個項目都可以直接與Web或移動的應用程序集成。
功能特性:
- 簡單
- 優秀的文檔
- 跨平臺
- 零依賴(除Docker外)
2.Supabase
https://github.com/supabase/supabase
Supabase可以執行重復的CRUD功能,并讓開發人員專注于產品。Supabase支持像Appwrite一樣私有化部署。它提供了構建產品所需的所有后端服務,包括:Postgres數據庫、認證、文件存儲、自動生成API等??梢栽趲追昼妰葎摻☉贸绦?。Supabase系統本身帶有儀表盤、表格編輯器(類似于電子表格)、內置的SQL編輯器和用戶管理等功能。
3.Parse Platform
https://parseplatform.org/
https://github.com/parse-community/parse-server
Parse Platform是一個完整的應用程序服務棧。Parse Server是平臺的一部分,它是一個可以部署在任何能夠運行Node.js的基礎設施中的系統。Parse Server支持使用MongoDB或Postgres作為數據庫,并允許使用自己的基礎設施來部署后端。
Parse Platform提供了一些開源SDK,支持與現有的Web或者移動應用集成。
4.Nhost
- https://nhost.io/
- https://github.com/nhost/nhost
Nhost與Firebase類似,是一個開箱即用的開源后端服務系統,提供的服務內容包括:Postgres數據庫、Hasura、GraphQL、身份驗證和文件存儲等。另外,它還提供了一組SDK來集成Android、IOS、JAVAScript等應用程序。
系統架構如下圖所示: