项目背景
由于受本次新冠疫情影响,积极响应国家号召,自觉尽量减少外出及避免人群聚集,原本定于2月1日的线下开盘临时取消。但考虑到本地客户购房需求及经过客户多次要求,经慎重考虑,决定采取线上开盘的形式,紧急开发在线开盘小程序,既满足客户的购房需求,又能避免新冠疫情的影响。
总述
项目最终通过微信小程序进行开发完成,通过租用腾讯云PAI服务器,自动绑定已经备案的域名。服务器需要安装docker环境,通过docker-compose进行启动,自动启动需要使用.pai.yml
这个文件进行动态服务拉取自动对服务进行启动停止和重启操作。
总的来说,腾讯云PAI服务器给我们开发者带来了很多硬件上的帮助,这些无关开发,然而很大程度上减少开发者们烦恼的方面,比如小程序开发域名需备案:)
诚然,这款服务器还是有相当一部分的坑存在,需要可能也是接下来PAI的优化方向
部署脚本
由于PAI服务器没有给我们提供相关的shell脚本,这个时候需要我们自己创建相关的文件,阅读了官方提供的脚本
大致猜得出来要怎么使用了,可惜无奈的是我们创建的过程,当时我是通过touch
创建的,这里是没有执行权限的
导致启动一直是失败的,当时发起工单找了客服,都很懵,没想通原因
直到最后发现,原来在忘了添加执行权限,添加了之后,发现就可以执行成功了,当时跟客服两个人都在电话里头笑了半天
不过最后还是无法执行成功,脚本是写对了,然而环境问题导致我们的Sping-boot
项目启动失败,因为使用的是Gradle构建工具,这些源文件都是可以提供的,可惜的是安装完成之后还是启动失败,无奈只好通过docker,之后安装docker-compose
之后使用腾讯云容器服务提供的docker私人容器仓库的服务,拉取镜像就很快了,之后发布成功,提供的仓库也够大,1k镜像,够我玩好些时间,期间我还发现,其实单个库也就100个镜像的上限,居然也被我摸到边缘了23333333
成功之后,在跟前后端交互的过程中持续的宕机,CPU使用率时常达到100%,经常性的服务进程被杀死,附图是在后台监控中发现的,当时的配置是1c2g,一直服务被杀死,要知道当时我们还在调试中,用户量也就2而已,作为后台开发也是无奈到不行,然后就开始扩容了
这里作为开发者,腾讯云的监测方能不能检测到我们的服务过载,就来个微信提醒什么的?建议我们扩容之类,一开始没经验还在猜测自己代码哪里出问题了,讲道理腾讯云家大业大,出问题概率不大,是我自己有问题,先反省自己,最后才发现资源不足。
建议
总的来说,瑕不掩瑜,腾讯云客服的服务态度可圈可点,在这个项目的开发过程中,我们时常开发到凌晨2、3点,出现问题,客服们还能保持在10min内响应我们的问题,真的很服气了,以下是我在开发过程中觉得可以优化的一些建议:
- 由于开发者需要各种各样的环境,建议安装docker环境还有docker-compose这样提高了我们部署的效率
- 基于1,有了docker环境我们对应的.pai.yml这个文件书写起来就简单很多了,规定docker-compose.yml基础文件,之后就是使用shell, docker-compose up等等
- 对于.pai.yml这个启动过程,其实PAI团队可以写一个类似README的文件,把相关的提示都写在里面,开发者们就没必要跑去你们的官方github阅读代码,参悟你们的开发思想,另外这个地方一定要提醒开发者
*.sh
这些文件都需要chmod x *.sh
添加执行权限 - 对于部分应用我们开发者不选择开源,然而这个时候无法通过管理后台拉取代码,其实解决这个问题有三种办法
- 强制要求开发者开源代码
- 后台发布管理,增加一个表单,让我们输入github的帐密,用来获得私人项目的部署权利项目发布失败
- 要求开发者代码发布在腾讯代码仓库工蜂,这个时候你们可以通过策略,即使是私人项目也可以通过你们的内部线路获得代码
- 通过docker,这个也是我的部署方法,基于2,然后docker打包pull到腾讯云的容器服务,提供的私人仓库,另外配置启动服务的项目,这个时候几行代码而已,pulish也无所谓发布成功
- 通过监控功能,提供带宽扩容改弹性等等、服务器类型的优化建议
- 购买服务器的时候,能不能出个大概的计算公式,如大概多少多少用户量,多少多少交互量要多少多少的配置 等等
尾记
在我们测试运行的过程中还发现有人在用扫描器扫我们,活捉个正着,这就很有趣了,反正不知道是不是腾讯云安全部的测试咧,反正懒得去校验:】