BaaS后端即服务 - 概念篇
摘要:?什么是BaaS? BaaS(Backend as a Service)是一種新型的云服務(wù),旨在為移動和Web應(yīng)用提供后端云服務(wù),包括云端數(shù)據(jù)/文件存儲、賬戶管理、消息推送、社交媒體整合等。BaaS是垂直領(lǐng)域的云服務(wù),隨著移動互聯(lián)網(wǎng)的持續(xù)火熱,BaaS也受到越來越多的開發(fā)者的親睞。它作為應(yīng)用
什么是BaaS?
BaaS(Backend as a Service)是一種新型的云服務(wù),旨在為移動和Web應(yīng)用提供后端云服務(wù),包括云端數(shù)據(jù)/文件存儲、賬戶管理、消息推送、社交媒體整合等。BaaS是垂直領(lǐng)域的云服務(wù),隨著移動互聯(lián)網(wǎng)的持續(xù)火熱,BaaS也受到越來越多的開發(fā)者的親睞。它作為應(yīng)用開發(fā)的新模型,可以降低開發(fā)者成本,讓開發(fā)者只需專注于具體的開發(fā)工作。
可以說BaaS是誕生于移動互聯(lián)網(wǎng),為了加速移動應(yīng)用開發(fā)和降低成本而形成的開發(fā)架構(gòu)。BaaS可以帶來后端能力的服務(wù)化,服務(wù)化也為后端能力優(yōu)化管理帶來了可能,這些能力通過服務(wù)開發(fā)者而誕生,重復(fù)的建設(shè)和規(guī)劃會在初期就得到避免。 開發(fā)者通過使用這些服務(wù),實現(xiàn)自己的業(yè)務(wù)功能的同時,也會對服務(wù)的能力進(jìn)一步提出要求,促進(jìn)后端服務(wù)的發(fā)展。
BaaS的發(fā)展
我們很熟悉IaaS, PaaS和SaaS,這些也是云計算發(fā)展的經(jīng)歷階段,
IaaS, Infrastructure as a Service: 基礎(chǔ)設(shè)施的服務(wù)化,誕生里AWS,阿里云等 PaaS, Platform as a Service: 開發(fā)平臺的服務(wù)化,誕生了Google APP Engine,阿里云,百度開放平臺,騰訊開發(fā)平臺,sina開發(fā)平臺等。 SaaS,Software as a Service, 軟件的服務(wù)化,如微軟的Office 365. BaaS, Backend as a Service ,后端的服務(wù)化。BaaS是在PaaS和SaaS之間,為了滿足移動互聯(lián)網(wǎng)快速發(fā)展的需要,將后端的能力以服務(wù)形式提供,是在PaaS平臺開發(fā)能力的基礎(chǔ)上,用SaaS的思路,將后端能力服務(wù)化,讓開發(fā)者在此基礎(chǔ)上開發(fā)自己的Software解決方案。
BaaS是PaaS進(jìn)一步發(fā)展
BaaS也是移動中間件的替代品(或者說備選方案),它使用統(tǒng)一的API和SDK來連接移動應(yīng)用到后端云存儲,傳統(tǒng)的移動中間件通過本地的物理服務(wù)把后端服務(wù)集成到應(yīng)用中。而BaaS通過云來集成后端服務(wù)。中間件和BaaS的最大不同是它們是否包含或者提供云的服務(wù),BaaS可以說是PaaS平臺在移動垂直領(lǐng)域的延伸,更可以說是移動中間件和云的融合。
BaaS簡化了應(yīng)用開發(fā)流程,而PaaS簡化了應(yīng)用部署流程。PaaS是一個執(zhí)行代碼以及管理應(yīng)用運行環(huán)境的開發(fā)平臺,用戶通過SVN或者Git之類的代碼版本管理工具與平臺交互,對于開發(fā)者來說,PaaS就像是一個容器,輸入是代碼和配置文件,輸出是一個可訪問應(yīng)用的URL。而BaaS平臺進(jìn)一步將用戶需求進(jìn)行了抽象,比如用戶管理,開發(fā)者希望創(chuàng)建用戶數(shù)據(jù)庫表(模型)后,客戶端就可以通過Restful接口直接操作對應(yīng)的模型,所有的操作都可以被抽象為CRUD。之前,開發(fā)者需要創(chuàng)建表、寫接口、寫校驗,而在BaaS平臺中,開發(fā)者只需要定義模型,平臺就會自動生成對應(yīng)的接口,這可以讓開發(fā)者更加專注具體的客戶端代碼。
BaaS是開發(fā)架構(gòu)的升級,從J2EE中間件時代走入云計算服務(wù)時代
J2EE Stack -> BaaS
從web時代興起以來(web 1.0, web 2.0),我們就進(jìn)入J2EE時代一直到現(xiàn)在,我的的開發(fā)架構(gòu)基本在J2EE各種規(guī)范的覆蓋下, J2EE通過定義一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議,對開發(fā)基于Web的多層應(yīng)用提供了技術(shù)棧支持:
1. JDBC(Java Database Connectivity),JDBC API為訪問不同數(shù)據(jù)庫提供了統(tǒng)一的路徑
2. JNDI(Java Name and Directory Interface),遠(yuǎn)程方法請求,RMI協(xié)議調(diào)用遠(yuǎn)程對象上的方法.它使用了序列化的方式在客戶端和服務(wù)器之間傳遞數(shù)據(jù)
3. Java Servlet, web服務(wù)器的功能擴展
4. JMS, 面向?qū)ο笙⒌闹虚g件相互通信的應(yīng)用程序接口
5. ...
我們的服務(wù)器端開發(fā)由此也進(jìn)入中間件時代,利用這些中間件提供的功能,規(guī)范來滿足商業(yè)需求。J2EE,中間件的發(fā)展也最后形成了云架構(gòu)時代的PaaS基礎(chǔ),這些中間件,服務(wù)器等形成一個開發(fā)平臺,利用各種規(guī)范和協(xié)議來提供開發(fā)者全面的能力,?
這也是我們目前最熟悉和習(xí)以為常的開發(fā)架構(gòu)。我們會一度認(rèn)為,功能太強大豐富了,已經(jīng)發(fā)展到足夠好了,剩下的是需要開發(fā)者努力去掌握各種技術(shù)細(xì)節(jié)就好。 當(dāng)我們有這種想法的時候,其實也代表這種架構(gòu)發(fā)展到了瓶頸期。
這種開發(fā)架構(gòu)在我們隊開發(fā)效率和成本的追求下,更逐漸暴露出教多的缺點,他對開發(fā)人員的技術(shù)素質(zhì)要求較高,同時對開發(fā)效率的提升設(shè)置了一定的壁壘。當(dāng)我們想進(jìn)一步追究開發(fā)效率和減低開發(fā)成本時,我們就需要對這種開發(fā)架構(gòu)做進(jìn)一步的發(fā)展升級,同時隨著云計算時代的到來,也為開發(fā)技術(shù)架構(gòu)的升級提供了基礎(chǔ)。
BaaS如何提高開發(fā)效率和降低開發(fā)成本
讓我們想想我們開發(fā)一個典型web業(yè)務(wù)系統(tǒng)需要做的事情。
這種開發(fā)一般分為后端開發(fā)和前端開發(fā), 其中后端需要負(fù)責(zé)數(shù)據(jù)存儲,檢索,集成,業(yè)務(wù)邏輯,認(rèn)證授權(quán)等一些列功能,想象中可以很簡單:
其實這更接近真相:
然而這些還不是全部:
做一個互聯(lián)網(wǎng)的高可靠高并發(fā)高性能的web系統(tǒng),開發(fā)的能力可能需要長時間的積累和付出巨大的資源成本。
當(dāng)開發(fā)了越來越多的類似系統(tǒng)后,我們就會感覺到,除了具體業(yè)務(wù)邏輯外,我們在做很多重復(fù)類似的工作。如果有個界面給我們,讓我們選擇輸入我們想要的功能就能一鍵輸出最后的API,世界將會美好很多。
而云計算的發(fā)展也讓我們對這種設(shè)想變得原來越可能,?
我們在阿里云這樣的IaaS上,輸入我們需要的服務(wù)器數(shù)目和配置,點擊后,我們就把服務(wù)器部署解決了。
當(dāng)我們在阿里云的PaaS上選擇RDS,OSS,消息這種中間件服務(wù)時,我們需要的存儲,消息等能力也可以說一鍵解決了。
那么更進(jìn)一步期望, 我們很多的共用服務(wù),比如認(rèn)證和授權(quán),消息推送,數(shù)據(jù)建模,地圖,語音等是否也能夠一鍵解決就好了,阿里云提供的功能還不能到這一階段。
而提供這些服務(wù)的方式就是BaaS,后端即服務(wù)。將后端的能力打包以服務(wù)的方式向外提供。
將后端能力形成平臺,構(gòu)建新的開發(fā)架構(gòu):
這就是BaaS架構(gòu)的公式:
BaaS = IaaS + PaaS + APIs + SDKs
利用IaaS , PaaS ,API以及SDK基礎(chǔ), 把后端能力以服務(wù)的形式提供出來。
對于開發(fā)者來說,只需要利用API或者SDK,就可以完成對應(yīng)的功能,從而可以只專注于本身業(yè)務(wù)邏輯的開發(fā)。 在這種開發(fā)架構(gòu)下, 業(yè)務(wù)系統(tǒng)的開發(fā)將大大提速,沒有后端復(fù)雜的開發(fā),維護(hù),只需要利用以后的服務(wù)完成業(yè)務(wù)邏輯的開發(fā)。 對開發(fā)人員的技術(shù)要求也極大降低。
BaaS業(yè)界生態(tài)
BaaS在2012年以來在業(yè)界發(fā)展迅速,
2013年4月,Facebook收購Parse;2014年6月,蘋果在一年一度的WWDC上發(fā)布了CloudKit;等到了2014年10月份,Google也出手收購了Firebase。
Parse,Firebase等是BaaS創(chuàng)業(yè)公司里的佼佼者,三大互聯(lián)網(wǎng)公司最近2年在BaaS里的動作也反應(yīng)了他們對BaaS的重視。
Facebook期望結(jié)束應(yīng)用之間的信息孤島狀態(tài),讓不同應(yīng)用之間的內(nèi)容能夠互通和無縫跳轉(zhuǎn),于是就發(fā)布了一個名為AppLinks“協(xié)議”,但這個協(xié)議背后則需要Parse這樣的后端服務(wù)提供數(shù)據(jù)存儲、計算能力、Push通知等一系列技術(shù)支撐。
蘋果來說,CloudKit可以提供完善且有彈性的后端解決方案,幫助開發(fā)者減輕編寫服務(wù)器代碼和維護(hù)服務(wù)器的需求。很明顯,蘋果此舉也是為了降低開發(fā)iOS應(yīng)用的成本,維護(hù)iOS生態(tài)圈的繁榮。
Firebase創(chuàng)始人James Tamplin在博客上說的那樣,Firebase和Google Cloud Platform可以很好的互補。而且在蘋果為iOS開發(fā)者提供了CloudKit之后,Google或許也想能有類似服務(wù)來為Android生態(tài)圈的開發(fā)者們提供便利。
在下篇《BaaS后端即服務(wù) - 分析篇》中,我們會對這些主流BaaS平臺的功能和架構(gòu)做詳細(xì)對比分析,研究其發(fā)展趨勢。
BaaS的價值
BaaS可以很好的解決技術(shù)和業(yè)務(wù)之間的溝壑,通過BaaS,業(yè)務(wù)開發(fā)團隊就像是外界的創(chuàng)業(yè)公司,他們的核心競爭力是對業(yè)務(wù)的理解和實現(xiàn),讓他們以用低成本的方式快速做出能滿足自身需求的應(yīng)用,然后把主要的資源都投入到擴展核心競爭力上面。
BaaS平臺本身可以以產(chǎn)品的方式構(gòu)建,將PaaS的能力升華成對開發(fā)者更加簡單易用的BaaS服務(wù)。 平臺獨立運維,部署,提供高并發(fā)高性能高可靠的服務(wù)能力。
BaaS平臺可以作為云產(chǎn)品為中小型開發(fā)者、創(chuàng)業(yè)團隊、企業(yè)和機構(gòu),提供各種BaaS的相關(guān)產(chǎn)品和服務(wù)。
簡單地說,Baas 是業(yè)務(wù)開發(fā)的后端業(yè)務(wù)邏輯解決方案的提供者。為個人開發(fā)者和創(chuàng)業(yè)團隊提供免費的公有云服務(wù),為企業(yè)提供私有云定制服務(wù)。BaaS的主旨是為開發(fā)者免去后端開發(fā)和部署的煩惱,讓開發(fā)者無需購買服務(wù)器(IaaS),無需部署后端環(huán)境(PaaS),無需編寫后端代碼(BaaS),輕松修改業(yè)務(wù)邏輯(SDK和API),快速實現(xiàn)創(chuàng)意(Happy)。
同時,這些無需的背后意味著各種成本的降低,你不用去操心運維了,不用去學(xué)習(xí)各種中間件了,不用去擔(dān)心高并發(fā)穩(wěn)定性了,等等.... 所有的這些都變成了簡單的服務(wù)。
BaaS的想象空間
轉(zhuǎn)載于:https://www.cnblogs.com/printN/p/6827771.html
總結(jié)
以上是生活随笔為你收集整理的BaaS后端即服务 - 概念篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 频道管理,可拖动item
- 下一篇: shiro 角色与权限的解读