您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

Microsoft Azure 架构良好的框架

Azure 架构良好的框架是一组指导原则,可用于提高工作负荷的质量。 该框架包含卓越体系结构的五个要素:成本优化、卓越运营、性能效率、可靠性和安全性。 结合这些要素可帮助创建高质量、稳定且高效的云体系结构。

若要使用在 Microsoft Azure 架构良好的框架中找到的原则来评估工作负载,请参阅 Microsoft Azure 架构良好的框架回顾

我们还建议使用 Azure 顾问和顾问分数来确定机会并设置其优先级,从而改进工作负载的状况。 这两种服务均免费供所有 Azure 用户使用,并与架构良好的框架的五个要素保持一致:

  • Azure 顾问是个性化的云顾问程序,可帮助遵循最佳做法来优化 Azure 部署。 它可分析资源配置和遥测使用情况,并推荐解决方案,有助于提高 Azure 资源的经济效益、性能、高可靠性、卓越运营和安全性。 在此处详细了解 Azure 顾问

  • 顾问分数是 Azure 顾问的核心功能,将顾问建议聚合为一种简单的可操作分数。 这使你可以一目了然地了解是否需要采取必要步骤来生成可靠、安全和经济高效的解决方案,并确定操作的优先级,优先考虑将对工作负载状况带来最大改进的操作。 顾问分数含有一个总体分数,可以进一步细分为五个类别的分数,各自对应于每个架构良好的框架。 在此处详细了解 Azure 顾问。

构成要素 说明
成本优化 管理成本以便最大程度地提供实现的价值。
卓越运营 让系统在生产环境中持续运行的操作过程。
性能效率 系统适应负载变化的能力。
可靠性 系统从故障中恢复并继续正常运行的能力。
安全性 保护应用程序和数据免受威胁。

成本优化

设计云解决方案时,请重点关注如何及早产生增值。 运用生成-度量-学习的原则,在加快上市时间的同时避免资本密集型解决方案。 将即用即付策略用于你的体系结构,并且投资于横向扩展,而不是交付大型投资第一版。 考虑你的体系结构中的机会成本,以及在先发优势与“快速跟进”之间的平衡。 使用成本计算器来估计初始成本和运营成本。 最后,建立策略、预算和控制,以便为解决方案设置成本限制。

成本指南

卓越运营

该要素涵盖了使应用程序在生产环境中持续运行的操作和流程。 部署必须可靠且可预测。 它们应实现自动化,以减少人为失误的可能性。 它们应当是一个快速、例行的过程,这样就不会拖慢新功能或 bug 修复的发布。 如果更新出现问题,你必须能够快速回滚或前滚,这一点也同样重要。

监视和诊断至关重要。 云应用程序在远程数据中心内运行,你在此中心内无法完全控制基础结构,或者在某些情况下无法控制操作系统。 在大型应用程序中,不可能登录到 VM 来解决问题或仔细查看日志文件。 使用 PaaS 服务时,可能根本就没有可登录的专用 VM。 通过监视和诊断,你可以深入了解系统,以便知道故障在何时及何处出现。 所有系统都必须可观测。 可使用常见的一致日志记录架构,以便跨系统关联事件。

监视和诊断过程包含多个不同的阶段:

  • 检测。 根据应用程序日志、Web 服务器日志、Azure 平台内置的诊断以及其他来源生成原始数据。
  • 收集和存储。 将数据整合到一个位置。
  • 分析和诊断。 用于解决问题,查看总体运行状况。
  • 可视化和警报。 使用遥测数据发现趋势或向运营团队发出警报。

通过 Azure Policy 强制执行资源级规则有助于确保对支持工作负载的所有资产采用卓越运营的最佳做法。 例如,Azure Policy 可帮助确保所有支持工作负载的 VM 均符合预批准的 VM SKU 列表。 Azure 顾问提供了一套 Azure Policy 建议,可帮助你快速识别为工作负载实现 Azure Policy 最佳做法的机会。

使用 DevOps 清单从管理和 DevOps 角度审查你的设计。

卓越运营指南

性能效率

性能效率是指工作负载能够以高效的方式扩展以满足用户对它的需求。 实现这一点的主要方法是适当地使用可伸缩性并实现内置可伸缩性的 PaaS 产品/服务。

应用程序可通过两种主要方式进行扩展。 垂直扩展(纵向 扩展)指增加资源的容量,例如通过使用更大的 VM。 水平扩展(横向 扩展)指添加资源的新实例,比如 VM 或数据库副本。

水平扩展相较垂直扩展具有明显优势:

  • 真正的云规模。 可将应用程序设计为在数百个甚至数千个节点上运行,其规模是在单个节点上无法达到的。
  • 水平扩展具有弹性。 如果负载增加,可以添加更多实例;在较安静的时间段,则可以删除实例。
  • 可以按计划或为响应负载变化,自动触发横向扩展。
  • 横向扩展可能比纵向扩展更便宜。 运行多个小型 VM 比运行单个大型 VM 的成本更低。
  • 水平扩展还可通过添加冗余提高复原能力。 如果某个实例出现故障,应用程序将继续运行。

垂直扩展的一个优点是,扩展时不必对应用程序进行任何更改。 但会在某个时候达到极限,即,再也无法纵向扩展。 这时,任何进一步的扩展都只能是水平扩展。

必须将水平扩展设计到系统中。 例如,可通过将 VM 放在负载均衡器后面来横向扩展 VM。 但池中的每个 VM 都必须能够处理任何客户端请求,因此应用程序必须无状态或将状态存储在外部(例如,在分布式缓存中)。 托管 PaaS 服务通常内置水平扩展和自动扩展。 能轻松扩展这些服务是使用 PaaS 服务的主要优点。

不过,只添加更多实例并不意味着就扩展了应用程序。 它可能只是将瓶颈推到了其他地方。 例如,如果扩展 Web 前端以处理更多客户端请求,则可能在数据库中触发锁争用。 然后,你就得考虑其他对策,比如乐观并发或数据分区,以提高数据库的吞吐量。

始终执行性能和负载测试以发现这些潜在瓶颈。 系统的有状态部分(如数据库)是导致瓶颈最常见的原因,因此在设计水平扩展时需谨慎。 解决一个瓶颈可能会暴露其他位置的其他瓶颈。

使用性能效率检查表从可伸缩性的角度审查你的设计。

性能效率指南

可靠性

可靠的工作负载是可复原且可用的工作负载。 复原能力是指系统从故障中恢复并继续正常运行的能力。 复原能力的目标是在故障发生后将应用程序恢复到可完全正常运行的状态。 可用性是指用户在需要时能否访问你的工作负载。

传统应用程序开发一直将焦点放在如何延长平均故障间隔时间 (MTBF) 上, 并尝试各种办法防止系统出现故障。 在云计算中,必须采用不同的思维方式,原因如下:

  • 分布式系统很复杂,一个点的故障可能在整个系统中级联。
  • 云环境通过使用商用硬件保持低成本,因此必须预料到偶尔的硬件故障。
  • 应用程序通常依赖于外部服务,这些服务可能会变得暂时不可用或限制大量用户。
  • 现在的用户都希望应用程序能够全天候可用,永不下线。

所有这些因素都意味着设计云应用程序时必须预料到偶发故障并从中恢复。 Azure 已向平台内置许多复原功能。 例如:

  • Azure 存储、SQL 数据库和 Cosmos DB 都在区域内以及跨区域提供内置数据复制。
  • Azure 托管磁盘自动放置在不同的存储缩放单元,以限制硬件故障的影响。
  • 可用性集中的 VM 分布在多个容错域。 容错域是指一组共享公共电源和网络交换机的 VM。 跨容错域分布 VM 可限制物理硬件故障、网络中断或断电的影响。

话虽如此,你仍需构建应用程序的复原能力。 复原策略可应用于体系结构的所有级别。 有些缓解措施本质上更具战术意义 — 例如,在暂时性网络故障后重试远程调用。 其他缓解措施则更具战略意义,比如将整个应用程序故障转移到次要区域。 战术性缓解措施可以带来很大变化。 整个区域都发生中断的情况很少见,像网络拥塞这样的暂时性问题则更常见 — 因此先锁定这些问题。 正确的监视和诊断也很重要,它们都能检测到正在发生的故障并找到根本原因。

设计可复原的应用程序时,必须了解可用性要求。 可以接受多长的故障时间? 这在一定程度上取决于成本。 潜在的停机会给业务造成多大的损失? 使应用程序保持高可用性需要投入多少资金?

可靠性指南

安全性

考虑从设计和实现到部署和运行的整个应用程序生命周期的安全性。 Azure 平台会提供保护以应对各种威胁,如网络入侵和 DDoS 攻击。 但你仍需在应用程序和 DevOps 过程中构建安全性。

下面是一些需要考虑的较广泛的安全领域。

身份管理

请考虑使用 Azure Active Directory (Azure AD) 对用户进行身份验证和授权。 Azure AD 是一项完全托管的标识和访问管理服务。 该服务可用于创建仅存在于 Azure 的域,或与本地 Active Directory 标识集成。 Azure AD 还与 Office365、Dynamics CRM Online 和许多第三方 SaaS 应用程序集成。 对于面向使用者的应用程序,Azure Active Directory B2C 允许用户使用其现有社交帐户(如 Facebook、Google 或 LinkedIn)进行身份验证,或者创建由 Azure AD 管理的新用户帐户。

若要将本地 Active Directory 环境与 Azure 网络集成,可通过多种方法实现,具体视你的要求而定。 有关详细信息,请参阅我们的标识管理参考体系结构。

保护基础结构

控制对已部署的 Azure 资源的访问。 每个 Azure 订阅都与某个 Azure AD 租户存在信任关系。 使用 Azure 基于角色的访问控制 (Azure RBAC) 向组织内的用户授予对 Azure 资源的正确权限。 通过向特定范围内的用户或组分配 Azure 角色,授予访问权限。 该范围可以是订阅、资源组或单个资源。 审核对基础结构的所有更改。

应用程序安全性

一般来说,应用程序开发的安全性最佳做法在云端仍然适用。 其中包括随处使用 SSL、防止 CSRF 和 XSS 攻击、阻止 SQL 注入攻击等等。

云应用程序通常使用具有访问密钥的托管服务。 绝不要将这些服务签入源控件中。 请考虑将应用程序密码存储到 Azure Key Vault 中。

数据自主性和加密

使用 Azure 数据服务时,确保数据一直位于正确的地缘政治区域中。 Azure 的异地复制存储采用了同一地缘政治区域中的配对区域这一概念。

使用 Key Vault 保护加密密钥和密码。 通过使用 Key Vault,可以利用受硬件安全模块 (HSM) 保护的密钥来加密密钥和密码。 许多 Azure 存储和 DB 服务支持静态数据加密,包括 Azure 存储Azure SQL 数据库Azure Synapse AnalyticsCosmos DB

安全性资源