运营设计
在操作中向左移动以预测故障情况。 |
---|
在开发生命周期中尽早并经常测试故障,并确定性能对可靠性的影响。 为了进行根本原因分析和事后分析,你需要跨团队共享依赖关系状态和正在发生的故障。 来自可观测系统的见解、诊断和警报是进行有效的事件管理并持续改进的基础。
Contoso University 运行基于微服务构建的 Web 应用,为 Contoso 的教职工和学生提供教育服务(例如在线课程)。 工作负载基于 Azure 应用服务、Azure SQL 数据库、Microsoft Entra ID、Azure Key Vault、Azure 服务总线、Azure Monitor 和 Azure DevOps 构建。
实施可靠的监视
构建可以关联遥测数据的可观测系统。
监视和诊断是至关重要的操作。 如果某些操作失败,你需要知道它失败了、何时失败以及为何失败。 在组件级别的可观测性是基本的,但组件和相关流的聚合可观测性提供了运行状况的整体视图。 要使站点可靠性工程师能够确定修正工作的优先级,则需要此数据。
Contoso 的挑战
- 工作负载应用程序部署为跨多个功能层且包含五个独立服务的套件的一部分。
- 该团队希望能够在事务和用户请求遍历解决方案的各个层时对其进行分析,以确定可能会导致不稳定的瓶颈,并在出现问题时执行更高效的故障排除。
应用方法和结果
- 工作负载团队为组件添加检测机制,以使用 Application Insights 捕获日志和指标,并为所有平台服务配置日志记录。 所有日志都转发到工作负载的 Azure Monitor 工作区。
- AzM 工作区中的数据可用于分析解决方案的各个组件的运行状况,以及聚合的流和解决方案运行状况。
- 跨组件和层关联属于同一请求的条目有助于团队确定工作负载运行状况,并促进其故障排除过程。
预测潜在的功能障碍和异常行为
通过使用设置了优先级的可操作警报,使处于活动状态的可靠性故障可见。 投资打造可靠的流程和基础设施,从而更快地进行会审。
站点可靠性工程师可以立即得到通知,以便他们能够缓解正在发生的现场事件,并在发生现场事件之前主动缓解预测警报识别出的潜在故障。
Contoso 的挑战
- 该团队预计,随着学生注册课程、获取教学大纲和购买课本,每学期初的流量都会显著增加。
- 在学年的这一关键时期,团队需要确保有足够的容量来应对预计的负载增长。 团队还需要能够快速响应可能出现的其他潜在可用性问题。
应用方法和结果
- 团队将 Web 层和数据库层配置为在需求预计会增加之前自动横向扩展以提供额外的容量,并随着负载的增加持续分配容量。
- 对应急响应计划进行了调整,规定在这段时间内与承受压力的流程相关的警报将由事件响应团队优先处理。
测试可靠性风险
在生产和预生产环境中模拟故障并运行测试。
在生产中经历故障是有益的,这样您就可以设定现实的恢复预期。 这使你能够做出可以从容应对故障的设计选择。 此外,它还使你能够测试为业务指标设置的阈值。
Contoso 的挑战
- 在此工作负载中,Web 层与学生注册 REST 服务之间的通信依赖于客户端证书。
- 因为学生注册功能在学期开始后使用不多,如果学生注册服务使用的证书过期,该问题在一段时间内可能不会被发现。
- 此外,在上一次注册期间,由于系统未正确处理暂时性的连接故障,服务出现了几次中断。 团队做了一些代码改进来处理暂时性故障,但不确定该功能在实际生产场景中的行为方式。
应用方法和结果
- 该团队开发了综合事务测试,该测试将每月在生产中运行,以模拟几个流程,包括注册流程。
- 为综合事务测试配置了警报,以便在发生故障时通知团队,涵盖了证书过期的风险。
- 此外,该团队还投资在 SDLC 中构建混沌测试,执行常规混沌测试并获取结果,以验证自我保护技术,并帮助发现以前未知的可靠性问题。