编写脚本前请三思:Gen/App 恢复的最佳实践
SIOS 恢复套件提供了丰富的应用程序感知监控和恢复最佳实践。通常,每个 SIOS 恢复套件都提供了一种循序渐进的编程方法,用于根据以下要求恢复应用程序、数据库或服务:高可用性 (HA) 最佳实践SIOS 恢复套件提供在系统正常关闭、意外系统故障或崩溃,甚至应用程序、数据库或服务本身崩溃或不可用的情况下恢复运行所需的智能信息。此外,每次恢复都融入了二十多年来在该领域积累的经验智慧和改进。
但是,如果客户仍然需要编写自己的脚本来提供 HA,适用于 Windows 的 SIOS LifeKeeper和适用于 Linux 的 SIOS LifeKeeper包括通过脚本集成的选项通用应用程序 (Gen/App) 恢复工具包。
编写 Gen/App Recovery 脚本的最佳实践
-
使用现代的、受支持的脚本语言进行 Gen/App 恢复
现有解决方案的常见做法是在新系统和架构上使用旧的现有脚本。但是,务必确保使用的是现代且受支持的脚本语言。
-
避免在 Gen/App 脚本中使用硬编码值
使用硬编码值可能会导致可移植性问题,以及长期维护方面的挑战。请避免使用在未来部署中可能会发生变化的硬编码值,例如目录路径、用户名或类似值。
-
实践代码重用以提高 Gen/App 脚本质量
重复代码是客户开发的脚本中常见的问题。重复代码会造成质量、维护和故障排除方面的问题。请练习代码重用,例如继承、函数和子例程。
-
为函数和变量选择有意义的名称
描述性变量比“n”或“i”等单字符变量更有帮助。几个月或几年后再查看代码时,“n”这个变量的意义还会和“iReturnCode”一样重要吗?
-
删除未使用的函数和变量以防止代码膨胀
虽然函数和变量的命名很重要,但要避免使用未使用的变量和函数来扰乱代码。声明变量而不使用它们会在未来的更新和故障排除过程中造成混乱。虽然 8 MB 内存的时代早已过去,但额外添加一些重用性有限或没有额外价值的变量或函数仍然会造成负担,并导致代码膨胀。
-
验证所有输入参数以确保 Gen/App 可靠执行
急于让程序正常运行,不要忽略输入变量的验证。务必验证脚本和函数的所有输入。不要想当然地认为“我们做到了”,所有输入都是有效的。
-
记录有用且可操作的消息
考虑需要记录哪些输出以用于状态/进度、错误情况或故障排除。每条消息都应经过深思熟虑,并采用适当的措辞,以便为运维人员和未来的开发人员提供有用的反馈。
8.检查所有方法/函数/API调用的返回代码并采取防御措施
在脚本或函数主体内执行的命令将具有返回代码,明确表示为通过、失败或其他。请务必检查、记录并妥善处理方法、函数和 API 调用的预期和意外返回代码。
-
使用防御性编程技术
应用防御性编程的最佳实践,包括最小特权访问、输入验证、错误处理等。
-
测试 Gen/App 恢复脚本超越快乐路径
仅有可运行的代码是不够的。制定一个强大的验证计划,并对代码进行广泛的测试,尤其是在预期一切正常的情况下,更要超越“快乐路径”的范畴。
-
使用版本控制进行脚本管理和故障排除
使用版本控制和代码管理工具。版本控制对于故障排除、管理和跟踪脚本不可避免的修复至关重要。
-
通过代码检查和同行评审尽早发现错误
使用代码检查和同行评审来提高代码的弹性和稳健性。代码评审有助于及早发现问题,并降低后期故障和错误带来的成本、风险和负担。
-
验证在 Gen/App Recovery 中执行所需的权限
拥有组织良好、现代化、经过审查、检查、测试和控制的代码是精心编写的 gen/app 脚本的重要组成部分。然而,即使是编写得最好的脚本,如果没有正确的权限,也将无法执行。请确保脚本具有正确的权限,以便独立执行以及在高可用性解决方案的服务/用户帐户下执行。
-
清晰地注释代码以解释逻辑和业务用例
提供有助于解释业务逻辑和用例、描述预期函数输入和返回值并有助于整体理解的注释。即使代码编写良好,也需要注释,尤其是在业务逻辑或需求不明确的情况下。注释块示例如下:名称:
目的:
先决条件:
后置条件:
返回:
准备好自信地简化 Gen/App 恢复了吗?
不要让高可用性成为偶然。借助 SIOS LifeKeeper 和通用应用程序 (Gen/App) 恢复套件,您可以保护关键应用程序、简化恢复并减少停机时间。
立即申请演示了解 SIOS 如何帮助您实现可靠、经济高效的高可用性和灾难恢复。
作者:Cassius Rhue,SIOS 客户体验副总裁
经许可转载SIOS




