Microsoft 已共享Reliable Web App 模式的源代码和文档,这是一组最佳实践,可帮助本地 Web 应用程序开发人员在 Azure 中以最少的更改创建安全、可靠且成本优化的云应用程序。
该模式利用Azure Well-Architected Framework,这是一组用于提高云工作负载质量的指南。Reliable Web App 模式应用该框架,使开发人员能够对核心业务线应用程序代码进行最少的更改。针对负责将现有应用程序迁移到 Azure 的企业开发人员的整个模式有明确的指导方针。
该模式在参考应用程序中实现。该应用程序是一家名为 Relecloud 的虚构公司的面向员工的内部购票应用程序。该应用程序最初是为内部部署而开发的。微软分享了架构文档、一个生产就绪的源代码和六个学习视频,以缩短开发者的学习时间。
Reliable Web App 模式使用重试和断路器设计模式实现弹性。重试功能利用 Azure SDK 内置机制和Polly 瞬态故障处理库进行自定义代码重试。处理非瞬态故障的断路器模式也是使用 Polly 库实现的。
为了提高性能,Reliable Web App 模式要求使用缓存机制。推荐的方法是将Cache-Aside设计模式与 Azure Cache for Redis 服务结合使用。参考应用程序还包括用于降低成本和复杂性的本地分布式内存缓存端实现。
在有关模式发布的博文中,Madhusudana BS 评论说,缓存端模式是不够的,开发人员还应该采取措施防止并发请求错过缓存并淹没底层数据存储时发生缓存踩踏事件。Jody Donetti 建议使用LazyCache、CacheTower或他自己的FusionCache 等库。
可靠的 Web 应用程序模式包括成本优化措施,例如自动缩放、单一缓存源和适当大小的 Azure 服务。该模式的基础设施即代码 (IaC) 使用带有参数的 Bicep 模板来进一步自定义参考实现的成本和配置。这些环境是使用 GitHub 操作部署的,实现了Azure Well-Architected 框架的可重复基础设施原则。
该模式还旨在解决云中的安全问题。处方是使用 Web 应用程序的托管 Azure 标识与其余 Azure 服务进行通信,并使用最少权限所需的授权策略。此外,托管身份允许以可跟踪和可审计的方式访问 Azure 资源。当不支持托管标识时,建议使用中央机密存储库,例如 Azure Key Vault。
对于入口,Web 应用程序防火墙 (WAF) 可防止机器人攻击和安全探测。Reliable Web App 模式利用Azure Front Door服务来实现此目的。