什么是BaaS?###
BaaS(Backend as a Service)是一種新型的云服務(wù)欣舵,旨在為移動(dòng)和Web應(yīng)用提供后端云服務(wù)擎鸠,包括云端數(shù)據(jù)/文件存儲(chǔ)、賬戶管理缘圈、消息推送劣光、社交媒體整合等。BaaS是垂直領(lǐng)域的云服務(wù)准验,隨著移動(dòng)互聯(lián)網(wǎng)的持續(xù)火熱赎线,BaaS也受到越來(lái)越多的開(kāi)發(fā)者的親睞。它作為應(yīng)用開(kāi)發(fā)的新模型糊饱,可以降低開(kāi)發(fā)者成本垂寥,讓開(kāi)發(fā)者只需專注于具體的開(kāi)發(fā)工作。
可以說(shuō)BaaS是誕生于移動(dòng)互聯(lián)網(wǎng)另锋,為了加速移動(dòng)應(yīng)用開(kāi)發(fā)和降低成本而形成的開(kāi)發(fā)架構(gòu)滞项。BaaS可以帶來(lái)后端能力的服務(wù)化,服務(wù)化也為后端能力優(yōu)化管理帶來(lái)了可能夭坪,這些能力通過(guò)服務(wù)開(kāi)發(fā)者而誕生文判,重復(fù)的建設(shè)和規(guī)劃會(huì)在初期就得到避免。 開(kāi)發(fā)者通過(guò)使用這些服務(wù)室梅,實(shí)現(xiàn)自己的業(yè)務(wù)功能的同時(shí)戏仓,也會(huì)對(duì)服務(wù)的能力進(jìn)一步提出要求,促進(jìn)后端服務(wù)的發(fā)展亡鼠。
BaaS的發(fā)展
我們很熟悉IaaS赏殃, PaaS和SaaS,這些也是云計(jì)算發(fā)展的經(jīng)歷階段,
IaaS间涵, Infrastructure as a Service: 基礎(chǔ)設(shè)施的服務(wù)化仁热,誕生里AWS,阿里云等
PaaS勾哩, Platform as a Service: 開(kāi)發(fā)平臺(tái)的服務(wù)化抗蠢,誕生了Google APP Engine,阿里云举哟,百度開(kāi)放平臺(tái),騰訊開(kāi)發(fā)平臺(tái)迅矛,sina開(kāi)發(fā)平臺(tái)等妨猩。
SaaS,Software as a Service, 軟件的服務(wù)化诬乞,如微軟的Office 365.
BaaS, Backend as a Service ,后端的服務(wù)化册赛。
BaaS是在PaaS和SaaS之間钠导,為了滿足移動(dòng)互聯(lián)網(wǎng)快速發(fā)展的需要震嫉,將后端的能力以服務(wù)形式提供,是在PaaS平臺(tái)開(kāi)發(fā)能力的基礎(chǔ)上牡属,用SaaS的思路票堵,將后端能力服務(wù)化,讓開(kāi)發(fā)者在此基礎(chǔ)上開(kāi)發(fā)自己的Software解決方案逮栅。
BaaS是PaaS進(jìn)一步發(fā)展
BaaS也是移動(dòng)中間件的替代品(或者說(shuō)備選方案)悴势,它使用統(tǒng)一的API和SDK來(lái)連接移動(dòng)應(yīng)用到后端云存儲(chǔ),傳統(tǒng)的移動(dòng)中間件通過(guò)本地的物理服務(wù)把后端服務(wù)集成到應(yīng)用中措伐。而B(niǎo)aaS通過(guò)云來(lái)集成后端服務(wù)特纤。中間件和BaaS的最大不同是它們是否包含或者提供云的服務(wù),BaaS可以說(shuō)是PaaS平臺(tái)在移動(dòng)垂直領(lǐng)域的延伸侥加,更可以說(shuō)是移動(dòng)中間件和云的融合捧存。
BaaS簡(jiǎn)化了應(yīng)用開(kāi)發(fā)流程,而PaaS簡(jiǎn)化了應(yīng)用部署流程担败。PaaS是一個(gè)執(zhí)行代碼以及管理應(yīng)用運(yùn)行環(huán)境的開(kāi)發(fā)平臺(tái)昔穴,用戶通過(guò)SVN或者Git之類的代碼版本管理工具與平臺(tái)交互,對(duì)于開(kāi)發(fā)者來(lái)說(shuō)提前,PaaS就像是一個(gè)容器吗货,輸入是代碼和配置文件,輸出是一個(gè)可訪問(wèn)應(yīng)用的URL狈网。而B(niǎo)aaS平臺(tái)進(jìn)一步將用戶需求進(jìn)行了抽象宙搬,比如用戶管理,開(kāi)發(fā)者希望創(chuàng)建用戶數(shù)據(jù)庫(kù)表(模型)后拓哺,客戶端就可以通過(guò)Restful接口直接操作對(duì)應(yīng)的模型勇垛,所有的操作都可以被抽象為CRUD。之前拓售,開(kāi)發(fā)者需要?jiǎng)?chuàng)建表窥摄、寫接口、寫校驗(yàn)础淤,而在BaaS平臺(tái)中崭放,開(kāi)發(fā)者只需要定義模型哨苛,平臺(tái)就會(huì)自動(dòng)生成對(duì)應(yīng)的接口,這可以讓開(kāi)發(fā)者更加專注具體的客戶端代碼币砂。
BaaS是開(kāi)發(fā)架構(gòu)的升級(jí)建峭,從J2EE中間件時(shí)代走入云計(jì)算服務(wù)時(shí)代#####
J2EE Stack -> BaaS
從web時(shí)代興起以來(lái)(web 1.0, web 2.0),我們就進(jìn)入J2EE時(shí)代一直到現(xiàn)在,我的的開(kāi)發(fā)架構(gòu)基本在J2EE各種規(guī)范的覆蓋下椿浓, J2EE通過(guò)定義一整套服務(wù)(Services)胜蛉、應(yīng)用程序接口(APIs)和協(xié)議,對(duì)開(kāi)發(fā)基于Web的多層應(yīng)用提供了技術(shù)棧支持:
- JDBC(Java Database Connectivity)边锁,JDBC API為訪問(wèn)不同數(shù)據(jù)庫(kù)提供了統(tǒng)一的路徑
- JNDI(Java Name and Directory Interface),遠(yuǎn)程方法請(qǐng)求,RMI協(xié)議調(diào)用遠(yuǎn)程對(duì)象上的方法.它使用了序列化的方式在客戶端和服務(wù)器之間傳遞數(shù)據(jù)
- Java Servlet波岛, web服務(wù)器的功能擴(kuò)展
- JMS茅坛, 面向?qū)ο笙⒌闹虚g件相互通信的應(yīng)用程序接口
- ...
我們的服務(wù)器端開(kāi)發(fā)由此也進(jìn)入中間件時(shí)代,利用這些中間件提供的功能则拷,規(guī)范來(lái)滿足商業(yè)需求贡蓖。J2EE,中間件的發(fā)展也最后形成了云架構(gòu)時(shí)代的PaaS基礎(chǔ)煌茬,這些中間件斥铺,服務(wù)器等形成一個(gè)開(kāi)發(fā)平臺(tái),利用各種規(guī)范和協(xié)議來(lái)提供開(kāi)發(fā)者全面的能力坛善,
這也是我們目前最熟悉和習(xí)以為常的開(kāi)發(fā)架構(gòu)晾蜘。我們會(huì)一度認(rèn)為,功能太強(qiáng)大豐富了浑吟,已經(jīng)發(fā)展到足夠好了笙纤,剩下的是需要開(kāi)發(fā)者努力去掌握各種技術(shù)細(xì)節(jié)就好。 當(dāng)我們有這種想法的時(shí)候组力,其實(shí)也代表這種架構(gòu)發(fā)展到了瓶頸期省容。
這種開(kāi)發(fā)架構(gòu)在我們隊(duì)開(kāi)發(fā)效率和成本的追求下,更逐漸暴露出教多的缺點(diǎn)燎字,他對(duì)開(kāi)發(fā)人員的技術(shù)素質(zhì)要求較高腥椒,同時(shí)對(duì)開(kāi)發(fā)效率的提升設(shè)置了一定的壁壘。當(dāng)我們想進(jìn)一步追究開(kāi)發(fā)效率和減低開(kāi)發(fā)成本時(shí)候衍,我們就需要對(duì)這種開(kāi)發(fā)架構(gòu)做進(jìn)一步的發(fā)展升級(jí)笼蛛,同時(shí)隨著云計(jì)算時(shí)代的到來(lái),也為開(kāi)發(fā)技術(shù)架構(gòu)的升級(jí)提供了基礎(chǔ)蛉鹿。
BaaS如何提高開(kāi)發(fā)效率和降低開(kāi)發(fā)成本#####
讓我們想想我們開(kāi)發(fā)一個(gè)典型web業(yè)務(wù)系統(tǒng)需要做的事情滨砍。
這種開(kāi)發(fā)一般分為后端開(kāi)發(fā)和前端開(kāi)發(fā), 其中后端需要負(fù)責(zé)數(shù)據(jù)存儲(chǔ),檢索惋戏,集成领追,業(yè)務(wù)邏輯,認(rèn)證授權(quán)等一些列功能响逢,想象中可以很簡(jiǎn)單:
其實(shí)這更接近真相:
然而這些還不是全部:
做一個(gè)互聯(lián)網(wǎng)的高可靠高并發(fā)高性能的web系統(tǒng)绒窑,開(kāi)發(fā)的能力可能需要長(zhǎng)時(shí)間的積累和付出巨大的資源成本。
當(dāng)開(kāi)發(fā)了越來(lái)越多的類似系統(tǒng)后舔亭,我們就會(huì)感覺(jué)到些膨,除了具體業(yè)務(wù)邏輯外,我們?cè)谧龊芏嘀貜?fù)類似的工作钦铺。如果有個(gè)界面給我們订雾,讓我們選擇輸入我們想要的功能就能一鍵輸出最后的API,世界將會(huì)美好很多职抡。
而云計(jì)算的發(fā)展也讓我們對(duì)這種設(shè)想變得原來(lái)越可能葬燎,
我們?cè)诎⒗镌七@樣的IaaS上误甚,輸入我們需要的服務(wù)器數(shù)目和配置缚甩,點(diǎn)擊后,我們就把服務(wù)器部署解決了窑邦。
當(dāng)我們?cè)诎⒗镌频腜aaS上選擇RDS擅威,OSS,消息這種中間件服務(wù)時(shí)冈钦,我們需要的存儲(chǔ)郊丛,消息等能力也可以說(shuō)一鍵解決了。
那么更進(jìn)一步期望瞧筛, 我們很多的共用服務(wù)厉熟,比如認(rèn)證和授權(quán),消息推送较幌,數(shù)據(jù)建模揍瑟,地圖,語(yǔ)音等是否也能夠一鍵解決就好了乍炉,阿里云提供的功能還不能到這一階段绢片。
而提供這些服務(wù)的方式就是BaaS,后端即服務(wù)岛琼。將后端的能力打包以服務(wù)的方式向外提供底循。
將后端能力形成平臺(tái),構(gòu)建新的開(kāi)發(fā)架構(gòu):
這就是BaaS架構(gòu)的公式:
BaaS = IaaS + PaaS + APIs + SDKs
利用IaaS , PaaS ,API以及SDK基礎(chǔ)槐瑞, 把后端能力以服務(wù)的形式提供出來(lái)熙涤。
對(duì)于開(kāi)發(fā)者來(lái)說(shuō),只需要利用API或者SDK,就可以完成對(duì)應(yīng)的功能祠挫,從而可以只專注于本身業(yè)務(wù)邏輯的開(kāi)發(fā)猬错。 在這種開(kāi)發(fā)架構(gòu)下, 業(yè)務(wù)系統(tǒng)的開(kāi)發(fā)將大大提速茸歧,沒(méi)有后端復(fù)雜的開(kāi)發(fā)倦炒,維護(hù),只需要利用以后的服務(wù)完成業(yè)務(wù)邏輯的開(kāi)發(fā)软瞎。 對(duì)開(kāi)發(fā)人員的技術(shù)要求也極大降低逢唤。
BaaS業(yè)界生態(tài)#####
BaaS在2012年以來(lái)在業(yè)界發(fā)展迅速,
2013年4月涤浇,F(xiàn)acebook收購(gòu)Parse鳖藕;2014年6月,蘋果在一年一度的WWDC上發(fā)布了CloudKit只锭;等到了2014年10月份著恩,Google也出手收購(gòu)了Firebase。
Parse蜻展,F(xiàn)irebase等是BaaS創(chuàng)業(yè)公司里的佼佼者喉誊,三大互聯(lián)網(wǎng)公司最近2年在BaaS里的動(dòng)作也反應(yīng)了他們對(duì)BaaS的重視。
Facebook期望結(jié)束應(yīng)用之間的信息孤島狀態(tài)纵顾,讓不同應(yīng)用之間的內(nèi)容能夠互通和無(wú)縫跳轉(zhuǎn)伍茄,于是就發(fā)布了一個(gè)名為AppLinks“協(xié)議”,但這個(gè)協(xié)議背后則需要Parse這樣的后端服務(wù)提供數(shù)據(jù)存儲(chǔ)施逾、計(jì)算能力敷矫、Push通知等一系列技術(shù)支撐。
蘋果來(lái)說(shuō)汉额,CloudKit可以提供完善且有彈性的后端解決方案曹仗,幫助開(kāi)發(fā)者減輕編寫服務(wù)器代碼和維護(hù)服務(wù)器的需求。很明顯蠕搜,蘋果此舉也是為了降低開(kāi)發(fā)iOS應(yīng)用的成本怎茫,維護(hù)iOS生態(tài)圈的繁榮。
Firebase創(chuàng)始人James Tamplin在博客上說(shuō)的那樣讥脐,F(xiàn)irebase和Google Cloud Platform可以很好的互補(bǔ)遭居。而且在蘋果為iOS開(kāi)發(fā)者提供了CloudKit之后,Google或許也想能有類似服務(wù)來(lái)為Android生態(tài)圈的開(kāi)發(fā)者們提供便利旬渠。
在下篇《BaaS后端即服務(wù) - 分析篇》中俱萍,我們會(huì)對(duì)這些主流BaaS平臺(tái)的功能和架構(gòu)做詳細(xì)對(duì)比分析,研究其發(fā)展趨勢(shì)告丢。
BaaS的價(jià)值#####
BaaS可以很好的解決技術(shù)和業(yè)務(wù)之間的溝壑枪蘑,通過(guò)BaaS,業(yè)務(wù)開(kāi)發(fā)團(tuán)隊(duì)就像是外界的創(chuàng)業(yè)公司,他們的核心競(jìng)爭(zhēng)力是對(duì)業(yè)務(wù)的理解和實(shí)現(xiàn)岳颇,讓他們以用低成本的方式快速做出能滿足自身需求的應(yīng)用照捡,然后把主要的資源都投入到擴(kuò)展核心競(jìng)爭(zhēng)力上面。
BaaS平臺(tái)本身可以以產(chǎn)品的方式構(gòu)建话侧,將PaaS的能力升華成對(duì)開(kāi)發(fā)者更加簡(jiǎn)單易用的BaaS服務(wù)栗精。 平臺(tái)獨(dú)立運(yùn)維,部署瞻鹏,提供高并發(fā)高性能高可靠的服務(wù)能力悲立。
BaaS平臺(tái)可以作為云產(chǎn)品為中小型開(kāi)發(fā)者、創(chuàng)業(yè)團(tuán)隊(duì)新博、企業(yè)和機(jī)構(gòu)薪夕,提供各種BaaS的相關(guān)產(chǎn)品和服務(wù)。
- 個(gè)人移動(dòng)開(kāi)發(fā)者創(chuàng)意實(shí)現(xiàn)的門檻問(wèn)題赫悄。對(duì)于個(gè)人移動(dòng)開(kāi)發(fā)者而言原献,要兼具前端和后端的開(kāi)發(fā)能力,才能將好的想法實(shí)現(xiàn)埂淮,這就需要外包或組建小團(tuán)隊(duì)姑隅,而對(duì)絕大部分人而言并不容易。
- 創(chuàng)業(yè)團(tuán)隊(duì)的成本控制和快速開(kāi)發(fā)需求同诫。對(duì)于創(chuàng)業(yè)團(tuán)隊(duì)粤策,快速敏捷才能搶占市場(chǎng)先機(jī),而移動(dòng)應(yīng)用的后端開(kāi)發(fā)和運(yùn)維工作重復(fù)單調(diào)繁重误窖,會(huì)耗費(fèi)大量的時(shí)間和人力,而創(chuàng)業(yè)團(tuán)隊(duì)因種種原因秩贰,往往一人身兼多職霹俺,人力不足,導(dǎo)致產(chǎn)品上線時(shí)間不斷延期毒费,很多好的創(chuàng)意就這樣夭折了丙唧。
- 企業(yè)的數(shù)據(jù)安全和敏捷開(kāi)發(fā)需求。對(duì)于企業(yè)而言觅玻,自己造后臺(tái)重復(fù)想际,勞民傷財(cái),與其將人力和時(shí)間投入到重復(fù)的無(wú)意義勞動(dòng)中溪厘,不如購(gòu)買已有的成熟服務(wù)胡本,將企業(yè)人力投入到更具創(chuàng)造性價(jià)值的崗位上,但各個(gè)企業(yè)業(yè)務(wù)邏輯也千差萬(wàn)別畸悬,因此侧甫,亟需適應(yīng)自身企業(yè)需求的私有云定制服務(wù)。
簡(jiǎn)單地說(shuō),Baas 是業(yè)務(wù)開(kāi)發(fā)的后端業(yè)務(wù)邏輯解決方案的提供者披粟。為個(gè)人開(kāi)發(fā)者和創(chuàng)業(yè)團(tuán)隊(duì)提供免費(fèi)的公有云服務(wù)咒锻,為企業(yè)提供私有云定制服務(wù)。BaaS的主旨是為開(kāi)發(fā)者免去后端開(kāi)發(fā)和部署的煩惱守屉,讓開(kāi)發(fā)者無(wú)需購(gòu)買服務(wù)器(IaaS)惑艇,無(wú)需部署后端環(huán)境(PaaS),無(wú)需編寫后端代碼(BaaS)拇泛,輕松修改業(yè)務(wù)邏輯(SDK和API)敦捧,快速實(shí)現(xiàn)創(chuàng)意(Happy)。
同時(shí)碰镜,這些無(wú)需的背后意味著各種成本的降低兢卵,你不用去操心運(yùn)維了,不用去學(xué)習(xí)各種中間件了绪颖,不用去擔(dān)心高并發(fā)穩(wěn)定性了秽荤,等等.... 所有的這些都變成了簡(jiǎn)單的服務(wù)。
BaaS的想象空間#####
-
作為移動(dòng)互聯(lián)網(wǎng)的基礎(chǔ)服務(wù)
Baas面向所有Web和移動(dòng)應(yīng)用柠横,移動(dòng)互聯(lián)網(wǎng)規(guī)模巨大 -
與企業(yè)市場(chǎng)若即若離窃款,有巨大價(jià)值
BaaS將云服務(wù)和開(kāi)發(fā)者服務(wù)連接起來(lái),對(duì)個(gè)人免費(fèi)牍氛,對(duì)大中型企業(yè)用戶收費(fèi) -
與大數(shù)據(jù)相聯(lián)系晨继,只手掌握未來(lái)
BaaS特點(diǎn)是與開(kāi)發(fā)者共享用戶,通過(guò)API和SDK可以收集用戶行為數(shù)據(jù)搬俊。結(jié)合大數(shù)據(jù)的商業(yè)智能化紊扬,將產(chǎn)生巨大價(jià)值和數(shù)據(jù)壁壘。