3年,從工程師到創始人

【玩轉 LeanCloud 】活動開發經驗分享:css

做者:黃濤python

你們好,我是 htoooth,在一家電商公司作 Node.js 開發,愛折騰,喜歡追新語言,像 golang、elixir、clojure、人工智能和 python 都在個人關注之列。我有一個創業項目叫視網麼,是個作 AR 的互動營銷平臺,客戶使用咱們的產品能夠很方便地將 AR 技術集成到本身的業務中去。咱們的產品覆蓋了 iOS、Android 和 Web,目前項目全都架在 LeanCloud 的雲引擎之上。git

LeanCloud 更勝一籌

邂逅 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 中,iOS 必需要再寫一遍業務代碼;
  • 新功能新需求來了以後,要分別在 Android 和 iOS 上實現;
  • 關鍵是業務出現了 bug,客戶端上很差修改。

咱們的方案是把業務代碼從 Android 中抽出來了,作成了移動端 API,這樣業務能在 Android 和 iOS 中共用,移動端 API 是基於 LeanCloud 的雲引擎 Node.js 環境下開發的。除此之外,咱們的後臺管理系統使用了 Angular.js + LeanCloud JavaScript SDK,這樣也實現了對業務級的代碼複用。在這個過程當中,雲引擎和 Node.js 都發揮了重要做用。緩存

應用資源按需調配,搭建微服務架構

又過了一段時間,咱們對產品和業務作了調整:服務器

  • 咱們的產品線增長了 sdk,須要嵌入到客戶的應用中,接口與咱們本身的 app 保持獨立,而且有本身的用戶系統;
  • app 集成本身的 SDK,用戶系統使用獨立的用戶系統,跟 sdk 的用戶系統不同;
  • 官網 web 從原來的純靜態頁面變成了動態網頁,新增了多個欄目和博客,須要從數據庫中讀數據;
  • 後臺管理系統 cms 變爲 Vue.js + LeanCloud JavaScript SDK 的 SPA 應用,新增了素材管理等多個功能。

能夠看出咱們對 sdk、app、cms 和 web 的業務需求都不同,對資源的需求也不同,因而咱們須要再一次調整咱們的項目架構——咱們再也不將每一個應用看做是一個獨立的總體,而是當成一個計算單元和一個存儲單元的組合,這種分割意味着咱們既能夠單獨使用計算單元,也能夠單獨使用存儲單元,或者二者都使用,設計架構也就變得更加靈活了,這樣作的好處是咱們能夠按項目劃分出哪些須要計算,哪些須要存儲,哪些兩者都須要,資源分配比較明確,壞處是應用的數量增長了。網絡

下圖是咱們調整後的功能架構:

咱們整個的應用體系使用了 4 個 LeanCloud 應用,如上圖所示,cell一、cell二、cell3 和 cell4。它們各有各的功能側重點:

  • cell1,是咱們整個應用的核心, 上面部暑了cms、cms API、mobile API,它的計算和存儲都相當重要;
  • cell2,給 app 用的,只儲存用戶信息。app 端集成了 LeanCloud SDK,只用了登陸、註冊和第三方登陸的功能,同時 app 端還須要調用 SDK API;
  • cell3,web 服務器,數據源來自 cell1。由於還要作 SEO 需求,因此沒有用 SPA 應用,而是相似的先後端分離,cell1 提供數據接口,cell3 進行模板渲染;
  • cell4,用來作靜態資源服務器,存儲 css、js、圖片或較大的視頻文件;
  • 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 發展得愈來愈好!

相關文章
相關標籤/搜索