什么是BaaS?###
BaaS(Backend as a Service)是一種新型的云服務,旨在為移動和Web應用提供后端云服務,包括云端數據/文件存儲、賬戶管理、消息推送、社交媒體整合等。BaaS是垂直領域的云服務,隨著移動互聯網的持續火熱,BaaS也受到越來越多的開發者的親睞。它作為應用開發的新模型,可以降低開發者成本,讓開發者只需專注于具體的開發工作。
可以說BaaS是誕生于移動互聯網,為了加速移動應用開發和降低成本而形成的開發架構。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是PaaS進一步發展
BaaS也是移動中間件的替代品(或者說備選方案),它使用統一的API和SDK來連接移動應用到后端云存儲,傳統的移動中間件通過本地的物理服務把后端服務集成到應用中。而BaaS通過云來集成后端服務。中間件和BaaS的最大不同是它們是否包含或者提供云的服務,BaaS可以說是PaaS平臺在移動垂直領域的延伸,更可以說是移動中間件和云的融合。
BaaS簡化了應用開發流程,而PaaS簡化了應用部署流程。PaaS是一個執行代碼以及管理應用運行環境的開發平臺,用戶通過SVN或者Git之類的代碼版本管理工具與平臺交互,對于開發者來說,PaaS就像是一個容器,輸入是代碼和配置文件,輸出是一個可訪問應用的URL。而BaaS平臺進一步將用戶需求進行了抽象,比如用戶管理,開發者希望創建用戶數據庫表(模型)后,客戶端就可以通過Restful接口直接操作對應的模型,所有的操作都可以被抽象為CRUD。之前,開發者需要創建表、寫接口、寫校驗,而在BaaS平臺中,開發者只需要定義模型,平臺就會自動生成對應的接口,這可以讓開發者更加專注具體的客戶端代碼。
BaaS是開發架構的升級,從J2EE中間件時代走入云計算服務時代#####
J2EE Stack -> BaaS
從web時代興起以來(web 1.0, web 2.0),我們就進入J2EE時代一直到現在,我的的開發架構基本在J2EE各種規范的覆蓋下, J2EE通過定義一整套服務(Services)、應用程序接口(APIs)和協議,對開發基于Web的多層應用提供了技術棧支持:
- JDBC(Java Database Connectivity),JDBC API為訪問不同數據庫提供了統一的路徑
- JNDI(Java Name and Directory Interface),遠程方法請求,RMI協議調用遠程對象上的方法.它使用了序列化的方式在客戶端和服務器之間傳遞數據
- Java Servlet, web服務器的功能擴展
- JMS, 面向對象消息的中間件相互通信的應用程序接口
- ...
我們的服務器端開發由此也進入中間件時代,利用這些中間件提供的功能,規范來滿足商業需求。J2EE,中間件的發展也最后形成了云架構時代的PaaS基礎,這些中間件,服務器等形成一個開發平臺,利用各種規范和協議來提供開發者全面的能力,
這也是我們目前最熟悉和習以為常的開發架構。我們會一度認為,功能太強大豐富了,已經發展到足夠好了,剩下的是需要開發者努力去掌握各種技術細節就好。 當我們有這種想法的時候,其實也代表這種架構發展到了瓶頸期。
這種開發架構在我們隊開發效率和成本的追求下,更逐漸暴露出教多的缺點,他對開發人員的技術素質要求較高,同時對開發效率的提升設置了一定的壁壘。當我們想進一步追究開發效率和減低開發成本時,我們就需要對這種開發架構做進一步的發展升級,同時隨著云計算時代的到來,也為開發技術架構的升級提供了基礎。
BaaS如何提高開發效率和降低開發成本#####
讓我們想想我們開發一個典型web業務系統需要做的事情。
這種開發一般分為后端開發和前端開發, 其中后端需要負責數據存儲,檢索,集成,業務邏輯,認證授權等一些列功能,想象中可以很簡單:
其實這更接近真相:
然而這些還不是全部:
做一個互聯網的高可靠高并發高性能的web系統,開發的能力可能需要長時間的積累和付出巨大的資源成本。
當開發了越來越多的類似系統后,我們就會感覺到,除了具體業務邏輯外,我們在做很多重復類似的工作。如果有個界面給我們,讓我們選擇輸入我們想要的功能就能一鍵輸出最后的API,世界將會美好很多。
而云計算的發展也讓我們對這種設想變得原來越可能,
我們在阿里云這樣的IaaS上,輸入我們需要的服務器數目和配置,點擊后,我們就把服務器部署解決了。
當我們在阿里云的PaaS上選擇RDS,OSS,消息這種中間件服務時,我們需要的存儲,消息等能力也可以說一鍵解決了。
那么更進一步期望, 我們很多的共用服務,比如認證和授權,消息推送,數據建模,地圖,語音等是否也能夠一鍵解決就好了,阿里云提供的功能還不能到這一階段。
而提供這些服務的方式就是BaaS,后端即服務。將后端的能力打包以服務的方式向外提供。
將后端能力形成平臺,構建新的開發架構:
這就是BaaS架構的公式:
BaaS = IaaS + PaaS + APIs + SDKs
利用IaaS , PaaS ,API以及SDK基礎, 把后端能力以服務的形式提供出來。
對于開發者來說,只需要利用API或者SDK,就可以完成對應的功能,從而可以只專注于本身業務邏輯的開發。 在這種開發架構下, 業務系統的開發將大大提速,沒有后端復雜的開發,維護,只需要利用以后的服務完成業務邏輯的開發。 對開發人員的技術要求也極大降低。
BaaS業界生態#####
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,業務開發團隊就像是外界的創業公司,他們的核心競爭力是對業務的理解和實現,讓他們以用低成本的方式快速做出能滿足自身需求的應用,然后把主要的資源都投入到擴展核心競爭力上面。
BaaS平臺本身可以以產品的方式構建,將PaaS的能力升華成對開發者更加簡單易用的BaaS服務。 平臺獨立運維,部署,提供高并發高性能高可靠的服務能力。
BaaS平臺可以作為云產品為中小型開發者、創業團隊、企業和機構,提供各種BaaS的相關產品和服務。
- 個人移動開發者創意實現的門檻問題。對于個人移動開發者而言,要兼具前端和后端的開發能力,才能將好的想法實現,這就需要外包或組建小團隊,而對絕大部分人而言并不容易。
- 創業團隊的成本控制和快速開發需求。對于創業團隊,快速敏捷才能搶占市場先機,而移動應用的后端開發和運維工作重復單調繁重,會耗費大量的時間和人力,而創業團隊因種種原因,往往一人身兼多職,人力不足,導致產品上線時間不斷延期,很多好的創意就這樣夭折了。
- 企業的數據安全和敏捷開發需求。對于企業而言,自己造后臺重復,勞民傷財,與其將人力和時間投入到重復的無意義勞動中,不如購買已有的成熟服務,將企業人力投入到更具創造性價值的崗位上,但各個企業業務邏輯也千差萬別,因此,亟需適應自身企業需求的私有云定制服務。
簡單地說,Baas 是業務開發的后端業務邏輯解決方案的提供者。為個人開發者和創業團隊提供免費的公有云服務,為企業提供私有云定制服務。BaaS的主旨是為開發者免去后端開發和部署的煩惱,讓開發者無需購買服務器(IaaS),無需部署后端環境(PaaS),無需編寫后端代碼(BaaS),輕松修改業務邏輯(SDK和API),快速實現創意(Happy)。
同時,這些無需的背后意味著各種成本的降低,你不用去操心運維了,不用去學習各種中間件了,不用去擔心高并發穩定性了,等等.... 所有的這些都變成了簡單的服務。
BaaS的想象空間#####
-
作為移動互聯網的基礎服務
Baas面向所有Web和移動應用,移動互聯網規模巨大 -
與企業市場若即若離,有巨大價值
BaaS將云服務和開發者服務連接起來,對個人免費,對大中型企業用戶收費 -
與大數據相聯系,只手掌握未來
BaaS特點是與開發者共享用戶,通過API和SDK可以收集用戶行為數據。結合大數據的商業智能化,將產生巨大價值和數據壁壘。