头图

借助云托管低成本部署企业微信应用

本文主要介绍企业微信应用开发,如何借助云托管高效、低成本方式进行部署上线,并比较云托管与传统开发方式的不同。

微信云托管官网

https://cloud.weixin.qq.com/cloudrun

一、云托管项目实践总结

2019年企业微信3.0的上线,到今天为止,对于企业来说企业微信是个不可或缺的企业信息化管理平台,包括客户关系、公司组织架构、企业管理、SCRM、OA日常办公等等,最强大的是企业微信的开放平台,提供了一系列的API接口供企业和服务商进行开发。

图片

虽然有完善的开发文档,但是对于企业接入来说,门槛和成本还是挺高的,传统接入方式,首先得需要购置一台云服务器,参数要考虑带宽,CPU 内存配置,还要考虑计费方式...... , 借助于云托管,这些变得简单。

图片

1、开箱即用

如官网所示,开箱即用,这是对于企业和开发者来说是一个极大福音,直接注册开通即可,非常实用,具体体现在:官方提供的测试域名,部署一个服务上线,云托管会自动生成一个域名,用此域名就可以在公网上访问我们的服务,进行开发测试,做过后端开发同学应该很清楚,这大大方便后端的测试工作,没有公网IP,没有域名也可以进行测试访问。

图片

企业微信应用主页填入云托管生成的域名进行开发测试。

图片

另外,后端开发语言支持的也很广泛,有Java 、PHP、Node.js、 Python、 Go 主流后端开发语言基本都支持,本文实例用的就是Node.js 。

2、低成本

低成本体现两个方面:一是开发侧,开箱即用,降低开发门槛,节省时间和研发成本投入;另一个方面,微信云托管采用按量计费方式,有多种流量包供选择,企业可以结合自身情况来组合购买,很划算。

3、弹性扩缩

这是最值得一提的地方,弹性扩缩大大降低后端并发设计难度,如果服务有并发访问的需求,后端并发性能是绕不开发话题,从服务器配置到带宽,再到技术架构,任何一个地方考虑不周都会成为系统的瓶颈,云托管弹性扩缩从根本上可以解决此问题,服务实例可以横向扩缩容,根据资源耗费情况自动的增加或减少实例,以此应对突发的访问量。不必担心并发能力不足,而导致系统宕机,这方面上讲,确实可以把更多精力投入到业务实现上。

二、案例项目介绍

本次项目是一个基于企业微信应用+一个web应用,包括前端和后端,前端技术栈是 react,后端是 nodejs ,项目目标是部署后端到云托管上面,并进行发布测试。

1、代码 Docker 封装

主要是两个配置文件,一个是 Dockerfile,一个是 container.config.json ,其中,后者属于基本配置,如设置扩缩容的触发条件。

图片

Dockerfile 主要指定镜像、目录,启动参数和对外端口等:

图片

container.config.json 配置扩容触发条件

图片

构建目录  "buildDir": "",
最小实例数 "minNum": 0,
最大实例数 "maxNum": 50,
cpu 核数 "cpu": 0.25,
内存大小,单位:G "mem": 0.5,
扩缩容指标类型 "policyType": "cpu",
扩缩容指标阈值 "policyThreshold": 60,
环境变量 "envParams": {},
日志采集路径 "customLogs": "stdout",
启动检测延迟  "initialDelaySeconds": 2

最主要的几个参数说明,cpu mem 代表一个阶梯单位,扩缩一个单位增加或减少的量是多少,policyThreshold 代表触发条件,当Cpu或内存使用率超过60%就启动扩容,而且扩容的速度很快,可以实现秒级扩容,这个时延针到一般并发访问来说足以够用。

完成这两个配置文件,就完成了代码 Docker 封装。

2、打包代码上传云托管

代码目录下执行,用zip 命令将代码打包。

zip -r -q backend.zip -x ./node_modules/*

前往云托管控制台:

图片

图片

选本地上传和压缩包,配置好端口,点击【新建】开始创建新的版本。

图片

在控制台右侧可查看实时部署日志,看到如上图中的 Succesfully built .... 即代表部署成功。

接下来是发布上线过程。

图片

列表选择生成的版本,发布有两种方式,一是全量,二是灰度,如果是小程序可以用灰度测试,增加白名单的方式,来灰度发布,我这里是web应用,目前还不支持企业微信的灰度,所以我是直接全量发布,希望以后云托管能支持企业微信灰度发布,到此云托管服务部署到发布就完成。

3、其他方面

云托管日志和服务监控都很完善,很方便我们日常运维管理工作,查看我们的服务运行情况。

图片

日志可以看到服务启动情况,打印出我们的log信息,(用户log信息是粉红色)

图片

监控里可以查看 服务的QPS 响应时间 调用量等,免去了自己搭建的麻烦。

4、项目其他经验

实际开发当中,我们系统还应用到其他的服务,需要安装一些业务需要的模块,比如非主流的数据库等,所以把那一部分剥离和留在传统服务器上,云托管云访问这些服务。另外我们还将一些小而微模块开发成云函数 ,放到云开发当中,实现了云托管和云函数互通,这样可以使构架更灵活,借助云开发和云托管各自的优势。这些细节就不一一赘述,所有云开发和云托管确实给开发带来很多的便捷,利用好云开发大大降低了研发的门槛和成本,企业和研发可以更多的关注业务实现。

图片

变化后的架构,复杂度变小,不再需要过多考虑接入层(网关与负载 部署nginx),过去只有很强技术背景团队才能做好的事,在今天就变得简单多了,希望腾讯云开发和云托管团队能带给我们更多惊喜!

作者:宋延涛,云开发布道师。


小程序云开发技术专栏
云开发CloudBase官方技术专栏!微信 x 腾讯云联合提供的小程序·云开发服务,快速构建小程序、Web和移动...

云开发(Tencent CloudBase,TCB)是云端一体化的后端云服务 ,采用 serverless 架构,免去了移动应用构...

422 声望
438 粉丝
0 条评论
推荐阅读
限量内测名额释放:微信云开发管理工具新功能
我们一直收到大家关于云数据库管理、快速搭建内部工具等诉求,为了给大家提供更好的开发体验,结合大家的诉求,云开发团队现推出新功能「管理工具」,现已启动内测,诚邀各位开发者参与内测体验。

CloudBase云开发阅读 26

封面图
使用taro+canvas实现微信小程序的图片分享功能 | 京东云技术团队
二轮充电业务中,用户充电完成后在订单详情页展示订单相关信息,用户点击分享按钮唤起微信小程序分享菜单,将生成的图片海报分享给微信好友或者下载到本地,好友可通过扫描海报中的二维码加群领取优惠。

京东云开发者2阅读 467

封面图
小程序内参数和扫码参数统一
写小程序的时候都会遇到扫码参数和小程序内跳转参数要分开处理的问题,但实际上参数和处理的方式都是一样的,这里封装一种方法,将扫码参数直接放到options下面,这样就不需要分开独立处理,减少冗余代码增加代码...

海洋饼干1阅读 862

微信小程序归结
是的,在这个框架满天飞的年代,我既然有有幸使用了原生小程序开发项目,除了麻烦些,倒也不是一无所获,耕耘总有收货嘛,写博客本身不是为了炫技还是什么,单纯的是记性不好,有些知识点 自己是花了时间去查找的...

HappyCodingTop1阅读 1.3k

封面图
5 分钟带你小程序入门 [实战总结分享]
微信小程序常常用 4 种文件类型JS 文件JS 在小程序中用于编写页面逻辑和交互效果,可调用 API 接口完成数据请求和处理,也可以使用第三方库和框架。模块化编程:小程序中JS文件可以使用ES6的模块化语法,通过expo...

程序员海军2阅读 487

封面图
基于微信云开发 SayLove 表白墙微信小程序V1.0
后续会继续更新,敬请期待2.0全新版本~欢迎添加右边的微信一起探讨!项目地址:[链接][其他开源项目]租房小程序 [链接]计划助手 [链接]Bug修复更新日历[2021-05-12] 更新说明:【 课设毕设参考专用版本 】针对 昵...

LiangSenCheng阅读 2.1k

基于微信小程序云开发-租房微信小程序-带管理员后台
本项目使用 LGPL-3.0协议,请勿商用、请勿售卖、请勿售卖、请勿售卖,仅适用于学习交流,并且不提供无偿的、 不提供无偿的、 不提供无偿的 维护修改服务(但可提issue)。若直接将本项目用于商用,因本项目带来的...

LiangSenCheng阅读 1.8k评论 1

云开发(Tencent CloudBase,TCB)是云端一体化的后端云服务 ,采用 serverless 架构,免去了移动应用构...

422 声望
438 粉丝
宣传栏