如果这是代码更改,作为开发人员,我会在本地开发机器上进行更改,在本地测试并将更改提交到版本控制系统.然后,可以在暂存环境中部署这些更改,进一步测试并最终部署在生产环境中.如有必要,我也很容易回滚.
通常,或者具体而言,您如何在系统管理中实现这一目标?
(首先想到的是使用虚拟机并将虚拟机映像置于版本控制中,但我确信有很多文献和我现在都不知道的聪明解决方案.)
解决方法
我想补充Daniel Pittman的回复,其中详细说明了系统管理中“系统”的形式.
系统或环境将包括:
>服务器
>操作系统
>配置
>供应商包;和
>本地包裹
包含这些将是以下过程:
>操作系统部署或成像
>配置管理
>软件包管理
>审计/记录
>监测
>备份
并且您希望将这些组合在一起以帮助您实现非功能性目标,例如:
>重复性
>可维护性
>可衡量性
>表现
>可追溯性
>可测试性
>可变性
您的问题涉及其中一些,而不使用特定的单词.例如,您希望能够轻松部署并恢复,即希望可维护性;你想在测试环境中进行测试直到它通过,即可重复性,可测试性和可测量性;您正在考虑将vm映像放在版本控制中,因为您希望操作系统和配置部署的可重复性.
有很多工具可以帮助你解决这个问题,丹尼尔提到了一些工具.其他一些是:
> Kickstarts(基于RedHat),Preseed(基于Debian),WDS(MS Windows),用于部署已知的操作系统环境
> Spacewalk / Satellite(基于RedHat),组策略(MS Windows),用于配置和包管理
>用于生成,部署,升级和删除软件包的YUM和APT打包系统(包含一个软件的二进制文件集,数据和配置)
> Nagios,OpenNMS和SCOM用于监控
>用于备份的Amanda,Bacula和Windows Backup Server
> Munin,PCP和Hyperic用于性能监控
>用于版本控制的CVS,SVN,GIT或Bazaar
> Hudson和Jenkins进行构建管理
>硒和机器人进行测试
> Bugzilla,Request Tracker和Jira用于录制,通信和跟踪
同样,这不是一份全面的清单,但是我一直在脑子里指导我,希望它也会帮助你.