练习 - 构建分层运行状况结构

已完成

在本练习中,你的任务是为示例应用程序设计分层运行状况模型。 首先查看应用程序体系结构、应用程序使用的关键 Azure 服务,以及 Azure 服务对整体用户体验的贡献。

示例应用程序

本练习的示例是 Contoso Shoes 使用的 Web 应用程序。 该应用程序支持员工浏览产品目录、更新目录中的各个项,并通过在应用程序中创建注释与其他用户交互。

Contoso Shoes 的运营团队确定了此应用程序的两个关键业务需求。 员工必须能够:

  • 通过显示项列表和浏览项来与目录交互。
  • 为各个项创建注释,以供其他用户查看。

运行状况模型至少应包括以下两个关键操作。

体系结构

显示 Contoso Shoes 应用程序体系结构的关系图。

组件

  • 前端 Web 应用程序:此工作负载的用户界面,在 Azure Web 应用上运行。

    • 读取自:目录 API、Azure Blob 存储
    • 写入到:目录 API
  • 目录 API:前端 Web 应用程序用于对目录项和注释执行数据操作的 API 层。 它不会写入数据库。 而是将消息发送到事件中心进行异步处理。 此组件托管在 Azure Functions 上。

    • 读取自:Azure Cosmos DB
    • 写入到:Azure 事件中心
  • 后台处理器:异步处理数据库更新的组件。 处理器没有公共终结点。 此组件托管在 Azure Functions 上。

    • 读取自:Azure 事件中心
    • 写入到:Azure Cosmos DB
  • 消息中转站:消息处理器使用 Azure 事件中心在目录 API 和后台处理器之间传递消息。

  • 数据库:数据保存在 Azure Cosmos DB 中。 目录 API 直接从数据库读取。 后台处理器处理写入。 映像存储在 Azure Blob 存储中。

  • 机密:此工作负载的应用程序组件使用机密授予访问权限。 机密存储在 Azure Key Vault 中。 目录 API 和后台处理器使用连接字符串访问数据库和 Azure 事件中心。 前端 Web 应用程序使用 API 密钥来调用目录 API。

  • 监视:应用程序组件将所有数据度量发送到 Application Insights,由 Log Analytics 工作区提供支持。 使用同一工作区收集此工作负载的其他日志和指标。

将体系结构分层

如上一单元所述,运行状况模型应该是分层结构。 为运行状况建模的过程是一个体系结构练习,用于定义所有用户流、映射功能组件和逻辑组件之间的依赖关系以及 Azure 资源之间的依赖关系。

在此阶段,识别用户流并构建运行状况模型是一项概念性练习。 使用纸笔或空白文档记录各个层并绘制结构。

对于本练习,我们的运行状况模型有三层:用户流、应用程序组件和 Azure 资源。

用户流

从体系结构的顶部开始,根据预期的应用程序功能考虑可能的用户流。 尝试抽象化技术详细信息和 Azure 服务,并从用户的角度评估流。

  • 哪些过程至关重要?
  • 员工如何使用应用程序实现业务目标?

根据运营团队确定的要求,顶层应至少有两个用户流:“列出目录项”和“添加注释”。

如果你能想到更多内容,请将它们包含在运行状况模型中。

应用程序组件

向下移动一层并评估应用程序组件。 首先提出问题,例如:

  • “应用程序的哪一部分使此流正常工作?”
  • “哪些微服务或组件参与此流?”
  • “如果此部分失败,此流是否仍然正常工作?”

目的是识别在技术层面对每个用户流有贡献的应用程序组件。 这些组件可以是 API、后台工作线程、微服务等。

此工作负载至少有三个应用程序组件参与这两个识别的用户流:前端、目录 API 和后台处理器。

Azure 资源

底包含各个应用程序组件使用的 Azure 资源。 对于本练习,组件部分介绍了组件和资源。

注意

实际方案可能有更多服务,并且服务之间的关系更为复杂。 构建成功的运行状况模型的关键是确定哪些部分至关重要,以及每个组件对系统整体运行状况有何贡献。

绘制最终运行状况模型结构

将收集的信息置于运行状况模型结构的图形表示形式中。 应如下图所示:

显示此分层运行状况模型的体系结构的关系图。

从上到下,Web 应用程序运行状况模型具有以下层:

用户流
  • 列出目录项。 依赖于前端 Web 应用程序和目录 API。
  • 添加注释。 依赖于前端 Web 应用程序、目录 API 和后台处理器。
应用程序组件
  • 前端 Web 应用程序。 依赖于 Blob 存储和目录 API。
  • 目录 API。 依赖于 Azure Cosmos DB、Key Vault 和事件中心。
  • 后台处理器。 依赖于 Azure Cosmos DB、Key Vault 和事件中心。
Azure 资源
  • Blob 存储
  • Azure Cosmos DB
  • 密钥保管库
  • 事件中心