疯狂使用 leancloud (投稿文章)

疯狂使用 leancloud

本文章是投稿文章,已在 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 能够说比较早了。记得当时 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

咱们顶目在这四年中一直在 leancloud 上进行开发。项目开发平台包括 Android,iOS 和 Web。使用 leancloud 的产品包括 AppSDK(Android,iOS),JsSDK,云函数,云引擎,leancache, restApi,实时通讯,统计分析,云存储等。 并且每次 leacloud 出来的新功能,咱们也都会看看文档了解一下,说不定何时就能够用上。能够说对 leancloud 服务咱们仍是了解一部分的。下面我将咱们使用 leancloud 服务开发项目的过程分为三个阶段来说述一下:github

第一阶段:业务都在 App

当时项目启动时,因为咱们没有后端开发人员,整个团队就只有三个全职外加三个实习生,开发能力有限, 就只开发 Android 的 App。 项目的方向是LBS的社交软件,正好 leancloud 对聊天和 LBS 支持的很是好。App 就基于 leancloud 的 AppSDK 进行开发。当时就以为基于 leancloud,咱们开发账户系统很是方便,leancloud 支持第三方,密码和短信多种登陆方式,让咱们能更加的关注于业务自己。咱们把全部的业务功能都写在 App 里面,至关于把 leancloud 做为咱们的数据库存储。在后端没有写任何代码,就把功能给完成了,当时以为开发很方便。

第二阶段:业务都在 leanengine

随着第一阶段的完后,咱们要进行 iOS 的版本的开发。这时就出现了问题:

  1. 由于全部的业务都在 Android 中,iOS 必需要再写一遍业务代码;
  2. 新功能新需求来了以后,要同时在 Android 和 iOS 进行实现;
  3. 关键是业务出现了 bug,客户端很差修改;

那时咱们就把业务代码从 Android 中抽出来了,作成了移动端 API,这样业务能在 Android 和 iOS 中共用。移动端API是在 leancloud 上基于 leanengine 开发。当时在 leancloud 上也只有 nodejs 的 sdk 比较成熟,咱们就选择了 nodejs 作为咱们的后端环境。除了移动端 API,咱们的 App 后台也进行了开发工做,技术选型是 angularjs 和 leancloud 的 jsSDK 。 这样一能够对业务级的代码复用。在这个过程当中,leanengine 和 nodejs 发挥了重要做用。

第三阶段:抽象成计算单元,作成微服务的形式处理

又过了一段时间,咱们对产品和业务作了调整。新增几个项目:

  1. 咱们的产品线多出 AppSDK,要求须要嵌入到别人的 App 中,接口与咱们 App 独立,有本身的用户系统;
  2. App 集成 本身的 SDK,用户系统使用独立的用户系统,跟 AppSDK 的用户系统不同;
  3. 官网从原来的纯静态页面变成了动态网页,新增了多个栏目和博客,须要从数据库中读数据;
  4. CMS 从 angular+jsSDK 变成了 vue+后端 api 的 SPA 应用,新增了素材管理等多个功能;

能够看出咱们的 Web,SDK, App, SPA 的要求不同,对资源的需求也不同。因而咱们须要再一次调整咱们的项目架构。

在此次调整中,咱们改变了对 leancloud 的思惟方式,再也不认为他是一个一个应用,而是把 leancloud 的一个应用拆开,把当作了一个计算单元和一个存储单元的组合。这样的分开意味着,咱们能够单独使用计算单元,也能够单独使用存储单元,也能够二者都使用,这样在设架构时更灵活。咱们在规划架构时,会对项目进行划分,看看哪些是须要计算,哪些是须要存储的,哪些是都须要的,这样的好处是,更清晰了。坏处是,多使用了不少应用。

如今咱们的整个功能架构就变成了这样:

首先,咱们整个应用体系如今使用四个 leancloud 应用,每一个应用承载的应用不同,对它的核心核心需求是不同的。为了方便与手机app区分,咱们把 leancloud 应用叫作 cell。 当前的架构没有作任何负载平衡的工做,所有都依靠 leancloud。

  • cell1,作为咱们整个应用的核心, 在上面部暑了cms ,cms api,mobile api,它的计算和存储都相当重要,因此咱们买了收费版本;
  • cell2,这个咱们是给 app 用的,他只有储存用户信息的功能,app 端还集成了 leancloud AppSDK,只用了登陆、注册和第三方登陆的功能。同时 app 端还须要调用 sdk api;
  • cell3,把作为一个web服务器,数据从数据仍是从 cell1 中来,由于仍是要作 SEO 需求,因此没有用 SPA 应用,而是相似的先后端分离,cell1 提供数据接口, cell3 进行模板渲染;
  • cell4,把他当成了一个静态资源服务器使用,用来存储 css,js,图片和视频较大的文件;
  • cell3,cell4 是官网使用的;

整个架构来看,cell1 是功能较多的点,数据也是相当重要的点,因此咱们须要保证稳定。cell2, cell3, cell4 均对稳定性没有要求,并且请求量也不是很大,因此咱们仍是用的开发版。

这样咱们就把咱们的应用分红了重要和不重要的,重要的要重视,不重要的就简单点。还有对应咱们的开发,测试和灰度环境,都是相同的设计思路。这样算算,咱们平时用了8个 leancloud 应用。

将来的发展

咱们将来的计划是使用量上来以后,会把 mobile api, cms api, cms 都分出去作一个单独的应用,再作一个 ApiGateway 进行接口的管理工做,也就是将来可能咱们的应用会超过 10 个应用。这么多应用的管理,若是用普通的方式进行管理,至少要三四我的,而如今咱们使用了 leancloud,只有用了一个兼职人员就能处理,感谢 leancloud 的帮助。

总结

leancloud 在基础平台和基础应用上的功能点不是一篇文章就能说的完的,我只说了咱们使用部分。并且如今阶段,咱们仍是一个创业团队,不断地试错是咱们的本能,leancloud 为咱们低成本的试错提供了很好的支撑,我以为对得起 “lean” 这个称号。

期待的新功能

作为工程师我期待 leancloud 能支持更多的功能:

  1. 更多的语言开发,如 golang;
  2. 监控接口的开放,如请求,cpu 等数据;
  3. 运维接口的开放,如新建应用,加入应用等;
  4. 应用集群组网的能力,如多个应用变成一个集群;
  5. 开放更底层的功能,如网络4层(tcp)功能;
  6. 更加的智能,如人功智能(tensorflow, gpu);
  7. 更加方便的开发环境:IDE 的集成插件,命令行等
  8. 更好的打包开发部署环境:如 oschina 的 gitee,leancloud, 七牛整合一体化方案,若是这样会方便更多;

最后,但愿 leancloud 愈来愈好。

相关文章
相关标签/搜索