代码上线

第1章 小型公司代码上线

图片[1]|代码上线|leon的博客

1.1 小型企业现状

小型公司一般只有几个开发人员,并且网站核心程序大多数都是PHP语言开发,为了方便会直接通过FTP上传程序代码到线上服务器,随时随地上线更新。

1.2 上述代码方案的优缺点

  • 优点:发布快、及时,随时随地就可以发布代码
  • 缺点:开发人员发布的代码不经过测试人员的测试,用户刷新网页可能发现页面改变,也可能刷新瞬间程序在更新,导致无法访问,对网站用户的体验比较差,如果开发写错了代码,造成的影响就更大了,这是拿用户做测试的上线方案。

据统计网站中大概50%以上的故障是和开发程序代码有关的,比如开发写错了一个循环代码,导致死循环,此时如果大量用户访问这个程序就能把服务器资源耗尽,导致服务器宕机。

在中小公司网站出了问题(例如网站宕机),这种情况下的问题大多可能由开发人员或代码引起的,这里比较好的策略是开发项目责任制。

1.3 小型企业上线架构方案建议

  • 开发人员需在个人电脑搭建LNMP环境测试开发好的网站代码,并且在办公室或IDC机房的测试环境测试通过,最好有专职测试人员。
  • 程序代码上线规定时间,例如三天上线一次,如网站需经常更新可每天下午17点上线(这个看网站业务性质而定,原则就是影响用户体验最小)。
  • 代码上线之前需备份,网站程序出了问题方便回退。另外从上线技巧上讲,上传代码时尽可能先传到服务器网站临时目录,传完整后一步mv过去,或者直接通过ln做软链接进行代码升级。

第2章 中型公司代码上线

中型企业上线一般是规范运维人员操作步骤,制定统一的上线操作脚本、备份文件名称、备份文件路径、使操作人性化、统一化、自动化。

图片[2]|代码上线|leon的博客

第3章 大型企业上线解决方案

大型企业上线一般制度和流程控制较多,比较严谨,下面是某大型企业上线解决方案。

3.1 架构图

图片[3]|代码上线|leon的博客

3.2 架构说明

  • 三套配置文件:公司测试环境、IDC测试环境、线上环境、线上环境,都由SVN管理。
  • 配置管理员:在开发和运维之间起一个连接纽带的作用的职位,这个职位一般在大公司里会设置,负责SVN的管理,上线管理、申请、协调等工作。

3.3 以Java架构环境代码上线为例

  • 本地开发人员从SVN中取代码,当天上线的提交到trunk,如果是长期项目则单开分支开发,然后再合并主线(trunk)
  • 办公内网开发测试时,由开发人员或配置管理员通过部署平台Jenkins实现统一部署,即在部署平台上控制开发机器从SVN获取代码,编译、打包,发布到开发机,包名如war。
  • 开发人员通知或和测试人员一起测试程序,没有问题后由配置管理员打上新的tag标记。
  • 配置管理员根据上的tag标记,checkout出上线代码,并配置好IDC测试环境的所有配置,执行编译,打包(mvn,ant)(php不需要),然后发布到IDC内的统一分发服务器。这里要注意不同环境的配置文件是随代码同时发布的。
  • 配置管理员或SA上线人员把分发的程序代码内容推送到相关测试服务器(包名如war),然后通知开发及测试人员进行测试,如果有问题向上回退,继续修改。
  • 如果IDC测试没有问题,继续打好tag标记。此时配置管理员根据上步的tag标记,checkout出测试好的代码,并配置IDC正式环境的所有配置,执行编译、打包,然后发布到IDC内的统一分发服务器主机,准备批量发布。
  • 配置管理员或SA上线人员,把分发的内容推送到相关正式服务器(包名如war),然后通知开发及测试人员进行测试,如果有问题直接发布回滚指令。
  • IDC正式上线的过程对于JAVA程序,可以是AB组分组上线的思路,即平滑下线一半的服务器,然后发布更新代码,重启然后测试,无问题后,挂上更新后的服务器,同时再平滑下线另一半的服务器,然后发布更新代码测试(或者直接发布后,重启,挂上线)
巧:AB组分组上线的思想是保证同一时间线上只有一种版本的代码,如果使用nginx 作为负载均衡服务器时,此时可以制作三个nginx配置文件:
  • conf其中只配置AWEB服务器的地址池
  • conf其中只配置BWEB服务器的地址池
  • conf中配置所有WEB服务器的地址池
此时如果下线A组服务器,则使用nginxB.conf配置文件然后reload nginx服务即可,同理,当AB组全部上线后,使用nginxall.conf配置文件即可,这样可以避免每次上下线时都要修改配置文件的麻烦。

第4章 代码上线注意事项

4.1 PHP程序代码上线注意事项

对于PHP上线方法:发布代码时(也需要测试流程)可以直接发布到正式线临时目录,然后mv或更改link的方式发布到正式线目录,不需要重启http/php服务。

4.2 JAVA程序代码上线注意事项

对于JAVA上线方法:需要分组平滑上线。例如:首先从负载均衡服务器上摘掉一半的服务器,发布代码后,重启服务器测试,没问题后挂载上线完成的一半,再卸载另外一半。如果前端有DNS智能解析,还可以分地区上线若干服务器,逐渐普及到全国的服务器,这个被称为灰度发布。

4.3 大型集群架构代码发布方案注意事项

上线的流程是:办公测试环境—>IDC测试环境—>正式生产环境。

所有环境中的所有软件均应版本统一,其次尽量单一,否则将后患无穷(开发测试成功,IDC测试就可能有问题),例如:操作系统、Web服务器、jdk、php、tomcat等版本

一定要采用全量升级方式,选择增量方式升级时如果程序出现问题则将给自己找麻烦,并且程序代码都不会很大,没必要使用增量升级的方式。

参考博文:
https://mp.weixin.qq.com/s?
__biz=MzAxOTE5NjQwOA==&mid=2650113445&idx=1&sn=ca4231f30a39872db9f
b6893d5740d49&chksm=83cb9532b4bc1c242bba69d52c96e188c43117c3c29f
c9b47830e9d390514a3ff26f812e19a6&mpshare=1&scene=23&srcid=0718al9lU
YSe5sPlxbcnTn7t#rd
温馨提示:本文最后更新于2022-12-20 20:57:53,已超过492天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/448.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享