本文最初发表于 SimForm 网站,经原作者 Jignesh Solanki 授权,InfoQ 中文站翻译并分享。
跨多个云平台上部署多租户应用程序是一项挑战。本文中,我们将介绍六种多云架构设计,以帮助企业建立有效的多云策略。
为了使用最好的云开发服务,企业越来越希望利用各种云产品的灵活性和可选择性,以降低软件开发的成本。实际上,国际数据公司去年在 IDC FutureScape 报告中预测,多云应用将大幅增长,到 2020 年,超过 85%的企业 IT 公司将投资于多云架构。当企业快速地向数字化转型时,无论是公有云还是私有云,云计算的采用正在加速。同时,在不同的云平台上工作也会带来大量的挑战。对于首席技术官来说,缺乏云计算知识是最根本的问题。
本文为我们的多云系统架构博客系列的第一篇。在本文中,你将学习多云架构设计以满足不同企业的需求。在第二篇博文中,我们将讨论有效管理多云环境的策略。
在介绍多云架构之前,首先简单了解一下基本的云架构模型。
在网络上相当常见的基本云架构是 3 层架构。
这个架构包括 3 个主要的层次:负载均衡服务器、应用服务器、数据库服务器。每一层都有一个专门的服务器。
在上面的云架构图中,为了实现故障转移和故障恢复的目的,在各层采用了冗余服务器。这种结构称为冗余 3 层架构,用于生产环境。非冗余架构是在每一层都有一个服务器,只用来测试应用程序各层的交互。
这是最基本的,你可以根据应用情况使用额外的服务器。举例来说,我在数据层使用了 StripedVolume 设置,以便为应用程序添加更快的备份功能。
下面我们来看一个 Netflix 的例子。
Netflix 是如何管理如此庞大的视频集,并且不会中断地提供出色的流媒体体验?
那是因为其多个数据中心位于世界各地,一旦发生灾难,就会相互备份。此外,本地数据中心流媒体也提供更快速的观看体验。
在上述架构中,我们可以有多个数据中心,每一个中心都有它自己的负载均衡器层、应用程序层和数据库层。
如何做到这一点?请看下图。
云计算最令人着迷的体验是其水平自动伸缩特性。这样,你就可以按需增加或者减少服务器资源的数量,此工作通过负载均衡器来完成。为了根据预定义的警报条件自动伸缩,我们增加了一组服务器阵列来设置特定层级的架构。
多云策略是指同时使用两个或更多的云服务,比如 AWS、Azure、谷歌云等等。
这就是说,你可以使用谷歌云为你的美国用户提供服务,并使用微软 Azure 为你的欧洲客户服务。
或者,在使用 AWS EC2 实例和负载平衡的同时,还可以对数据库使用 Azure SQL,对用户管理使用 Cognito,所有这些都用于单个应用程序。
另外,你可以主要在 Digital Ocean 上运行你的应用程序,但是在 AWS 上完全被复制和备份。
你可以在不同的云上运行不同的应用程序。你可以将你的开发和测试环境放在一个云上,而你的生产环境被放到另一个云上。
此外,多云管理涉及到涉及监测云部署的成本。这对获得多云的好处很重要。
但是为了利用多云的优势,管理和监测云部署和成本是非常重要的。
多云策略在解决以下挑战时特别有效:
要构建高度可扩展且可靠的应用程序,应该进行多云架构设计。其目的是为了迁移在多种独立云上运行的基于云的系统的迁移提供架构指导。下面让我们看一些著名的多云架构和迁移策略。
在这种架构中,应用程序组件被托管在内部,迁移之后,可以使用其他云平台的不同云服务来提高性能。
这里的应用组件 C1 是内部托管的,但是在采用多云之后,它使用了 AWS 的存储服务 AWS S3,在进行计算时使用了 Azure 虚拟机。
优点:因为应用程序在多个云平台上重新托管,从而提高了可用性,避免了供应商锁定。
在这个架构中,应用组件被重新托管在云平台上,并使用来自多个云平台的其他云服务增强功能。
迁移之后,应用组件 C1 在 AWS 平台上重新托管,并开发使用 Azure 的环境服务。它使用 AWS S3 进行存储,计算选项为 AWS 或 Azure 。
优点:由于应用程序重新托管在多个云平台上,提高了可用性,避免了供应商锁定。
为提高服务质量,将对内部部署的应用程序进行重构,部署在多个云平台上。此时,应用程序需要重构成细粒度组件,以便能够单独优化高使用率组件的部署。这种情况下,高使用量的组件的部署与低消耗组件无关。并行化设计使得多云平台有更高的吞吐量。
这里 AC1 和 AC2 是在迁移之前在内部托管的两个应用组件。因为这两个组件都是独立的完整单元,所以 AC1 部署在 AWS 上,使用 AWS S3。而 AC2 则部署在 Azure 上,可按需使用。
优点:最佳的可扩展性/性能,一系列的多云部署选项,以应对业务/IT 变化的灵活性。
挑战:企业内部应用的现代化是孤立的。这些现代化主要是由于技术原因。由于多云环境,只能自下而上确定的组件架构可能需要重新评估。
重构的应用程序被部分地部署在多个云环境中,当主平台发生故障时,可以使用辅助部署使应用程序继续运行。
此处,AC1 和 AC2 是在迁移之前在内部托管的两个应用组件。因为这两个组件都是独立的完整单元,所以 AC1 保持在内部,而两个 AC2 被部署在 AWS 和 Azure 上进行灾难恢复。AC1 和两个 AC2 组件通过 EBS 或服务总线进行连接。
优点:当不健康的服务再次正常时,可传送流量,从而使系统的响应能力恢复到最大程度。
挑战:这种架构无法保证无缝故障转移。将会有停机时间。
在多种云环境中,一个重构的应用程序部分部署。这样,应用程序就可以在主平台发生故障时使用云代理服务,通过辅助部署继续运行。
在这个架构中,AC1 被部署在内部,两个重构的 AC2 部署在 AWS 和 Azure 两个云平台上。此处,云代理服务集成了所有三个组件,并为从多个供应商(云平台 AWS 和 Azure)选择服务提供了灵活性。
优点:当不健康的服务再次正常时,可传送流量,从而使系统的响应能力恢复到最大程度。
挑战:这种架构无法保证无缝故障转移。将会有停机时间。
各种内部应用程序 A1/A2、AC1 被重构为一个投资组合,并部署在云环境中。
优点:它为共享组件中提供一致的信息和规则。另外一个好处是降低了共享组件的运行和维护成本。
挑战:缺乏对共享能力方面的业务承诺。
第一眼看上去,这两个术语看起来是一样的,而且有些人会交替使用,但是它们并不同。在这里我们解释了这两者之间的差别,虽然细微,但却十分明显。
混合云是公有云和私有云的混合体,可以将像 AWS 这样的公有云连接到你的内部系统,并被编排成一起执行一个任务。在这种场景下,你希望优化你的工作负载,使其在正确的时间运行在正确的环境中。使用混合云,企业可以从所选择的供应商那里获得高弹性的计算资源,也许是为了在高峰期间管理和存储额外工作负载,或者是用于日常应用。然而,出于一些原因,例如隐私法规和安全,所有关键任务的内容仍然保留在内部基础设施上。
为什么要实施混合云?
在一些用例中,企业需要结合使用私有云和公有云来利用它们所提供的独特优势。
企业可以利用云爆发,即应用工作负载在私有云中到达阈值水平后,突然进入公有云,获取额外的计算资源。
对于企业而言,在开始进行与在私有云中启动相关的资本支出之前,为一个新的、未经测试的应用程序使用公共云资源是有意义的。当企业定义了一个稳定的工作负载管道以运行一个应用程序之后,就可以选择将这个应用程序引入内部系统。
此外,云客户可以使用混合云来促进高可用性(High Availability,HA)和灾难恢复(Disaster Recovery,DR)。举例来说,在灾难恢复的方案中,企业可以将它们的恢复环境放在一个公有云中,在私有云中放置生产环境,并随时准备启动。公司把数据复制到公有云中,但是其他所有资源在需要之前都是无法操作的。
通过提供使 IT 操作自动化以改进用户体验的基础设施,混合云架构提供了满足企业需求的最大灵活性。
多云代表超过 1 个相同类型的云部署,它可能是来自不同云提供商的公有云或私有云。企业采用多云技术来混合和匹配一系列的公有云和私有云,以使用最佳的应用和服务。
多云和混合云的方法互不排斥:你可以同时使用这两种方法。实际上,大多数企业都试图通过扩展环境组合来改善安全性和性能。
只是说明一下,多云架构与多租户架构不同。前者已经讲过了,后者是指软件架构,其中一个软件实例在服务器上运行,用于服务于多个租户。
为什么要实施多云?
不同的多云用例可以为 IT 团队提供更大的灵活性,并控制工作负载和数据。
因为多云提供了灵活的云环境,企业可以通过采用多云来满足几页和商业方面的特定工作负载或应用需求。
企业还看到使用多个云服务提供商解决应用延迟问题的地理优势。此外,一些公司可能会在短期内开始使用特定的云供应商来实现其短期目标,然后就停止使用。
另外,在 IT 领导者提倡多云策略时,常常会遇到两个问题,即供应商锁定和云供应商可能出现的中断。
多云环境带来了它们的挑战:复杂性、资源、专业知识、成本和管理等方面的问题,而且管理似乎是共同之处,仅举几例。
想想这个情形:
你运行的是一个私有云,它需要大量存储和网络资源池。与此同时,你还有另外一个运行于亚马逊服务的工作负载,以及一个运行于微软的服务。每一个工作负载都运行在李湘的云上,但是现在你需要管理多个云。
要怎样才能更有效率地做到这一点?
在构建有效的多云环境时,你需要记住以下 5 件事:
如果企业使用一个云平台来管理企业中所有资源时,则存在风险。网络攻击可能会使所有的业务长时间瘫痪,使得最终用户在问题解决之前无法访问。在使用多云架构时,它使你的公司的服务能够抵抗这些类型的网络攻击,因为在一个云出现故障时,还有其他云可以承担工作负载。
多云平台让企业可以从每一个云平台中选择最佳的服务,以创建符合企业目标的定制基础设施。企业不需要管理业务过程,以适应特定供应商的设置和执行,企业可以探索不同的供应商,寻找业务运营中每一个部分的最佳匹配。
企业内部产生了不同的数据类型。举例来说,有些数据库需要冷存储,不定期存取,而热数据一天可以存取 10 次,必须存储在频繁存取的存储中,比如 AWS S3 标准存储。与其将所有的数据都塞进一个云中,不如通过使用合适的服务进行多样化以获得合适的功能。
采取多云策略之前,你应该对你的工作负载进行性能分析,这可以是企业内部的,也可以是已经在云中的,并且可以和每一个云中的可用工作负载相比较。这样,你就能确定哪些选择能以最低的成本满足你的工作负载性能需求。举例来说,你可以通过对设计为荣作的工作负载运行 Spot 实例,同时对保留的实例运行遗留的工作负载来节省成本。
如果一个应用程序的用户分布在世界各地,而数据传输是从单一的数据中心进行的,很多用户的响应时间会比较慢。在到达最终用户之前,数据流量必须经过几个节点,这就发生了延迟。这个延迟(称为延迟)是由远处的服务器提供的云服务所固有的。
在多云环境中,云架构师可以基于用户位置将数据中心部署到多个区域。最接近最终用户的数据中心能够以最少的服务器跳转来提供所需的数据。对于那些需要在不同地理位置提供数据,同时保持统一的最终用户体验的全球性组织来说,这种能力尤其有用。
多云架构为企业提供了一个在传统基础设施之外建立安全、强大的云环境的环境。但是,将多云的影响最大化意味着要积极应对应用扩展、独特门户、合规性、迁移和安全等诸多挑战。多云策略的主要目标是根据需求使用尽可能多的云,以克服使用单一供应商的云的局限性。虽然在云提供商之间切换执行任务是非常复杂的,尤其是刚开始,云服务提供商正致力于提高云间切换效率。其效率约稿,云计算的发展也就越好。
作者介绍:
Jignesh Solanki,思想领袖,通过 DevOps 制度化、端到端产品开发和咨询知道的转型计划,领导 Simform 的产品工程团队。
原文链接:
https://www.simform.com/blog/multi-cloud-architecture/#mcloudstrategy
领取专属 10元无门槛券
私享最新 技术干货