【玩轉 LeanCloud 】活動開發經驗分享:css
做者:黃濤python
你們好,我是 htoooth,在一家電商公司作 Node.js 開發,愛折騰,喜歡追新語言,像 golang、elixir、clojure、人工智能和 python 都在個人關注之列。我有一個創業項目叫視網麼,是個作 AR 的互動營銷平臺,客戶使用咱們的產品能夠很方便地將 AR 技術集成到本身的業務中去。咱們的產品覆蓋了 iOS、Android 和 Web,目前項目全都架在 LeanCloud 的雲引擎之上。git
邂逅 LeanCloud 是在 2014 年。那時咱們幾個創始人正打算啓動項目,但缺後端人員,剛好我從博客中瞭解到了 AVOSCloud(後更名爲 LeanCloud),瞭解下來感受靠譜,就把它定爲候選方案。當時像這樣的 BaaS 平臺仍是挺多的,咱們跟另外幾家對比後發現 LeanCloud 不管是功能、文檔,仍是 demo 都比較知足咱們的需求,因而就決定選它。四年來咱們開發了很多項目,雖然也經歷過 LeanCloud 服務不穩定的問題,但綜合評價下來,LeanCloud 仍是比其餘平臺更勝一籌,因此也一直沒換。最近一年來,咱們的產品也有了客戶,對後臺業務要求系統穩定和技術支持,因而咱們在 2016 年下半年購買了 LeanCloud 付費版。順便提下,我以爲 AVOSCloud 更名爲 LeanCloud 很贊,更符合他們的產品定位。golang
因爲項目須要,咱們幾乎把 LeanCloud 各類功能和服務都用了個遍,好比雲引擎、雲函數、雲緩存、雲存儲、實時通訊、統計分析、REST API、JavaScript / iOS / Android SDK 等等。每次他們推出新功能咱們都會關注一下,說不定何時就能派上用場。下面我來聊聊具體的使用狀況吧。web
項目啓動時咱們沒有後端開發人員,整個團隊只有三個全職外加三個實習生,開發能力有限, 只能照顧到 Android 平臺。項目的方向是具有 LBS 地理定位功能的社交軟件,正好 LeanCloud 對聊天和地理定位支持得很是好;並且它還支持第三方登陸、密碼和短信多種登陸方式,這讓咱們開發賬戶系統方便了好多,咱們能省出更多時間專一在業務自己的邏輯和代碼上,而後數據都往雲端一存,在沒寫任何後端代碼的狀況下就把產品功能給完成了,當時以爲開發真是太方便了有沒有~。數據庫
Android 平臺搞定後,咱們又來作 iOS 平臺,因而就遇到了以下問題:後端
咱們的方案是把業務代碼從 Android 中抽出來了,作成了移動端 API,這樣業務能在 Android 和 iOS 中共用,移動端 API 是基於 LeanCloud 的雲引擎 Node.js 環境下開發的。除此之外,咱們的後臺管理系統使用了 Angular.js + LeanCloud JavaScript SDK,這樣也實現了對業務級的代碼複用。在這個過程當中,雲引擎和 Node.js 都發揮了重要做用。緩存
又過了一段時間,咱們對產品和業務作了調整:服務器
能夠看出咱們對 sdk、app、cms 和 web 的業務需求都不同,對資源的需求也不同,因而咱們須要再一次調整咱們的項目架構——咱們再也不將每一個應用看做是一個獨立的總體,而是當成一個計算單元和一個存儲單元的組合,這種分割意味着咱們既能夠單獨使用計算單元,也能夠單獨使用存儲單元,或者二者都使用,設計架構也就變得更加靈活了,這樣作的好處是咱們能夠按項目劃分出哪些須要計算,哪些須要存儲,哪些兩者都須要,資源分配比較明確,壞處是應用的數量增長了。網絡
下圖是咱們調整後的功能架構:
咱們整個的應用體系使用了 4 個 LeanCloud 應用,如上圖所示,cell一、cell二、cell3 和 cell4。它們各有各的功能側重點:
因爲 cell1 承載功能較多,上面的數據也相當重要,因此咱們買了收費版原本保證穩定性。cell二、cell三、cell4 均對穩定性沒有要求,並且請求量也不是很大,因此還用的是開發版。咱們的開發、測試和灰度環境也都是按照業務的重要性來作出選擇的。這樣算來,咱們經過 8 個 LeanCloud 應用的配合與協做來支撐咱們項目的所有架構,並且咱們沒有作任何負載平衡的工做,所有都依靠 LeanCloud。
咱們將來的計劃是等使用量上來以後,會把 mobile API、cms API、cms 都分出去成爲一個單獨的應用,再作一個 ApiGateway 進行接口的管理工做,也就是將來可能咱們的應用數量會超過 10 個。這麼多應用,若是用傳統方式來管理至少要三四我的,而用 LeanCloud 咱們實際上只用一個兼職人員就能處理,真要感謝 LeanCloud 的幫助。
1.SDK 增長更多語種,如 golang;
2.開放如請求、CPU 等數據監控接口的;
3.開放如新建應用、加入應用等運維接口;
4.增長應用集羣組網的能力,如多個應用變成一個集羣;
5.開放更底層的功能,如網絡四層 TCP/IP 功能;
6.支持機器學習和人功智能,如 tensorflow、gpu;
7.提供更加高效的開發環境,如 IDE 的集成插件、命令行等;
8.提供更好的打包開發部署環境,如 oschina 的 gitee、LeanCloud、七牛9.整合一體化方案(這樣一來會方便好多)。
LeanCloud 在基礎平臺和基礎應用上的功能點太多了,用一篇文章可說不完,總之對於一個創業團隊來講,LeanCloud 爲低成本開發提供了許多有利條件,我以爲對得起「lean」這個稱號,最後祝願 LeanCloud 發展得愈來愈好!