企业的代码发布解决方案

小型公司(3-20台服务器)

  • 使用FTP之间上传代码到服务器(使用 rz 的方式)
  • 多使用PHP语言进行开发
  • 缺乏测试人员,对网站用户的体验比较差

小公司上线的建议:(上线:提供服务 下线:停止服务 平滑上下线)

  1. 开发人员在个人电脑要搭建LAMP环境测试好开发好的网站代码,要进过IDC机房的测试
  2. 程序代码上线要规定时间,如3天一次,每次在17点左右,尽可能保证用户体验
  3. 代码上线之前要备份,先上传到临时目录,再使用mv,尽量减少服务中断的时间(PHP项目)
  4. 上线尽可能由运维人员管理,因为开发在意功能的实现,运维更加关注性能的优化和服务的稳定。

中型公司

  1. 开发者内部测试
  2. 测试组内外网测试
  3. 普通升级上线,由测试组进行;重大升级,由运维组备份后进行上线
  4. 运维组负责服务故障时的,代码回滚

大型公司

Java上线方案

企业的代码发布解决方案_服务器

  • 配置管理员:用于协调开发人员和运维人员。
  • Jenkins工具能够自动地将SVN中的代码及配置(如nginx.conf、redis.conf),打包发布运行到办公室开发环境中,进行测试
  • 完成内网测试后,将代码和配置推送到IDC统一分发管理服务器,进行IDC测试后,再平滑发布到正式的IDC环境中。
  • 之后再变更配置环境要经过上述的测试发布流程。
    注:
    1.办公室环境和IDC环境的区别在于IP地址和配置参数大小,其他部分要统一版本。
    2.配置管理人员会将代码打包成war上传到SVN中,再通过SVN发送到IDC统一分发管理服务器
    idc_dep_时间.war 办公室测试包
    idc_test_时间.war IDC测试包
    idc_produc_时间.war 正式包
    3.针对普通业务的上线使用预发机制(观察期为半小时左右),对于重要业务使用灰度发布(观察期为24小时左右)

java平滑上线的方案:

  • 在流量低谷时,将服务器分成A、B两组,先让A组服务器下线(负载均衡服务器lvs 断开A组服务器)
  • 更改A组服务器代码和配置后,重启服务器后,分配到测试lvs中进行测试(此过程控制在10分钟内)
    断开测试lv,将A组挂到lvs中,瞬间关闭B组连接
  • 之后对B组进行代码和配置进行更改后,重启服务器,进过测试后,挂会到主lvs,完成平滑上线

注:
1.一般是分两组 ,分3组存在新旧并存的问题,不是数量上的分组而是类型的分组。
2.需要重启服务器,避免加载配置有误。
3.如果存在DNS智能解析,可以分地区逐步上线。
4.越靠近前段的功能上线越频繁,后端的功能越低频。
5.nginx支持平滑重启reload ,拒绝新的请求线程,但不会断开正在提供服务的线程。
6.使用全量上线而不是增量上线,最大程度保证以SVN中央库为准
7.大企业通常会使用Python制作可视化的应用可视化web部署平台,使用Python编写脚本进行自动化发布,这种平台可能涉及权限审批流程、故障跟踪平台等。

企业的代码发布解决方案_服务器_02