摘要:我們的產(chǎn)品覆蓋了和,目前項(xiàng)目全都架在的云引擎之上。我們的方案是把業(yè)務(wù)代碼從中抽出來了,做成了移動(dòng)端,這樣業(yè)務(wù)能在和中共用,移動(dòng)端是基于的云引擎環(huán)境下開發(fā)的。在這個(gè)過程中,云引擎和都發(fā)揮了重要作用。
【玩轉(zhuǎn) LeanCloud 】活動(dòng)開發(fā)經(jīng)驗(yàn)分享:
作者:黃濤
大家好,我是 htoooth,在一家電商公司做 Node.js 開發(fā),愛折騰,喜歡追新語(yǔ)言,像 golang、elixir、clojure、人工智能和 python 都在我的關(guān)注之列。我有一個(gè)創(chuàng)業(yè)項(xiàng)目叫視網(wǎng)么,是個(gè)做 AR 的互動(dòng)營(yíng)銷平臺(tái),客戶使用我們的產(chǎn)品可以很方便地將 AR 技術(shù)集成到自己的業(yè)務(wù)中去。我們的產(chǎn)品覆蓋了 iOS、Android 和 Web,目前項(xiàng)目全都架在 LeanCloud 的云引擎之上。
LeanCloud 更勝一籌邂逅 LeanCloud 是在 2014 年。那時(shí)我們幾個(gè)創(chuàng)始人正打算啟動(dòng)項(xiàng)目,但缺后端人員,恰好我從博客中了解到了 AVOSCloud(后改名為 LeanCloud),了解下來感覺靠譜,就把它定為候選方案。當(dāng)時(shí)像這樣的 BaaS 平臺(tái)還是挺多的,我們跟另外幾家對(duì)比后發(fā)現(xiàn) LeanCloud 無論是功能、文檔,還是 demo 都比較滿足我們的需求,于是就決定選它。四年來我們開發(fā)了不少項(xiàng)目,雖然也經(jīng)歷過 LeanCloud 服務(wù)不穩(wěn)定的問題,但綜合評(píng)價(jià)下來,LeanCloud 還是比其他平臺(tái)更勝一籌,所以也一直沒換。最近一年來,我們的產(chǎn)品也有了客戶,對(duì)后臺(tái)業(yè)務(wù)要求系統(tǒng)穩(wěn)定和技術(shù)支持,于是我們?cè)?2016 年下半年購(gòu)買了 LeanCloud 付費(fèi)版。順便提下,我覺得 AVOSCloud 改名為 LeanCloud 很贊,更符合他們的產(chǎn)品定位。
由于項(xiàng)目需要,我們幾乎把 LeanCloud 各種功能和服務(wù)都用了個(gè)遍,比如云引擎、云函數(shù)、云緩存、云存儲(chǔ)、實(shí)時(shí)通信、統(tǒng)計(jì)分析、REST API、JavaScript / iOS / Android SDK 等等。每次他們推出新功能我們都會(huì)關(guān)注一下,說不定什么時(shí)候就能派上用場(chǎng)。下面我來聊聊具體的使用情況吧。
填補(bǔ)后端人員空缺,開發(fā)超省力項(xiàng)目啟動(dòng)時(shí)我們沒有后端開發(fā)人員,整個(gè)團(tuán)隊(duì)只有三個(gè)全職外加三個(gè)實(shí)習(xí)生,開發(fā)能力有限, 只能照顧到 Android 平臺(tái)。項(xiàng)目的方向是具備 LBS 地理定位功能的社交軟件,正好 LeanCloud 對(duì)聊天和地理定位支持得非常好;而且它還支持第三方登錄、密碼和短信多種登錄方式,這讓我們開發(fā)帳戶系統(tǒng)方便了好多,我們能省出更多時(shí)間專注在業(yè)務(wù)本身的邏輯和代碼上,然后數(shù)據(jù)都往云端一存,在沒寫任何后端代碼的情況下就把產(chǎn)品功能給完成了,當(dāng)時(shí)覺得開發(fā)真是太方便了有沒有~。
云引擎實(shí)現(xiàn)多端共用一套代碼Android 平臺(tái)搞定后,我們又來做 iOS 平臺(tái),于是就遇到了如下問題:
因?yàn)樗械臉I(yè)務(wù)都在 Android 中,iOS 必須要再寫一遍業(yè)務(wù)代碼;
新功能新需求來了之后,要分別在 Android 和 iOS 上實(shí)現(xiàn);
關(guān)鍵是業(yè)務(wù)出現(xiàn)了 bug,客戶端上不好修改。
我們的方案是把業(yè)務(wù)代碼從 Android 中抽出來了,做成了移動(dòng)端 API,這樣業(yè)務(wù)能在 Android 和 iOS 中共用,移動(dòng)端 API 是基于 LeanCloud 的云引擎 Node.js 環(huán)境下開發(fā)的。除此以外,我們的后臺(tái)管理系統(tǒng)使用了 Angular.js + LeanCloud JavaScript SDK,這樣也實(shí)現(xiàn)了對(duì)業(yè)務(wù)級(jí)的代碼復(fù)用。在這個(gè)過程中,云引擎和 Node.js 都發(fā)揮了重要作用。
應(yīng)用資源按需調(diào)配,搭建微服務(wù)架構(gòu)又過了一段時(shí)間,我們對(duì)產(chǎn)品和業(yè)務(wù)做了調(diào)整:
我們的產(chǎn)品線增加了 sdk,需要嵌入到客戶的應(yīng)用中,接口與我們自己的 app 保持獨(dú)立,并且有自己的用戶系統(tǒng);
app 集成自己的 SDK,用戶系統(tǒng)使用獨(dú)立的用戶系統(tǒng),跟 sdk 的用戶系統(tǒng)不一樣;
官網(wǎng) web 從原來的純靜態(tài)頁(yè)面變成了動(dòng)態(tài)網(wǎng)頁(yè),新增了多個(gè)欄目和博客,需要從數(shù)據(jù)庫(kù)中讀數(shù)據(jù);
后臺(tái)管理系統(tǒng) cms 變?yōu)?Vue.js + LeanCloud JavaScript SDK 的 SPA 應(yīng)用,新增了素材管理等多個(gè)功能。
可以看出我們對(duì) sdk、app、cms 和 web 的業(yè)務(wù)需求都不一樣,對(duì)資源的需求也不一樣,于是我們需要再一次調(diào)整我們的項(xiàng)目架構(gòu)——我們不再將每個(gè)應(yīng)用看作是一個(gè)獨(dú)立的整體,而是當(dāng)成一個(gè)計(jì)算單元和一個(gè)存儲(chǔ)單元的組合,這種分割意味著我們既可以多帶帶使用計(jì)算單元,也可以多帶帶使用存儲(chǔ)單元,或者兩者都使用,設(shè)計(jì)架構(gòu)也就變得更加靈活了,這樣做的好處是我們可以按項(xiàng)目劃分出哪些需要計(jì)算,哪些需要存儲(chǔ),哪些二者都需要,資源分配比較明確,壞處是應(yīng)用的數(shù)量增加了。
下圖是我們調(diào)整后的功能架構(gòu):
我們整個(gè)的應(yīng)用體系使用了 4 個(gè) LeanCloud 應(yīng)用,如上圖所示,cell1、cell2、cell3 和 cell4。它們各有各的功能側(cè)重點(diǎn):
cell1,是我們整個(gè)應(yīng)用的核心, 上面部暑了cms、cms API、mobile API,它的計(jì)算和存儲(chǔ)都至關(guān)重要;
cell2,給 app 用的,只儲(chǔ)存用戶信息。app 端集成了 LeanCloud SDK,只用了登錄、注冊(cè)和第三方登錄的功能,同時(shí) app 端還需要調(diào)用 SDK API;
cell3,web 服務(wù)器,數(shù)據(jù)源來自 cell1。因?yàn)檫€要做 SEO 需求,所以沒有用 SPA 應(yīng)用,而是類似的前后端分離,cell1 提供數(shù)據(jù)接口,cell3 進(jìn)行模板渲染;
cell4,用來做靜態(tài)資源服務(wù)器,存儲(chǔ) css、js、圖片或較大的視頻文件;
cell3 和 cell4 給官網(wǎng)使用。
由于 cell1 承載功能較多,上面的數(shù)據(jù)也至關(guān)重要,所以我們買了收費(fèi)版本來保證穩(wěn)定性。cell2、cell3、cell4 均對(duì)穩(wěn)定性沒有要求,而且請(qǐng)求量也不是很大,所以還用的是開發(fā)版。我們的開發(fā)、測(cè)試和灰度環(huán)境也都是按照業(yè)務(wù)的重要性來做出選擇的。這樣算來,我們通過 8 個(gè) LeanCloud 應(yīng)用的配合與協(xié)作來支撐我們項(xiàng)目的全部架構(gòu),而且我們沒有做任何負(fù)載平衡的工作,全部都依靠 LeanCloud。
我們未來的計(jì)劃是等使用量上來之后,會(huì)把 mobile API、cms API、cms 都分出去成為一個(gè)多帶帶的應(yīng)用,再做一個(gè) ApiGateway 進(jìn)行接口的管理工作,也就是未來可能我們的應(yīng)用數(shù)量會(huì)超過 10 個(gè)。這么多應(yīng)用,如果用傳統(tǒng)方式來管理至少要三四個(gè)人,而用 LeanCloud 我們實(shí)際上只用一個(gè)兼職人員就能處理,真要感謝 LeanCloud 的幫助。
期待的新功能1.SDK 增加更多語(yǔ)種,如 golang;
2.開放如請(qǐng)求、CPU 等數(shù)據(jù)監(jiān)控接口的;
3.開放如新建應(yīng)用、加入應(yīng)用等運(yùn)維接口;
4.增加應(yīng)用集群組網(wǎng)的能力,如多個(gè)應(yīng)用變成一個(gè)集群;
5.開放更底層的功能,如網(wǎng)絡(luò)四層 TCP/IP 功能;
6.支持機(jī)器學(xué)習(xí)和人功智能,如 tensorflow、gpu;
7.提供更加高效的開發(fā)環(huán)境,如 IDE 的集成插件、命令行等;
8.提供更好的打包開發(fā)部署環(huán)境,如 oschina 的 gitee、LeanCloud、七牛9.整合一體化方案(這樣一來會(huì)方便好多)。
LeanCloud 在基礎(chǔ)平臺(tái)和基礎(chǔ)應(yīng)用上的功能點(diǎn)太多了,用一篇文章可說不完,總之對(duì)于一個(gè)創(chuàng)業(yè)團(tuán)隊(duì)來說,LeanCloud 為低成本開發(fā)提供了許多有利條件,我覺得對(duì)得起「lean」這個(gè)稱號(hào),最后祝愿 LeanCloud 發(fā)展得越來越好!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19663.html
摘要:夏華夏先生以美團(tuán)發(fā)展的五個(gè)階段為演講主線,分別介紹每個(gè)階段中所遇到的問題及解決方案。在夏華夏先生的分享之后,第五屆開幕式圓滿結(jié)束,他山之石可以攻玉是的宗旨,我們希望通過優(yōu)秀案例的分享傳播更多的經(jīng)驗(yàn)。 showImg(https://segmentfault.com/img/bVHgPK?w=629&h=418);(第五屆TOP100summit開幕式現(xiàn)場(chǎng)) 12月09日-12日,由ms...
摘要:夏華夏先生以美團(tuán)發(fā)展的五個(gè)階段為演講主線,分別介紹每個(gè)階段中所遇到的問題及解決方案。在夏華夏先生的分享之后,第五屆開幕式圓滿結(jié)束,他山之石可以攻玉是的宗旨,我們希望通過優(yōu)秀案例的分享傳播更多的經(jīng)驗(yàn)。 showImg(https://segmentfault.com/img/bVHgPK?w=629&h=418);(第五屆TOP100summit開幕式現(xiàn)場(chǎng)) 12月09日-12日,由ms...
摘要:你應(yīng)當(dāng)了解的位牛人編譯李雋龍。擁有四項(xiàng)發(fā)明專利,據(jù)稱他的凈資產(chǎn)值高達(dá)億美元。年月日,在其博客上宣布調(diào)離安卓部門并將承擔(dān)谷歌公司新的項(xiàng)目。年月日,通知執(zhí)行委員會(huì)他將不再參選。后來,又重新當(dāng)選了理事會(huì)的全權(quán)代表。 Java領(lǐng)域有很多著名的人物,他們?yōu)镴ava社區(qū)編寫框架、產(chǎn)品、工具或撰寫書籍改變了Java編程的方式。本文是《最受歡迎的8位Java牛人》的2.0版本。 ChangLo...
摘要:快速增長(zhǎng)的服務(wù)器,作為的官方默認(rèn)支持和等開源技術(shù)的云原生計(jì)算基金會(huì)今天宣布,在去年畢業(yè)的和之后,是年第一個(gè)畢業(yè)的項(xiàng)目。年中國(guó)論壇提案征集現(xiàn)已開放論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對(duì)面進(jìn)行交流合作。 快速增長(zhǎng)的DNS服務(wù)器,作為Kubernetes的官方默認(rèn)DNS showImg(https://segmentfault.com/img/bVbnLgj?w=4002&h=2323);...
閱讀 2094·2021-11-24 10:34
閱讀 3067·2021-11-22 11:58
閱讀 3726·2021-09-28 09:35
閱讀 1739·2019-08-30 15:53
閱讀 2791·2019-08-30 14:11
閱讀 1566·2019-08-29 17:31
閱讀 556·2019-08-26 13:53
閱讀 2153·2019-08-26 13:45