1、业务系统发布方式现状
- 以物理机或虚拟机为颗粒度部署
- 发布流程较为复杂,需要多次手工操作
- 部署环境复杂,运维耗时耗力
- 几乎是纯手工操作
带来的问题:
- 物理机部署通常无法最大化使用服务器能力
- 环境复杂,带来的部署成本较高
- 纯手工部署容易出错,且带来的隐患很多
- 当部署失败时不能自动回滚,需要手动切换jar包
- 部署时会影响正在登录的用户正常使用
总之现有的发布机制,所带来的的沉没成本不容忽视,甚至需要专门设置岗位来执行发布,耗费人力物力且收效甚微。
2、基于云容器的部署方式
- 以容器为颗粒度部署
- 部署方式简单,启动速度快
- 一次构建可到处运行
- 出现故障后,可随时恢复
- 可同时部署多套环境
3、DevOPS部署
以jekins为核心,实现自动化部署。开发人员推送代码到GitLab,触发事件推送到Jekins,Jekins拉取代码构建/检测,生成镜像放到镜像仓库,kubernetes拉取最新镜像执行部署。
相比单纯容器部署优点:
1)全程自动部署,不需要人工介入
一次配置终生使用,只需写好脚本就可以在所有服务复用。现在有很多容器平台支持图形化操作。
2)部署失败自动回滚
容器部署成功后,原服务才会停掉,对线上用户几乎无感。
3)服务宕机自动重启
线上服务突然宕机,会自动记录宕机前日志,并重新启动服务
4)自动扩容缩容,最大利用服务器资源
当达到流量阈值,会触发自动扩容机制,而当流量很少,会自动关掉多余服务,整个步骤对用户几乎无感。