【玩转LeanCloud】活动开发经验分享:作者:黄涛大家好,我是htoooth,在电商公司做Node.js开发。我喜欢折腾和追逐新的语言。golang、elixir、clojure、人工智能和python之类的东西都在我的清单上。我有一个创业项目叫世网。它是AR的互动营销平台。客户可以使用我们的产品轻松地将AR技术集成到他们的业务中。我们的产品涵盖iOS、Android和Web,目前所有的项目都建立在LeanCloud的云引擎之上。LeanCloud比较好我是在2014年认识LeanCloud的,当时我们几个创始人都在筹划启动这个项目,但是缺少后端人员。刚从博客上了解到AVOSCloud(后来更名为LeanCloud)。当时类似这样的BaaS平台还挺多的。在对比了其他公司之后,我们发现LeanCloud在功能、文档、demo等方面都满足了我们的需求,所以我们决定选择它。在过去的四年里,我们开发了许多项目。虽然我们也遇到过LeanCloud服务不稳定的问题,但是经过综合评测,LeanCloud还是比其他平台好,所以我们没有改变。在过去的一年里,我们的产品也有客户对系统稳定性和后台业务的技术支持有要求,所以我们在2016年下半年购买了LeanCloud的付费版。顺便说一句,我觉得AVOSCloud改名后很棒LeanCloud,更符合他们的产品定位。由于项目需要,我们使用了LeanCloud几乎所有的功能和服务,如云引擎、云函数、云缓存、云存储、实时通信、统计分析、RESTAPI、JavaScript/iOS/Android开发工具包等。每次他们推出新功能,我们都会关注,说不定什么时候能派上用场。下面说说具体的用法。为了填补后端人员的空缺,项目开始时我们没有任何后端开发人员。整个团队只有三个全职和三个实习生。开发能力有限,只能搞定Android平台。项目方向是一款具有LBS地理定位功能的社交软件。恰好LeanCloud对聊天和地理定位的支持很好;并且还支持第三方登录、密码和短信登录方式,这让我们开发账号系统变得更加容易,我们可以节省更多的时间来关注业务本身的逻辑和代码,然后存储数据在云端,无需编写任何后端代码即可完成产品功能。当时觉得开发真的很方便有没有~。云引擎实现了一套代码的多端共享。Android平台做完之后,我们又来到iOS平台,于是遇到了以下问题:因为所有业务都在Android,所以iOS必须重新写业务代码;新功能、新需求到来后,必须分别在Android和iOS上实现;关键是业务有bug,客户端不好修改。我们的解决方案是将Android中的业务代码抽取出来,做成一个移动端的API,让业务在Android和iOS之间共享。移动API基于LeanCloud云引擎的Node.js环境开发。另外,我们的后台管理系统采用了Angular.js+LeanCloudJavaScriptSDK,同样实现了业务级的代码复用。在这个过程中,CloudEngine和Node.js都发挥了重要作用。应用资源按需分配,搭建微服务架构一段时间后,我们对产品和业务进行了调整:我们的产品线增加了SDK,需要嵌入到客户的应用中,接口保持独立从我们自己的应用程序。并且有自己的用户体系;App集成了自己的SDK,用户系统使用独立的用户系统,区别于SDK用户系统;官网web由原来的纯静态页面变为动态网页,增加了多个栏目,Blogs需要从数据库中读取数据;后台管理系统cms成为Vue.js+LeanCloudJavaScriptSDK的SPA应用,增加了素材管理等多项功能。可以看出,我们对sdk、app、cms和web的业务需求是不同的,对资源的需求也是不同的,所以我们需要再次调整我们的项目架构——我们不再把每个应用看成一个独立的整体,而是作为计算单元和存储单元的组合。这种划分意味着我们可以单独使用计算单元,单独使用存储单元,或者两者兼而有之,设计架构变得更加高效。它是灵活的。这样做的好处是我们可以分类哪些需要计算,哪些需要存储,哪些两者都需要。资源分配相对清晰。缺点是申请数量增加。下图是我们调整后的功能架构:我们整个应用系统使用了4个LeanCloud应用,如上图所示,cell1、cell2、cell3和cell4。它们各有各的功能侧重点:cell1是我们整个应用的核心,涵盖了cms、cmsAPI、mobileAPI,其计算和存储非常重要;cell2,对于app,只存储用户信息。App端集成LeanCloudSDK,仅使用登录、注册和第三方登录功能。同时,app端也需要调用SDKAPI;cell3,Web服务器,数据源来自cell1。因为SEO需求,没有使用SPA应用,而是类似前后端分离,cell1提供数据接口,cell3进行模板渲染;cell4用作静态资源服务器,存放css、js、图片或较大文件的视频文件;cell3和cell4用于官方网站。由于cell1承载的功能比较多,上面的数据也很重要,所以我们买了付费版来保证稳定性。cell2、cell3、cell4对稳定性没有要求,请求量也不是很大,所以还是用开发版。我们的开发、测试、灰度环境也是根据业务的重要性来选择的。这样,我们通过8个LeanCloud应用的配合协作来支撑我们项目的整个架构,我们没有做任何负载均衡的工作,全部依赖于LeanCloud。我们未来的计划是在使用量增加之后,将mobileAPI、cmsAPI、cms拆分成一个独立的应用,然后构建一个ApiGateway来管理接口,也就是未来我们的应用数量可能会超过10个.这么多的应用,用传统的方式至少需要三四个人来管理,但是有了LeanCloud,我们实际上只需要一个兼职就可以搞定。感谢LeanCloud的帮助。期待的新特性1.SDK增加了更多语言,比如golang;2、开放请求、CPU等数据监控接口;3、开放新建应用、添加应用等运维接口;4、增加应用集群组网5、开放底层功能,如网络四层TCP/IP功能;6.支持机器学习和人工智能,如tensorflow、gpu;7、提供更高效的开发环境,如IDE集成插件、命令行等;8、提供更好的打包开发部署环境,如gitee、LeanCloud、oschina的七牛9、集成集成解决方案(这样会方便很多)。LeanCloud在基础平台和基础应用上的功能点太多,一篇文章说不完。总之,对于一个创业团队来说,LeanCloud提供了很多低成本开发的有利条件。我觉得当得起“精益”二字。最后祝LeanCloud发展的越来越好!
