1. 降低IT变化成本的良方:IT纪律和IT自动化
如果IT组织对他们的应用交付和管理行动采用严格的纪律和自动化,那么可以消除大部分改变的成本。
1.1应用交付
很多应用故障是由于在开发和部署新应用和应用改变时缺少控制和纪律导致的。
如果不能正确控制应用的计划,开发和部署,那么将导致:
对其他组建或应用产生意外的副作用;
由于不完善的版本控制,丢失改变的源代码或其他程序;
由于错误的优化和没有在上线的压力下测试,出现上线的性能问题;
由于费事且易于出错的手工部署的错误,出现混合或不兼容的上线版本.
在应用生命周期的开发和部署阶段,进行小心细致的计划和控制可以消除这些问题。
1.2计划
严格的应用交付开始于计划。计划中经常会忽略的几个方面包括:
影响性分析
容量计划
高可用性计划
如果没有实施应用改变的影响分析,可能会导致意外的停机和性能问题。例如,为了满足一个业务变化对数据库模式作了一处简单的修改,可能也需要对其他模块进行改动。如果没有注意到这些改变而没有做相应的修改,就可导致错误的结果,糟糕的性能或应用的停机。这样的问题通过对应用改变的影响作仔细分析就可以很好地避免。最有效的影响性分析最好是使用自动化工具,该工具可以理解源代码和程序对象之间或其他应用组件之间的关系。
缺少容量计划是另一个可能导致意外应用故障的问题。分析出在生产环境中可获得充足应用性能所需要的处理器,内存和其他资源等是非常重要的。例如,如果不能提供足够的计算资源处理预计的用户数量,那么就可能导致应用的性能问题和停机。
最后,缺少为满足高关键应用的可用性而必要的冗余和快速恢复机制计划可能导致代价高昂和长时间的停机。某些故障是非常难以预料的。例如,硬件故障的发生通常没有前兆,并发生在极不方便的时间。IT组织必须为这些故障作计划,并且考虑高可用性体系结构和程序。
1.3开发
控制良好的开发过程为多种多样的应用故障提供了重要防线。应该组织这些过程保证所有重要的开发任务,例如说明,编码,优化和测试,能够正确执行。好的过程也需要在相关步骤上作严格的评审。这保证正确的检查和平衡能够捕获不适当或不正确的改变。版本控制是所有良好开发过程的关键环节。不充分的版本控制可能导致丢失源代码的改变,模块的混乱版本和丧失对运行的生产系统全面的信心。所有开发成果都应该在版本控制系统中仔细保留和管理,以防止覆盖重要的改变。
功能的正确性,性能和扩展性的验证应该紧密地集成在开发过程中。大多数开发组织能够认识到验证软件功能正确性的重要性。而性能和扩展性的问题只是当在生产的负载下应用出现问题时才会注意到。这里需要特别强调的是,性能和扩展性需求应该在普通开发人员编码和测试中验证,同时也以应该在QA过程验证。关键应用交易应该使用分析工具进行准确测量。而且,应用性能也应该在生产级别的压力下测量。最好使用压力测试工具可以帮助你进行自动测试仿真适当的用户负载程度。
1.4部署
正确的控制也应该扩展到应用的上线部署阶段。通常,一个应用的更新版本需要在不同的系统上同时部署。另外,也可能依赖系统软件,运行时库和其他共享组件的不同版本。因此,局部或偶尔的部署可能导致错误,故障或糟糕的性能。
围绕部署的问题通常与手工部署有关,因为手工容易出错。自动部署机制可以保证把正确的组件在正确的是件交付到正确的系统,以防止部署的灾祸。
2.管理上线应用
在应用交付中再多的计划和控制也不会消除应用的故障。即使最完善的质量控制过程也不会发现所有的缺欠。同时,最好的容量规划过程也不会预见到意外应用的使用。因此,需要以及时和主动方式