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 发展得愈来愈好!

相关文章
相关标签/搜索