3年帮非,從工程師到創(chuàng)始人

【玩轉(zhuǎn) LeanCloud 】活動開發(fā)經(jīng)驗(yàn)分享:

作者:黃濤

大家好,我是 htoooth讹蘑,在一家電商公司做 Node.js 開發(fā)末盔,愛折騰,喜歡追新語言座慰,像 golang陨舱、elixir、clojure版仔、人工智能和 python 都在我的關(guān)注之列游盲。我有一個創(chuàng)業(yè)項(xiàng)目叫視網(wǎng)么,是個做 AR 的互動營銷平臺蛮粮,客戶使用我們的產(chǎn)品可以很方便地將 AR 技術(shù)集成到自己的業(yè)務(wù)中去益缎。我們的產(chǎn)品覆蓋了 iOS、Android 和 Web然想,目前項(xiàng)目全都架在 LeanCloud 的云引擎之上链峭。

LeanCloud 更勝一籌

邂逅 LeanCloud 是在 2014 年。那時我們幾個創(chuàng)始人正打算啟動項(xiàng)目又沾,但缺后端人員,恰好我從博客中了解到了 AVOSCloud(后改名為 LeanCloud)熙卡,了解下來感覺靠譜杖刷,就把它定為候選方案。當(dāng)時像這樣的 BaaS 平臺還是挺多的驳癌,我們跟另外幾家對比后發(fā)現(xiàn) LeanCloud 無論是功能滑燃、文檔,還是 demo 都比較滿足我們的需求颓鲜,于是就決定選它表窘。四年來我們開發(fā)了不少項(xiàng)目,雖然也經(jīng)歷過 LeanCloud 服務(wù)不穩(wěn)定的問題甜滨,但綜合評價(jià)下來乐严,LeanCloud 還是比其他平臺更勝一籌,所以也一直沒換衣摩。最近一年來昂验,我們的產(chǎn)品也有了客戶,對后臺業(yè)務(wù)要求系統(tǒng)穩(wěn)定和技術(shù)支持,于是我們在 2016 年下半年購買了 LeanCloud 付費(fèi)版既琴。順便提下占婉,我覺得 AVOSCloud 改名為 LeanCloud 很贊,更符合他們的產(chǎn)品定位甫恩。

由于項(xiàng)目需要逆济,我們幾乎把 LeanCloud 各種功能和服務(wù)都用了個遍,比如云引擎磺箕、云函數(shù)奖慌、云緩存、云存儲滞磺、實(shí)時通信升薯、統(tǒng)計(jì)分析、REST API击困、JavaScript / iOS / Android SDK 等等涎劈。每次他們推出新功能我們都會關(guān)注一下,說不定什么時候就能派上用場阅茶。下面我來聊聊具體的使用情況吧蛛枚。

填補(bǔ)后端人員空缺,開發(fā)超省力

項(xiàng)目啟動時我們沒有后端開發(fā)人員脸哀,整個團(tuán)隊(duì)只有三個全職外加三個實(shí)習(xí)生蹦浦,開發(fā)能力有限, 只能照顧到 Android 平臺撞蜂。項(xiàng)目的方向是具備 LBS 地理定位功能的社交軟件盲镶,正好 LeanCloud 對聊天和地理定位支持得非常好;而且它還支持第三方登錄蝌诡、密碼和短信多種登錄方式溉贿,這讓我們開發(fā)帳戶系統(tǒng)方便了好多,我們能省出更多時間專注在業(yè)務(wù)本身的邏輯和代碼上浦旱,然后數(shù)據(jù)都往云端一存宇色,在沒寫任何后端代碼的情況下就把產(chǎn)品功能給完成了,當(dāng)時覺得開發(fā)真是太方便了有沒有~颁湖。

云引擎實(shí)現(xiàn)多端共用一套代碼

Android 平臺搞定后宣蠕,我們又來做 iOS 平臺,于是就遇到了如下問題:

  • 因?yàn)樗械臉I(yè)務(wù)都在 Android 中甥捺,iOS 必須要再寫一遍業(yè)務(wù)代碼;
  • 新功能新需求來了之后抢蚀,要分別在 Android 和 iOS 上實(shí)現(xiàn);
  • 關(guān)鍵是業(yè)務(wù)出現(xiàn)了 bug镰禾,客戶端上不好修改思币。

我們的方案是把業(yè)務(wù)代碼從 Android 中抽出來了鹿响,做成了移動端 API,這樣業(yè)務(wù)能在 Android 和 iOS 中共用谷饿,移動端 API 是基于 LeanCloud 的云引擎 Node.js 環(huán)境下開發(fā)的惶我。除此以外,我們的后臺管理系統(tǒng)使用了 Angular.js + LeanCloud JavaScript SDK博投,這樣也實(shí)現(xiàn)了對業(yè)務(wù)級的代碼復(fù)用绸贡。在這個過程中,云引擎和 Node.js 都發(fā)揮了重要作用毅哗。

應(yīng)用資源按需調(diào)配听怕,搭建微服務(wù)架構(gòu)

又過了一段時間,我們對產(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)頁面變成了動態(tài)網(wǎng)頁疏旨,新增了多個欄目和博客,需要從數(shù)據(jù)庫中讀數(shù)據(jù)扎酷;
  • 后臺管理系統(tǒng) cms 變?yōu)?Vue.js + LeanCloud JavaScript SDK 的 SPA 應(yīng)用檐涝,新增了素材管理等多個功能。

可以看出我們對 sdk法挨、app谁榜、cms 和 web 的業(yè)務(wù)需求都不一樣,對資源的需求也不一樣凡纳,于是我們需要再一次調(diào)整我們的項(xiàng)目架構(gòu)——我們不再將每個應(yīng)用看作是一個獨(dú)立的整體惰爬,而是當(dāng)成一個計(jì)算單元和一個存儲單元的組合,這種分割意味著我們既可以單獨(dú)使用計(jì)算單元惫企,也可以單獨(dú)使用存儲單元,或者兩者都使用陵叽,設(shè)計(jì)架構(gòu)也就變得更加靈活了狞尔,這樣做的好處是我們可以按項(xiàng)目劃分出哪些需要計(jì)算,哪些需要存儲巩掺,哪些二者都需要偏序,資源分配比較明確,壞處是應(yīng)用的數(shù)量增加了胖替。

下圖是我們調(diào)整后的功能架構(gòu):

瘋狂.png

我們整個的應(yīng)用體系使用了 4 個 LeanCloud 應(yīng)用研儒,如上圖所示豫缨,cell1、cell2端朵、cell3 和 cell4好芭。它們各有各的功能側(cè)重點(diǎn):

  • cell1,是我們整個應(yīng)用的核心冲呢, 上面部暑了cms舍败、cms API、mobile API敬拓,它的計(jì)算和存儲都至關(guān)重要邻薯;
  • cell2,給 app 用的乘凸,只儲存用戶信息厕诡。app 端集成了 LeanCloud SDK,只用了登錄营勤、注冊和第三方登錄的功能灵嫌,同時 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ù)器量瓜,存儲 css司恳、js、圖片或較大的視頻文件绍傲;
  • cell3 和 cell4 給官網(wǎng)使用扔傅。

由于 cell1 承載功能較多,上面的數(shù)據(jù)也至關(guān)重要烫饼,所以我們買了收費(fèi)版本來保證穩(wěn)定性猎塞。cell2、cell3杠纵、cell4 均對穩(wěn)定性沒有要求荠耽,而且請求量也不是很大,所以還用的是開發(fā)版比藻。我們的開發(fā)铝量、測試和灰度環(huán)境也都是按照業(yè)務(wù)的重要性來做出選擇的倘屹。這樣算來,我們通過 8 個 LeanCloud 應(yīng)用的配合與協(xié)作來支撐我們項(xiàng)目的全部架構(gòu)慢叨,而且我們沒有做任何負(fù)載平衡的工作纽匙,全部都依靠 LeanCloud。

我們未來的計(jì)劃是等使用量上來之后插爹,會把 mobile API哄辣、cms API、cms 都分出去成為一個單獨(dú)的應(yīng)用赠尾,再做一個 ApiGateway 進(jìn)行接口的管理工作力穗,也就是未來可能我們的應(yīng)用數(shù)量會超過 10 個。這么多應(yīng)用气嫁,如果用傳統(tǒng)方式來管理至少要三四個人当窗,而用 LeanCloud 我們實(shí)際上只用一個兼職人員就能處理,真要感謝 LeanCloud 的幫助寸宵。

期待的新功能

1.SDK 增加更多語種崖面,如 golang;
2.開放如請求梯影、CPU 等數(shù)據(jù)監(jiān)控接口的巫员;
3.開放如新建應(yīng)用、加入應(yīng)用等運(yùn)維接口甲棍;
4.增加應(yīng)用集群組網(wǎng)的能力简识,如多個應(yīng)用變成一個集群;
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.整合一體化方案(這樣一來會方便好多)。

LeanCloud 在基礎(chǔ)平臺和基礎(chǔ)應(yīng)用上的功能點(diǎn)太多了脂矫,用一篇文章可說不完,總之對于一個創(chuàng)業(yè)團(tuán)隊(duì)來說霉晕,LeanCloud 為低成本開發(fā)提供了許多有利條件庭再,我覺得對得起「lean」這個稱號捞奕,最后祝愿 LeanCloud 發(fā)展得越來越好!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拄轻,一起剝皮案震驚了整個濱河市颅围,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恨搓,老刑警劉巖院促,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異斧抱,居然都是意外死亡常拓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門辉浦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弄抬,“玉大人,你說我怎么就攤上這事宪郊〉嗨。” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵弛槐,是天一觀的道長懊亡。 經(jīng)常有香客問我,道長乎串,這世上最難降的妖魔是什么店枣? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮灌闺,結(jié)果婚禮上艰争,老公的妹妹穿的比我還像新娘。我一直安慰自己桂对,他們只是感情好甩卓,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蕉斜,像睡著了一般逾柿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宅此,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天机错,我揣著相機(jī)與錄音,去河邊找鬼父腕。 笑死弱匪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的璧亮。 我是一名探鬼主播萧诫,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼斥难,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帘饶?” 一聲冷哼從身側(cè)響起哑诊,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎及刻,沒想到半個月后镀裤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缴饭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年暑劝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茴扁。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡铃岔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出峭火,到底是詐尸還是另有隱情毁习,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布卖丸,位于F島的核電站纺且,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏稍浆。R本人自食惡果不足惜载碌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衅枫。 院中可真熱鬧嫁艇,春花似錦、人聲如沸弦撩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽益楼。三九已至猾漫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間感凤,已是汗流浹背悯周。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陪竿,地道東北人禽翼。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闰挡。 傳聞我的和親對象是個殘疾皇子仇矾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,283評論 25 707
  • 0.考前準(zhǔn)備 1.開門2.調(diào)整座位3.上車4.調(diào)整座位5.系安全帶6.檢查身份證號碼和姓名7.雙閃關(guān)閉8.手剎拉起...
    iOS的Developer閱讀 247評論 0 0
  • 下完手術(shù)感覺累癱了,還跑去約關(guān)老師解总,倆傻子拿著傘不打傘,美其名約姐仅,雨中漫步花枫,結(jié)果被淋濕了
    lemontree068閱讀 137評論 0 0