不是很了解 LeanCloud(LeanCloud)的開(kāi)發(fā)者經(jīng)常會(huì)問(wèn)「LeanCloud 與已有的很多云服務(wù)有什么區(qū)別呢碍扔?」下面我們就以國(guó)內(nèi)比較有代表性的阿里云為例,跟 LeanCloud 做下對(duì)比。
產(chǎn)品的區(qū)別
進(jìn)入阿里云網(wǎng)站可以看到阿里云的產(chǎn)品介紹娄蔼。產(chǎn)品列表有彈性計(jì)算虑粥、數(shù)據(jù)庫(kù)、存儲(chǔ)與 CDN失乾、網(wǎng)絡(luò)常熙、大規(guī)模計(jì)算、云盾碱茁、管理與監(jiān)控裸卫、應(yīng)用服務(wù)、互聯(lián)網(wǎng)中間件纽竣、移動(dòng)服務(wù)墓贿、域名與網(wǎng)站等,每個(gè)選項(xiàng)下面又有非常多的子產(chǎn)品列表蜓氨,提供的服務(wù)種類(lèi)繁多聋袋。個(gè)人感覺(jué)幾乎開(kāi)發(fā)中需要使用的服務(wù)器產(chǎn)品,阿里云應(yīng)該都提供了语盈。這些產(chǎn)品更偏向于較底層的服務(wù)舱馅,用戶要想使用起來(lái)需要具備一定的能力。
LeanCloud 則完全不同刀荒。它提供了四項(xiàng)產(chǎn)品代嗤,分別是 LeanStorage(數(shù)據(jù)棘钞、文件存儲(chǔ)及云引擎)、LeanMessage(短信干毅、推送及實(shí)時(shí)通訊服務(wù))宜猜、LeanAnalytics(統(tǒng)計(jì)分析服務(wù))、LeanModules(各種其他通用組件)硝逢∫逃担看起來(lái)很精簡(jiǎn)卻有些抽象,那這些產(chǎn)品具體又能滿足什么需求呢渠鸽?
概念上的區(qū)別
阿里云提供的是類(lèi)似于 AWS(亞馬遜的云服務(wù))一樣的傳統(tǒng)云服務(wù)叫乌。使用了阿里云你就不用再去操心那些與硬件和底層運(yùn)維相關(guān)的事情,比如硬盤(pán)損壞徽缚、主機(jī)托管憨奸、服務(wù)器配置網(wǎng)絡(luò)等等。
但如果想要開(kāi)發(fā)一個(gè)自己的 App凿试,你仍然需要在阿里云上購(gòu)買(mǎi)機(jī)器排宰,選擇部署到哪個(gè)機(jī)房,還要購(gòu)買(mǎi)數(shù)據(jù)庫(kù)那婉,選擇數(shù)據(jù)具體是怎樣的規(guī)格板甘,然后還要對(duì)這臺(tái)機(jī)器進(jìn)行完整的配置。雖然比沒(méi)有云服務(wù)的日子已經(jīng)輕松了許多详炬,但這些操作仍然需要一個(gè)專(zhuān)業(yè)的工程師才能很好地完成盐类。
而使用 LeanCloud 用戶卻不需要操心這些事情,可以說(shuō)基本上不用考慮服務(wù)器的細(xì)節(jié)痕寓。
LeanCloud 提供的是 BaaS 服務(wù)(Backend as a Service 后端即服務(wù))傲醉,又被稱(chēng)為云服務(wù) 2.0。簡(jiǎn)而言之呻率,云服務(wù) 1.0 解決的是不再讓你擔(dān)心服務(wù)器,而 BaaS 的目標(biāo)是幫你解決全部服務(wù)器運(yùn)維呻引,甚至是部分后端業(yè)務(wù)邏輯礼仗。那 LeanCloud 究竟是怎么做到的呢?回答這個(gè)問(wèn)題之前逻悠,我們看下一個(gè) App 一般都是什么樣子元践。
以 LeanCloud 的用戶「懂球帝」為參考,不論什么產(chǎn)品基本上都需要一套賬號(hào)系統(tǒng)童谒,目前較通用的做法是使用手機(jī)號(hào)碼注冊(cè)单旁,發(fā)送短信驗(yàn)證;基于這個(gè)賬號(hào)還要存儲(chǔ)一些數(shù)據(jù)項(xiàng)饥伊,如昵稱(chēng)象浑、頭像等信息蔫饰,再到真正的主業(yè)務(wù)邏輯,需要通過(guò)服務(wù)器基于某個(gè)邏輯運(yùn)算出結(jié)果交給客戶端做展示愉豺。
那么我們?cè)倏紤]一個(gè)問(wèn)題篓吁,為什么我們每次做一個(gè)產(chǎn)品都要反反復(fù)復(fù)地開(kāi)發(fā)這些差不多一樣的邏輯呢?比如賬號(hào)系統(tǒng)蚪拦、數(shù)據(jù)存儲(chǔ)杖剪、短信驗(yàn)證、郵件驗(yàn)證驰贷、推送服務(wù)甚至是即時(shí)聊天盛嘿,有沒(méi)有辦法讓這些東西拿來(lái)就用,讓自己能夠最快速地投入開(kāi)發(fā)呢括袒?當(dāng)然有辦法次兆,這就是 LeanCloud 所做的事情。
具體使用 LeanCloud
來(lái)舉個(gè)具體例子箱熬。在 LeanCloud 中想要實(shí)現(xiàn)一套賬號(hào)系統(tǒng)共分為三步:注冊(cè)賬號(hào)类垦、創(chuàng)建一個(gè)應(yīng)用、下載對(duì)應(yīng)的 SDK城须。就這三步蚤认?難道不用寫(xiě)代碼嗎?是的糕伐,不用寫(xiě)代碼你其實(shí)已經(jīng)擁有了一套支持 ACL(訪問(wèn)權(quán)限控制)砰琢、支持短信驗(yàn)證注冊(cè)、支持郵件注冊(cè)這樣具備完整安全體系的賬號(hào)系統(tǒng)良瞧,客戶端工程師只需直接使用即可陪汽。例如,Web 前端通過(guò) JavaScript SDK 在瀏覽器使用賬戶系統(tǒng)褥蚯,具體代碼如下:
// 創(chuàng)建一個(gè)實(shí)例
const user = new AV.User();
// 設(shè)置用戶名
user.set('username', 'wangxiao');
// 設(shè)置密碼
user.set('password', 123456789);
// 注冊(cè)
user.signUp().then(user => {
// 注冊(cè)成功
}, error => {
// 注冊(cè)失敗
});
再如經(jīng)常被使用的短信驗(yàn)證功能挚冤,你不需要去找服務(wù)端工程師去開(kāi)發(fā)一個(gè)專(zhuān)用接口,而是直接在瀏覽器中調(diào)用 JavaScript SDK 的方法(支持模板來(lái)定制短信內(nèi)容)赞庶,具體代碼如下:
// 發(fā)送手機(jī)驗(yàn)證碼
AV.Cloud.requestSmsCode({
mobilePhoneNumber: '182xxxx5548'
}).then(() => {
// 發(fā)送成功
}, error => {
// 發(fā)送失敗
});
// 校驗(yàn)驗(yàn)證碼
AV.Cloud.verifySmsCode('1234', '182xxxx5548')
.then(() => {
// 驗(yàn)證成功
}, error => {
// 驗(yàn)證失敗
});
// 短信模板
AV.Cloud.requestSmsCode({
mobilePhoneNumber: '182xxxx5548',
template: 'Template_Name',
ttttName: '自定義模板變量名'
}).then(() => {
// 發(fā)送成功
}, error => {
// 發(fā)送失敗
});
短信驗(yàn)證僅僅是 LeanCloud 所開(kāi)放的眾多功能中的一項(xiàng)训挡,你還可以使用 SDK 輕松實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)、文件存儲(chǔ)(CDN)歧强、推送澜薄、即時(shí)聊天等實(shí)用功能。如此以來(lái)你的開(kāi)發(fā)效率會(huì)大幅提升摊册,服務(wù)器端對(duì)于你來(lái)說(shuō)完全是透明的肤京,這樣就能把所有精力集中到研發(fā)核心產(chǎn)品上去,而后續(xù)的數(shù)據(jù)運(yùn)營(yíng)和管理工作可以直接在 LeanCloud 的控制臺(tái)中進(jìn)行茅特,甚至在初期你都不需要給運(yùn)營(yíng)人員編寫(xiě)一個(gè)對(duì)應(yīng)的管理后臺(tái)忘分。
成本的區(qū)別
選擇傳統(tǒng)的云服務(wù)棋枕,你可能需要更多地去了解服務(wù)端的結(jié)構(gòu),要綜合考慮在云服務(wù)上搭建出一套自己的系統(tǒng)所付出的成本饭庞,還需要找到合適的工程師去維護(hù)這些服務(wù)戒悠,找到后端工程師來(lái)開(kāi)發(fā)服務(wù)端很多通用的業(yè)務(wù)邏輯。
如果使用 LeanCloud 這些事情都不用去考慮舟山,直接使用相應(yīng)的服務(wù)即可绸狐。同時(shí) LeanCloud 所提供的服務(wù)均按照使用量計(jì)費(fèi),并提供了一定額度的免費(fèi)使用量累盗,在初期用戶量少的時(shí)候基本不會(huì)產(chǎn)生什么費(fèi)用寒矿,只有當(dāng)用戶量增長(zhǎng)到一定量級(jí)時(shí)才會(huì)產(chǎn)生相應(yīng)的費(fèi)用∪粽總之使用 LeanCloud 不僅僅省去了后期運(yùn)維的成本符相,還減少了后端工程師的工作量,加速產(chǎn)品迭代蠢琳。