弹性应用程序体系结构在过去的几年里得到了显著的发展。在单片应用的时代,在大型数据中心设置中使用静态应用部署,弹性要求在单个部署中具有深度和冗余。它需要始终在线的规模,以满足最大的预期工作负载,以及冗余连接和电源。
在单片应用程序环境中,单个组件(如服务器)可能会出现故障,因此组织构建了具有组件级冗余的部署。例如,他们在主/辅助配置中创建多个数据库服务器,或在活动/活动配置中创建多个应用服务器。
随着时间的推移,随着弹性需求的增加,灾难恢复(DR)设置变得更加普遍。它们在备用部署了完整的应用程序基础设施,并定期或连续地复制数据。在发生重大故障的情况下,IT团队将切换“大开关”,将工作负载转移到容灾部署。
云计算和IaaS的出现极大地改变了我们对应用程序弹性的看法。随着条件的变化和工作负载的变化,快速部署新资源的精简配置和自动扩展现在成为可能。构建二级和三级容灾环境非常简单。现在有一些技术可以支持主动/主动设置,比如多主数据库复制系统和全球负载平衡技术,这些技术由现代DNS和流量管理服务提供。
今天,我们看到弹性应用程序的构建方式发生了新的变化,因为云服务在应用程序栈中的重要性正在显现。云服务包括软件即服务(SaaS)风格的技术,如云存储、数据库即服务(DBaaS)、人工智能即服务(AIaaS)、内容交付网络(cdn)和托管DNS网络。如今的应用程序越来越多地构建在云服务是关键路径组件的架构中。
当堆栈中的一个关键云服务失败时,会发生什么?2017年AWS S3宕机提供了一个真实的例子。导致许多依赖S3云存储服务的主流网站和应用程序出现故障。
正如冗余是在单片应用架构时代引入的一样,今天的云服务应用要求在堆栈的云服务层有冗余:
- 主要/次要云存储提供商
- 多重云
- Multi-CDN
- 多个DNS网络
云服务冗余对于为当今的应用程序构建弹性架构至关重要,SaaS技术和云服务是可能并且确实会失败的关键组件。
引入云服务冗余从管理应用程序工作负载开始:如何跨多个云服务提供商指导工作?DNS是管理工作负载的最强大的工具之一。您可以利用现代DNS提供商的流量管理工具来权衡跨云服务的流量,根据实时条件转移工作负载,并避开受损的云服务提供商。
当然,引入DNS冗余也很重要,以减轻由于攻击或其他问题而导致的主要服务提供商中断的影响。一些现代DNS提供商可以通过部署多个DNS网络帮助您轻松引入DNS冗余。
考虑如何提高应用程序体系结构的弹性?考虑您的云服务提供商以及如何在云服务层引入冗余,并与您的DNS和流量管理提供商讨论如何管理多云、多cdn和其他多云服务设置。