本文章是投稿文章,已在 leancloud 微信公众号发表。javascript
这里是原文,内容有调整。
3年,从工程师到创始人css
以为不错能够点这里进行 leancloud 注册html
我是 htoooth,一名爱折腾的工程师,目前在一家电商公司从事 nodejs 的开发工做。本身在技术方面喜欢追新语言,除了主力开发语言 javascript 外,还喜欢 golang,elixir,clojure。最近关注人工智能和 python。个人 blog 是 http://www.cnblogs.com/htoooth/,github 地址:https://github.com/htoooth,但愿你们多多 star。vue
本身虽然平时也在工做,剩下的时间都作本身的创业项目——视网么(最新网站正在建设中)。这个项目主要是作 AR 的互动营销平台,主力产品包括 AppSDK, App,CMS。AppSDK 是嵌入到客户的 App 中使用的。App主要是给没有 App 的客户使用。 CMS 是生产和组织 AR 内容的一个工具,只有 Web 版。AppSDK 和 App 包括 Android 和 iOS。经过咱们的产品能够很方便地将 AR 技术集成到客户的业务中去。java
我在本身的项目中,固然是主力工程师,主要负责 Android 的 AppSDK、Android 的 App 、移动端 API、CMS(先后端) 和 Website(先后端)。如今咱们的项目后端全都架在 leancloud 云引擎之上,能够说 leancloud 支撑了咱们的整个项目。node
咱们项目用 leancloud 能够说比较早了。记得当时 leancloud 应该叫作 avoscloud。那时 2014 年,咱们几个创始人要启动项目,没有没有后端人员。刚好我经过这我的的博客(技术很牛逼)中了解到 avoscloud,他说到到 avoscloud 去发展了。我很好奇地去 avoscloud 看了看,发现 avoscloud 是美味书签中国的一帮人作的,又看了一下 avoscloud 这个产品是咱们须要,便做为候选方案。python
记得那段时间,这类 baas 平台还挺多的,咱们另外找了几个平台,和 avoscloud 对比了一下,发现 avoscloud 不管是从功能,文档和 demo 都能知足咱们的需求,因而技术选型上就定下了,使用 avoscloud。在以后,avoscloud 发生了挺多的变化,包括更名成为如今的 leancloud,收费计划的改变等,还有服务不稳定的问题咱们也都经历过。期间也看过其余的平台,综合评价下来,仍是 leancloud 更胜一筹,并无改变咱们的技术选型。git
从 2014 年到 2017 年,四年间开发了很多项目,都一直没有换,能够说咱们是 leancloud 的老用户了。顺便说下,更名这件事,我以为不错,更符合产品的定位。最近一年来,咱们本身的产品业务也有了客户,对后台业务要求系统稳定和技术支持,因而咱们在2016年的下半年,购买了 leancloud 付费版。angularjs
咱们顶目在这四年中一直在 leancloud 上进行开发。项目开发平台包括 Android,iOS 和 Web。使用 leancloud 的产品包括 AppSDK(Android,iOS),JsSDK,云函数,云引擎,leancache, restApi,实时通讯,统计分析,云存储等。 并且每次 leacloud 出来的新功能,咱们也都会看看文档了解一下,说不定何时就能够用上。能够说对 leancloud 服务咱们仍是了解一部分的。下面我将咱们使用 leancloud 服务开发项目的过程分为三个阶段来说述一下:github
当时项目启动时,因为咱们没有后端开发人员,整个团队就只有三个全职外加三个实习生,开发能力有限, 就只开发 Android 的 App。 项目的方向是LBS的社交软件,正好 leancloud 对聊天和 LBS 支持的很是好。App 就基于 leancloud 的 AppSDK 进行开发。当时就以为基于 leancloud,咱们开发账户系统很是方便,leancloud 支持第三方,密码和短信多种登陆方式,让咱们能更加的关注于业务自己。咱们把全部的业务功能都写在 App 里面,至关于把 leancloud 做为咱们的数据库存储。在后端没有写任何代码,就把功能给完成了,当时以为开发很方便。
随着第一阶段的完后,咱们要进行 iOS 的版本的开发。这时就出现了问题:
那时咱们就把业务代码从 Android 中抽出来了,作成了移动端 API,这样业务能在 Android 和 iOS 中共用。移动端API是在 leancloud 上基于 leanengine 开发。当时在 leancloud 上也只有 nodejs 的 sdk 比较成熟,咱们就选择了 nodejs 作为咱们的后端环境。除了移动端 API,咱们的 App 后台也进行了开发工做,技术选型是 angularjs 和 leancloud 的 jsSDK 。 这样一能够对业务级的代码复用。在这个过程当中,leanengine 和 nodejs 发挥了重要做用。
又过了一段时间,咱们对产品和业务作了调整。新增几个项目:
能够看出咱们的 Web,SDK, App, SPA 的要求不同,对资源的需求也不同。因而咱们须要再一次调整咱们的项目架构。
在此次调整中,咱们改变了对 leancloud 的思惟方式,再也不认为他是一个一个应用,而是把 leancloud 的一个应用拆开,把当作了一个计算单元和一个存储单元的组合。这样的分开意味着,咱们能够单独使用计算单元,也能够单独使用存储单元,也能够二者都使用,这样在设架构时更灵活。咱们在规划架构时,会对项目进行划分,看看哪些是须要计算,哪些是须要存储的,哪些是都须要的,这样的好处是,更清晰了。坏处是,多使用了不少应用。
如今咱们的整个功能架构就变成了这样:
首先,咱们整个应用体系如今使用四个 leancloud 应用,每一个应用承载的应用不同,对它的核心核心需求是不同的。为了方便与手机app区分,咱们把 leancloud 应用叫作 cell。 当前的架构没有作任何负载平衡的工做,所有都依靠 leancloud。
整个架构来看,cell1 是功能较多的点,数据也是相当重要的点,因此咱们须要保证稳定。cell2, cell3, cell4 均对稳定性没有要求,并且请求量也不是很大,因此咱们仍是用的开发版。
这样咱们就把咱们的应用分红了重要和不重要的,重要的要重视,不重要的就简单点。还有对应咱们的开发,测试和灰度环境,都是相同的设计思路。这样算算,咱们平时用了8个 leancloud 应用。
咱们将来的计划是使用量上来以后,会把 mobile api, cms api, cms 都分出去作一个单独的应用,再作一个 ApiGateway 进行接口的管理工做,也就是将来可能咱们的应用会超过 10 个应用。这么多应用的管理,若是用普通的方式进行管理,至少要三四我的,而如今咱们使用了 leancloud,只有用了一个兼职人员就能处理,感谢 leancloud 的帮助。
leancloud 在基础平台和基础应用上的功能点不是一篇文章就能说的完的,我只说了咱们使用部分。并且如今阶段,咱们仍是一个创业团队,不断地试错是咱们的本能,leancloud 为咱们低成本的试错提供了很好的支撑,我以为对得起 “lean” 这个称号。
作为工程师我期待 leancloud 能支持更多的功能:
最后,但愿 leancloud 愈来愈好。