代码上线架构方案

小型企业上线架构方案

1、开发人员需在个人电脑搭建LAMP环境测试开发好的网站代码,并且在办公室或IDC机房的测试环境测试通过,最好有专职测试人员。
2、程序代码上线规定时间,由网站业务性质而定,原则就是影响用户体验最小。
3、代码上线之前需备份,网站程序出了问题方便回退,另外,从上线技巧上将,上传代码时尽可能先传到服务器网站临时目录,传完整后一步mv过去,或者通过ln做软连接。
线上更新代码的思路。如果严格更新,把应用服务器从集群节点平滑下线,然后更新。
4、尽量由运维人员管理上线,对于代码的功能性,开发人员更在意,而对于代码的性能优化和上线后服务器的稳定,运维更在意服务器的稳定,因此,如果网站宕机问题归运维管,就要让运维上线,这样更规范科学。否则,开发随意更新,出了问题运维负责,这样就错了,运维永远无法抬头。

中型企业上线解决方案

一般是规范运维人员操作步骤,制定统一的上线操作脚本备份文件名称、备份文件路径。使操作人性化,统一化,自动化。
web代码的上线流程:
1、开发组内部测试
2、测试组内外网测试
3.1、重要升级---》运维组备份
3.2、普通升级---》上线
4、回滚后上线----》运维组代码回滚
1.2、用户应用
1.2.2、有问题-----》运维组代码回滚
1.2.3、上线

大型企业上线解决方案

ITIL,BSW规范。

大型企业java代码上线流程图 

svn服务器上主要管理:

1.程序代码
2.服务的配置
3.项目文档,设计文档,运维部署优化文档1234

上线时,大型集群环境一般有数台及其集群,因此,同时需要更新或者分批更新。

1.本地开发人员从svn中取代码。当天上线的天机到trunk,否则,长期项目单开分支开发,然后再合并主线(trunk)
2.办公内网开发测试时,由开发人员或配置管理员通过部署平台jenkins实现统一部署,(即在部署平台上控制开发及其从svn取代码,编译,打包,发布到开发机,包名如dep.war)
3.开发人员通知或和测试人员一起测试程序,没有问题后,由配置管理员打上新的tag标记
4.配置管理员,根据上步的tag标记,checkout出上线代码,并配置好IDC测试环境的所有配置,执行编译,打包(maven,ant)(pho不需要),然后发布到IDC内的统一分发服务器,这里要注意,不同环境的配置文件是随代码同时发布的。
5.配置管理员或SA上线人员,把分发的程序代码内容推送到相关测试服务器,然后通知开发及测试人员进行测试。如果有问题向上回退,继续修改。
6.如果IDC测试没有问题,继续打好tag标记,此时,配置管理员,根据上步的tag标记,checkout出测试好的代码,并配置好IDC正式环境的所有配置,执行编译,打包(maven,ant),然后发布到IDC内的统一分发服务器主机,准备批量发布。
7.配置管理员或者SA上线人员,把分发的内容推送得到相关正式服务器,然后通知开发及测试人员进行测试。如果有问题直接发布回滚指令。
IDC正式上线的过程对于JAVA程序,可以是AB组上线的思路,即平滑下线一般的服务器,然后发布更新代码,重启然后测试,无问题后,挂上更新后的服务器,同时在平滑下线另一半的服务器,然后发布更新代码测试(或者直接发布后,重启,挂上线)

PHP程序代码上线的具体方案

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

JAVA程序代码上线的具体方案

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

代码上线解决方案注意事项

1.上线的流程里,版本测试环境--》IDC测试环境--》正式生产环境,所有的环境中的所有软件均应版本统一,其次,尽量单一,否则将后患无穷,开发测试成功,IDCC测试就可能有问题。
例如:操作系统、web服务器,jdk,php,tomcat,resin等版本
2.开发团队小组办公室内部测试环境测试(该测试环境属于开发小组维护,或定时自动更新代码),代码有问题返回给某开发人员重新开发。
3.有专门的测试工程师,程序有问题直接返回给开发人员(此时返回的一般为程序的bug,称为bug库),无问题进行IDC测试
4.IDC测试由测试人员和运维人员参与,叫IDCtest,进行程序的压力测试,有问题直接返回给开发人员,无问题进行线上环境上线
5.数台服务器代码分发上线方案(java):
5.1.假设同业务服务器有6台,将服务器分为a、b两组,a组三台,b组三台,先对a组进行从负载均衡器上平滑下线,b组正常提供服务,避免服务器因上线影响业务。
5.2.下线过程是通过脚本将a组服务器从rs池(lvs,nginx,haproxy,f5等均有平滑方案)中踢出,避免负载均衡器将请求发送给a组服务器(此时的时间应该为网站流量少时,一般为晚上)
5.3.将代码分发到a组服务器的站点目录下,对a组服务器上线并重启服务,并由专业的测试人员进行访问测试,测试成功后,挂上a组的服务器,同时下线b组服务器,b组代码上线操作测试等和a组相同,期间也要观察上线提供服务的服务器状态,有问题时及时回滚。
6.如果是php程序,则上线可以简单化,直接将上线代码(最好全量)发布到所有上线服务器的特定目录后,分发完成后,一次性mv或ln到站点目录,当然测试也是少不了的,测试出了人员测试外,还有各种测试脚本测试各个相关业务接口
7.大多数门户公司的前端页面都已经静态化或者cache了,因此,动态的部分访问平时就不会特别多,流量低谷时就更少了,再加上是平滑上下线,因此基本上是对用户体验无影响的。
8.svn上包含代码和配置
8.1 svn上存放程序代码(不含资源,大公司网站资源和程序分离的),尽可能全量上线
8.2 存放所有服务的配置文件(lamp环境,如:apache的httpd.conf配置文件)
8.2.1 开发小组测试环境使用的配置文件
8.2.2 办公测试环境使用的配置文件
8.2.3 IDC测试环境使用的配置文件
8.2.4 线上应用使用的配置文件
在上线不同环境时,由配置管理员协调上线

什么是配置管理员?

就是在开发和运维中间起一个连接纽带的一个职位,这个职位一般在大公司里会设置,负责svn的管理,上线管理,申请,协调等工作

自动化部署和上线代码管理平台

对于门户网站或重视规范或开发能力较强的公司也许会结合系统服务和web界面管理来更科学更自动的进行上线代码管理,如开发一个自动化代码上线部署平台,其实就是一个web管理界面(界面底层调用相关脚本实现分发推送代码以及重启服务器),然后普通的初级上线人员就可以再平台里实现仅仅点鼠标、敲回车,就能实现平滑上线和平滑回滚代码了。

开发自化部署平台的思路很多,例如:可以通过nagiios的被动模式实现上线管理平台原理思路:

实际上就是生成配置在分发服务器上执行命令请求,应用服务器,然后脚本在应用服务器处理完毕后回传结果到web界面显示

开发人员和运维人员业务变更管理平台

业务变更管理平台优点:

1.变更管理制度流程有利于业务稳定
2.保留变更业务历史,便于核查发现的问题
3.故障跟踪平台,有利于跟踪问题的解决进度,而不是半途而废
4.相关常用软件:
4.1 FIRA用户缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪和敏捷管理等工作领域
4.2 mantis是一款php开源bug跟踪系统,比较适合中小型项目的管理及跟踪,具有多特性包括:易于安装,易于操作,基于web,支持任何可运行php的平台(windows,linux,max,solaris,as4000/i5等),已经被翻译成68种语言,支持多个项目,为每一个项目设置不同的用户访问级别,跟踪缺陷变更历史,定制我的视图页面,提供全文搜索功能,内置报表生成功能(包括图形报表),通过email报告缺陷,用户可以监视特殊对待bug,附件可以保存在web服务器上或数据库中(还可以备份到ftp服务器上),自定义缺陷处理工作流,支持输出格式包括csv、microsoftExcel、microsoftWord,集成源代码控制(svn与cvs),集成wiki知识库与聊天工具(可选/不可选),支持多种数据库(mysql,mssql,postgresq,oracle,db2),提供webService(soap接口),提供wap访问

灰度:

专业名词叫bucket test ,就是桶检测,抽一部分用户去检测。这个有几种方式,一个是按流量比例来抽,按流量比例来抽就是随机命中的,有可能有百分之百的用户有可能都会被命中。还有种情况是根据用户来抽,比若说根据用户的cookie来判断是不是该进入到桶里面。一般都是针对核心业务的。

原文地址:http://blog.51cto.com/13505030/2128985

时间: 2024-10-08 15:19:18

代码上线架构方案的相关文章

SVN版本管理与代码上线架构方案

SVN是Subversion的简称,是一个开放源代码的版本控制系统,可以超越时间的管理文件和目录.文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器.你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改.这就是为什么许多人将 Subversion 和版本控制系统看作一种"时间机器".说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的. svn与git的区别svn   svn版本控制系统是集中式的数据管理,

01.Svn版本管理与代码上线架构方案

空杯心态,从零开始. 应用运维->实操最重要. 每个业务至少有一种解决方案:每个方案至少会一个软件实现. 系统架构师实际是软件架构师. 系统运维架构师. 架构师主要是架构思想,不是某一个软件个体. 制造子弹->系统开发级别. 组装坦克飞机->凤毛麟角. Linux系统架构师->一期 软件架构师->二期 能力要求: 系统架构相关的知识和经验: 很强的自学能力.分析能力.解决问题的能力: 写作.沟通表达.培训: 原文地址:https://www.cnblogs.com/lzp12

代码发布架构方案(SVN)

问题: 安装优化软件环境nginx,lvs  程序代码(不断更新) 配置更新(不断变更) 1.SVN介绍 1.1 什么是SVN(Subversion)?         SVN(Subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台开源的版本控制系统.SVN版本管理工具管理着随时间改变的各种数据.这些数据放置在一个中央资料档案库(repository)中,这个档案库很像一个普通的文件服务器或者FTP服务器.与其他服务器不同的是,SVN会备份记录每个文

企业SVN版本管理与代码上线方案

1.SVN服务实战 1) 什么是SVN(Subversion)? Svn(subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统.Svn版本管理工具管理着随时间改变的各种数据.这些数据放置在一个中央资料档案库(repository)中,这个档案库很像一个普通的文件服务器或者FTP服务器,但是,与其他服务器不同的是,SVN会备份并记录每个文件每一次的修改更新变动.这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本,当然也

代码上线

1 .小型企业现状 小型公司一般只有几个开发人员,并且网站核心程序大多都是PHP语言开发,为了方便,会直接通过FTP直接上传程序代码到线上服务器,随时随地上线更新. 1.1 上述代码方案的优缺点 优点:发布快,及时,随时随地就可以发布代码. 缺点:开发人员发布的代码不经过测试人员的测试,用户刷新网页可能发现页面改变,也可能刷新瞬间程序在更新,到时无法访问,对网站用户的体验较差,如果开发写错了代码,造成的影响就更大了,这是拿用户做测试的上线方案. 据统计,网站中大概50%以上的故障是和开发程序代码

网页代码上线详解

第1章 代码上线 早期手动部署代码 纯手动scp上传代码. 纯手动登陆,Git pull 或者SVN update. 纯手动xftp上传代码. 开发发送压缩包,rz上传,解压部署代码. 缺点: 全程运维参与,占用大量时间. 如果节点多,上线速度慢. 人为失误多,目录管理混乱. 回滚不及时,或者难以回退. 1.1 小型公司代码上线案例 1.1.1 特点及问题 01.发布快.及时,可随时随地发布代码 02.开发发布的代码不经测试,导致无法访问(如死循环代码),对网站用户体验较差 1.1.2 架构方案

【转】微信、陌陌 架构方案分析

来源:http://www.wubiao.info/401 作者:wubiao 微信.陌陌 架构方案分析 近两年.手机应用.莫过于微信.陌陌之类最受欢迎.但实现原理,分享文章甚少. 故,提出两种方案,供分享:不正确之处.敬请留言学习. 目标 解决大型应用(微信.陌陌级别)中.用户经纬度在不断更新.用户查找频繁的问题. (每分钟1000W级) ==============================================================================

LAMP网站架构方案解剖

LAMP网站架构方案解剖 2011-03-18 10:46 月光 网络转载 字号:T | T 网站架构是比较考研技术的一件事,所以要对一种好用的工具,那么网站架构就会事半功倍,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP 用LAMP进行网站架构是非常容易的. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN等之外,在软件架构

MMM架构方案与实施

             MMM架构方案与实施 MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器),是关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能基于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份.节点之间重新同步功能的脚本. MySQL本身没有提供replicati