《图解基础设施设计模式》试读:2.1可用性策略的基础

可用性需求是指与系统的运行效率相关的需求。在一定的时间内,系统实际运行的时间所占的比率称为运行效率。系统对社会活动和企业商业活动的影响越大,所要求的运行效率就越高。 有许多策略可以提高系统的运行效率,例如硬件冗余和引入运维工具以防止误操作等。究竟哪种策略最适合我们的系统,则必须根据可用性需求来正确地从中进行选择。另外,在实施策略时,无论是硬件冗余还是引入运维工具,都会产生额外的费用,因此,还需要考虑费用与效果的性价比。 在本章中,我们将要讲解可用性策略的基本思考方法和设计方式。 2.1可用性策略的基础 我们将发生故障时可导致系统整个停止的部件称为SPOF(Single Point Of Failure,单点故障)。排除SPOF是提高系统可用性的典型策略,通过排除SPOF,即使某处单独发生了故障,也可以避免系统停止、无法继续提供服务(系统宕机)的状况。 但是,仅仅排除SPOF还不足以完全避免系统宕机。根据《日经电脑》的调查,引起系统故障发生的原因多种多样,其中运维和设定错误(粗心的错误)占49%、软件缺陷占30%、硬件故障占12%①。由此可看出,要想提高系统的可用性,仅仅针对基础设施领域制定策略是不够的,还需要针对应用程序和系统运维方面来综合地制定策略。 制定可用性策略的方法有很多种,但是还需要考虑如图2.1中所示的费用与效果的性价比。基本方针是不要一开始就采用高成本的策略,而是优先实施低成本且比较有效果的策略。以容灾策略为例,这种策略是指为了使系统能在灾害发生时继续提供服务,在异地部署一套备用系统。与其达到的效果相比,成本是很高的。因此应当优先考虑引入作为国际最佳实践的ITIL(Information Technology Infrastructure Library,信息技术基础架构库)系统运维服务和获取可靠备份等其他策略。 为了提高系统的可用性,在进行“预防故障”(防患于未然)和“快速恢复”(事后应对)的准备的同时,还必须提高和改善作为可用性根基的系统构建与运维过程的质量,例如编写文档并持续改善,以及进行完整、彻底的确认等(图2.2)。通过这些影响系统可用性因素的作用,可以有效地将系统整体的可用性维持在一个高水平上。 A  消除粗心的错误,日经电脑,日经BP出版社,2008年7月15日,第39页。 图2.1 可用性策略的级别与投资额的相关性 图2.2 可用性策略的全局图 预防故障 预防故障是指尽可能地防止故障发生,是提高系统可用性的根本策略。在本策略中也包含了将故障影响范围缩至最小的策略。为了预防故障,需要采取“改善质量”“故障保护”“排除SPOF”等措施。 改善质量 从设计阶段开始,就不断地对应用程序设定质量目标,并逐步实现这些质量目标,以这种方式来进行系统构建是非常重要的。因为如果问题在测试阶段才暴露出来,会导致返工或者无法抽出时间和精力来提高应用程序质量等情况的发生。 在设计阶段将应当实现的项目设定为质量项目并落实成规格说明书(设计书)是非常重要的。质量项目不仅在评审活动中可以用作评审标准,还可以在测试阶段作为编写测试项目的参考。 故障保护 故障保护(Fail Safe)原本是指设定安全阀门来避免在发生意外故障时产生灾难性后果(对操作者或设备而言)。在计算机系统中,也可以设计并实现故障保护。例如,可以在应用程序中限制从数据库中读取数据的最大记录数,来确保不会出现因应用程序使用过多内存而导致系统停止的状况。 排除SPOF 排除SPOF在防止因硬件故障导致系统宕机方面是非常有效的。服务器和磁盘、网络设备、线缆等许多SPOF都可以通过硬件冗余来防止系统宕机。 使用具有实际效果的产品 具有实际效果的软件、硬件以及它们的组合,由于用户数量多,严重的问题都已经被发现并修复了,版本也较为稳定,因此可以有效地确保高可用性。 简单化 系统越复杂,不仅引发故障的因素会越多,而且会更加容易诱发因对系统理解不充分而引起的误操作,导致系统宕机。例如,可以统一各系统间作业管理的基础设施使协作作业简单化,来有效地防止各系统间进行协作作业时可能发生的错误。 运维、设定的自动化 积极地使用、开发运维管理工具可以有效地减少手工作业内容,避免误操作。另外,为了防止配置错误,在配置验证工具与配置文件的自动生成等细小环节上下一些工夫也是非常重要的。 应用ITIL ITIL网罗了与运维管理相关的业务过程并将它们梳理成体系,从整体思考方法到小技巧均有记载。因此,可以考虑将其作为最佳实践应用于系统的运维管理活动中。 快速恢复 实现快速恢复,将故障发生对业务的影响降到最低,是与预防故障同样重要的策略。要实现快速恢复,不仅要优化备份与恢复方式,还要准备并优化联络体制和运维步骤(检测、记录、 诊断、修理、恢复、复原)。 此外,还需要事先制定包括灾害等意外情况发生时的“应急预案”A在内的BCP(Business Continuity Plan,业务连续性计划)B和BCM(Business Continuity Management,业务连续性管理)C。 运维体制的准备 事先准备好联络体制与应对体制,对于发生问题时将其对业务造成的影响降到最低是非常重要的。不仅要准备监控、维护的体制,还需要准备包括与企业所有者进行联络在内的其他体制。此外,还需要事先讨论好当问题不能如预想的那样顺利解决时需要汇报的对象D。 A  指的是为了将灾害造成的损失降到最低而事先制定的、灾害发生后的应对方法和行动步骤的相关计划。 B  指的是发生灾害时能尽可能地降低其对公司业务的影响,利用有限的经营资源,继续开展最低限度的业务活动,并能够在目标恢复时间内让业务再次展开的行动计划。相对于应急预案,BCP计划更加注重保持业务的连续性。 C  指的是包含了从BCP的制定到运维、重新评估的整个管理系统。 D  指的是在问题解决过程中依赖其下达指示和进行判断的人,或者是具有很高的技术能力,可以帮助解决问题的人。典型的汇报对象包括管理者与责任者,或者是在专业上造诣更深的技术人员等。 运维步骤的准备 主要通过事先准备、确认以下几个项目的相关步骤,在发生故障时就可以实现迅速对应和防止二次灾害。 ●影响最小化(分离故障机器等) ●对导致故障的变更进行回退(卸载补丁文件等) ●为了确定合适的故障对应人员而对故障原因进行初步分析(判断原因是属于应用程序层还是属于基础设施层等) 对于典型的故障,通过讨论其“对于业务的影响”,并事先定义“紧急度”“目标恢复时间”,当实际故障发生时就可以在现场迅速地为故障设定相应的优先级。 业务连续计划/业务连续管理(BCP/BCM) 通过准备业务连续计划(BCP)以及业务连续管理(BCM),可以管理危机发生时其对业务产生的影响,并将影响降至最低。然后可以迅速地采取具体的方法和手段来恢复系统。在BCM中制定BCP,并持续地进行关于BCP的训练、维持和更新活动。 错误日志 应用程序的错误日志中记录的信息对于解析故障发生时的系统状态有着重要的作用。具体来说,向系统维护人员传达以下信息是很重要的。 ●可以查明错误发生位置的信息(错误发生时,运行中的程序的位置、负责的业务、调用的方法等) ●导致问题的数据项目与参数信息,以及可以查找出这些数据的主键等 除了在错误日志中记录能够区分故障原因的必要信息以外,还需要将错误日志设计得通俗易通,使运维人员可以很容易地理解故障的影响范围。 基础设施开发与应用程序开发一样,需要记录可以区分故障原因的有效信息(脚本中错误代码的位置等)。 调整监控项目 为了迅速地查明故障原因并采取应对策略,必须设定充分的监控项目(可用监控、进程监控、SNMP(Simple Network Management Protocol,简单网络管理协议)自陷监控等)和监控对象。 备份、恢复的设计和调优 为了缩短MTTR(Mean Time To Recovery,平均恢复时间),必须采取合适的设计与调优措施,例如定期获取系统备份、将恢复方式多样化、减小恢复前滚量等。 编写文档与持续改善 为了提高系统构建与运维过程的质量,将过程编写为文档(可视化)是非常重要的。编写的文档类型既包括“操作手册”等描述具体内容的文档,也包括“标准化方针”等记载着基本思想这些抽象内容的文档。 另外,编写文档的优点不仅在于通过它,我们可以习得技能和将技能标准化,而且编写文档自身也可以成为各种过程质量改进活动的基础,间接地提高服务的可靠性。 但是,文档需要经常更新并进行整合,这也会增加成本。因此从系统的整个生命周期出发考虑性价比,制定文档编写的方针是非常重要的。 站在读者的角度编写文档 编写文档的过程中很重要的一点就是要站在运维人员等系统用户的角度来编写文档。因为只有试着去理解读者会被置于什么状况中、他们需要什么样的指导来帮助他们完成任务,才能够编写出最适合他们的文档。在定义术语时要使用清晰明白的语言、不能使用模模糊糊的用语,并要根据读者的水平给难以理解的内容配上示意图来进行说明。另外,站在读者的角度编写文档对于为文档读者提供合适的、必要的信息是非常重要的。 通过编写《文档编写要领》和《术语集》等标准化指南文件,并任命文档管理者来检查文档的质量及各文档之间的一致性,可以有效地消除因文档作者不同而带来的混乱感,提高文档质量。 持续改善的过程 为了能够提高系统价值,使系统可以应对环境变化,故障应对等持续改善的过程是非常必要的。 在ITIL V3中,将持续改善的过程定义为以下7个步骤A。 ❶ 定义应该测量什么 为了达到改善目的,确定应当将哪些项目提高到什么水平 ❷ 定义能够测量什么 对于选择要进行测量的项目,讨论它们能否被测量 A  ITIL虽然非常注重PDCA(Plan:计划。Do:执行。Check:评价。Act:改善)周期,但是在ITIL V3中特意将Check-Art部分独立出来,更加强调通过PDCA周期来进行改善活动的重要性。 ❸ 收集数据 确定进行测量所必需的数据的收集方法,并开始实际收集 ❹ 处理数据 处理收集到的数据,并整理出需要的信息。 ❺ 分析数据 分析这些信息,测量目标达成情况,并在没有达成目标时分析其原因 ❻ 展示并使用信息 向相关人员提出分析结果报告 ❼ 实施改善措施 根据报告进行判断,在需要采取改善措施的时候,进行相应的改善 改善成功的重要因素包括了“管理者的参与”“分工合作以提高改善活动的效率”以及“任命推进改善活动的责任人”等,也就是说进行改善活动的主体应该是一个组织,而非个人。 “管理者的参与”指的是由董事长等高级管理者设定改善活动的目标并确保这个目标的实现。目标明确并有高级管理者作为后盾,推进责任人与改善活动参与者就会更加积极地进行改善活动。 “分工合作以提高改善活动的效率”是指通过指定专人专项,使其全身心投入改善活动中,从而加快改善周期,提高改善效率。 “任命推进改善活动的责任人”是指通过明确改善活动的责任人,加快做出决定的过程,确保各项工作的一致性。 完整、彻底的确认 要想切实提高服务的可用性,不能带着“一定没问题的”这样乐观的设想来开展工作,而是必须对所有的开发过程都逐一进行彻底的确认。 要想实现这个目标,除了采用检查项目清单(Check List)等工具外,还可以通过创造能保持、激发现场经理、工作人员能动性的工作环境,促使他们积极主动地开展完整、彻底的确认活动。 而要想保持与激发能动性,可通过“明确现场可自主酌情处理的范围”“增加报告确认进度与讨论内容的机会”等,加深当事者对项目的理解,增强他们对职位、工作任务的责任感。 此外,进行工作报告和评审活动时,区分开现实情况与前提条件会更容易察觉到风险。 至此,我们讲解了可用性策略的基本思考方法。接下来,我们将分类讲解可用性策略的设计方式。

>图解基础设施设计模式

图解基础设施设计模式
作者: [日] NTT DATA集团
原作名: インフラデザインパターン ~安定稼動に導く127の設計方式
isbn: 7115389926
书名: 图解基础设施设计模式
页数: 217
译者: 杨文轩
定价: 59.00元
出版社: 人民邮电出版社
出版年: 2015-5