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