摘要: 什麼是BaaS? BaaS(Backend as a Service)是一種新型的雲服務,旨在爲移動和Web應用提供後端雲服務,包括雲端數據/文件存儲、帳戶管理、消息推送、社交媒體整合等。BaaS是垂直領域的雲服務,隨着移動互聯網的持續火熱,BaaS也受到愈來愈多的開發者的親睞。它做爲應用前端
BaaS(Backend as a Service)是一種新型的雲服務,旨在爲移動和Web應用提供後端雲服務,包括雲端數據/文件存儲、帳戶管理、消息推送、社交媒體整合等。BaaS是垂直領域的雲服務,隨着移動互聯網的持續火熱,BaaS也受到愈來愈多的開發者的親睞。它做爲應用開發的新模型,能夠下降開發者成本,讓開發者只需專一於具體的開發工做。web
能夠說BaaS是誕生於移動互聯網,爲了加速移動應用開發和下降成本而造成的開發架構。BaaS能夠帶來後端能力的服務化,服務化也爲後端能力優化管理帶來了可能,這些能力經過服務開發者而誕生,重複的建設和規劃會在初期就獲得避免。 開發者經過使用這些服務,實現本身的業務功能的同時,也會對服務的能力進一步提出要求,促進後端服務的發展。數據庫
咱們很熟悉IaaS, PaaS和SaaS,這些也是雲計算髮展的經歷階段,後端
IaaS, Infrastructure as a Service: 基礎設施的服務化,誕生裏AWS,阿里雲等 PaaS, Platform as a Service: 開發平臺的服務化,誕生了Google APP Engine,阿里雲,百度開放平臺,騰訊開發平臺,sina開發平臺等。 SaaS,Software as a Service, 軟件的服務化,如微軟的Office 365. BaaS, Backend as a Service ,後端的服務化。
BaaS是在PaaS和SaaS之間,爲了知足移動互聯網快速發展的須要,將後端的能力以服務形式提供,是在PaaS平臺開發能力的基礎上,用SaaS的思路,將後端能力服務化,讓開發者在此基礎上開發本身的Software解決方案。安全
BaaS也是移動中間件的替代品(或者說備選方案),它使用統一的API和SDK來鏈接移動應用到後端雲存儲,傳統的移動中間件經過本地的物理服務把後端服務集成到應用中。而BaaS經過雲來集成後端服務。中間件和BaaS的最大不一樣是它們是否包含或者提供雲的服務,BaaS能夠說是PaaS平臺在移動垂直領域的延伸,更能夠說是移動中間件和雲的融合。服務器
BaaS簡化了應用開發流程,而PaaS簡化了應用部署流程。PaaS是一個執行代碼以及管理應用運行環境的開發平臺,用戶經過SVN或者Git之類的代碼版本管理工具與平臺交互,對於開發者來講,PaaS就像是一個容器,輸入是代碼和配置文件,輸出是一個可訪問應用的URL。而BaaS平臺進一步將用戶需求進行了抽象,好比用戶管理,開發者但願建立用戶數據庫表(模型)後,客戶端就能夠經過Restful接口直接操做對應的模型,全部的操做均可以被抽象爲CRUD。以前,開發者須要建立表、寫接口、寫校驗,而在BaaS平臺中,開發者只須要定義模型,平臺就會自動生成對應的接口,這可讓開發者更加專一具體的客戶端代碼。架構
從web時代興起以來(web 1.0, web 2.0),咱們就進入J2EE時代一直到如今,個人的開發架構基本在J2EE各類規範的覆蓋下, J2EE經過定義一整套服務(Services)、應用程序接口(APIs)和協議,對開發基於Web的多層應用提供了技術棧支持:
1. JDBC(Java Database Connectivity),JDBC API爲訪問不一樣數據庫提供了統一的路徑
2. JNDI(Java Name and Directory Interface),遠程方法請求,RMI協議調用遠程對象上的方法.它使用了序列化的方式在客戶端和服務器之間傳遞數據
3. Java Servlet, web服務器的功能擴展
4. JMS, 面向對象消息的中間件相互通訊的應用程序接口
5. ...app
咱們的服務器端開發由此也進入中間件時代,利用這些中間件提供的功能,規範來知足商業需求。J2EE,中間件的發展也最後造成了雲架構時代的PaaS基礎,這些中間件,服務器等造成一個開發平臺,利用各類規範和協議來提供開發者全面的能力,
這也是咱們目前最熟悉和習覺得常的開發架構。咱們會一度認爲,功能太強大豐富了,已經發展到足夠好了,剩下的是須要開發者努力去掌握各類技術細節就好。 當咱們有這種想法的時候,其實也表明這種架構發展到了瓶頸期。運維
這種開發架構在咱們隊開發效率和成本的追求下,更逐漸暴露出教多的缺點,他對開發人員的技術素質要求較高,同時對開發效率的提高設置了必定的壁壘。當咱們想進一步追究開發效率和減低開發成本時,咱們就須要對這種開發架構作進一步的發展升級,同時隨着雲計算時代的到來,也爲開發技術架構的升級提供了基礎。
讓咱們想一想咱們開發一個典型web業務系統須要作的事情。
這種開發通常分爲後端開發和前端開發, 其中後端須要負責數據存儲,檢索,集成,業務邏輯,認證受權等一些列功能,想象中能夠很簡單:
其實這更接近真相:
然而這些還不是所有:
作一個互聯網的高可靠高併發高性能的web系統,開發的能力可能須要長時間的積累和付出巨大的資源成本。
當開發了愈來愈多的相似系統後,咱們就會感受到,除了具體業務邏輯外,咱們在作不少重複相似的工做。若是有個界面給咱們,讓咱們選擇輸入咱們想要的功能就能一鍵輸出最後的API,世界將會美好不少。
而云計算的發展也讓咱們對這種設想變得原來越可能,
咱們在阿里雲這樣的IaaS上,輸入咱們須要的服務器數目和配置,點擊後,咱們就把服務器部署解決了。
當咱們在阿里雲的PaaS上選擇RDS,OSS,消息這種中間件服務時,咱們須要的存儲,消息等能力也能夠說一鍵解決了。
那麼更進一步指望, 咱們不少的共用服務,好比認證和受權,消息推送,數據建模,地圖,語音等是否也可以一鍵解決就行了,阿里雲提供的功能還不能到這一階段。
而提供這些服務的方式就是BaaS,後端即服務。將後端的能力打包以服務的方式向外提供。
將後端能力造成平臺,構建新的開發架構:
這就是BaaS架構的公式:
BaaS = IaaS + PaaS + APIs + SDKs
利用IaaS , PaaS ,API以及SDK基礎, 把後端能力以服務的形式提供出來。
對於開發者來講,只須要利用API或者SDK,就能夠完成對應的功能,從而能夠只專一於自己業務邏輯的開發。 在這種開發架構下, 業務系統的開發將大大提速,沒有後端複雜的開發,維護,只須要利用之後的服務完成業務邏輯的開發。 對開發人員的技術要求也極大下降。
BaaS在2012年以來在業界發展迅速,
2013年4月,Facebook收購Parse;2014年6月,蘋果在一年一度的WWDC上發佈了CloudKit;等到了2014年10月份,Google也出手收購了Firebase。
Parse,Firebase等是BaaS創業公司裏的佼佼者,三大互聯網公司最近2年在BaaS裏的動做也反應了他們對BaaS的重視。
Facebook指望結束應用之間的信息孤島狀態,讓不一樣應用之間的內容可以互通和無縫跳轉,因而就發佈了一個名爲AppLinks「協議」,但這個協議背後則須要Parse這樣的後端服務提供數據存儲、計算能力、Push通知等一系列技術支撐。
蘋果來講,CloudKit能夠提供完善且有彈性的後端解決方案,幫助開發者減輕編寫服務器代碼和維護服務器的需求。很明顯,蘋果此舉也是爲了下降開發iOS應用的成本,維護iOS生態圈的繁榮。
Firebase創始人James Tamplin在博客上說的那樣,Firebase和Google Cloud Platform能夠很好的互補。並且在蘋果爲iOS開發者提供了CloudKit以後,Google或許也想能有相似服務來爲Android生態圈的開發者們提供便利。
在下篇《BaaS後端即服務 - 分析篇》中,咱們會對這些主流BaaS平臺的功能和架構作詳細對比分析,研究其發展趨勢。
BaaS能夠很好的解決技術和業務之間的溝壑,經過BaaS,業務開發團隊就像是外界的創業公司,他們的核心競爭力是對業務的理解和實現,讓他們以用低成本的方式快速作出能知足自身需求的應用,而後把主要的資源都投入到擴展核心競爭力上面。
BaaS平臺自己能夠以產品的方式構建,將PaaS的能力昇華成對開發者更加簡單易用的BaaS服務。 平臺獨立運維,部署,提供高併發高性能高可靠的服務能力。
BaaS平臺能夠做爲雲產品爲中小型開發者、創業團隊、企業和機構,提供各類BaaS的相關產品和服務。
簡單地說,Baas 是業務開發的後端業務邏輯解決方案的提供者。爲我的開發者和創業團隊提供免費的公有云服務,爲企業提供私有云定製服務。BaaS的主旨是爲開發者免去後端開發和部署的煩惱,讓開發者無需購買服務器(IaaS),無需部署後端環境(PaaS),無需編寫後端代碼(BaaS),輕鬆修改業務邏輯(SDK和API),快速實現創意(Happy)。
同時,這些無需的背後意味着各類成本的下降,你不用去操心運維了,不用去學習各類中間件了,不用去擔憂高併發穩定性了,等等.... 全部的這些都變成了簡單的服務。