写点什么

6 个多云架构设计,实现有效的云策略

  • 2021 年 10 月 15 日
  • 本文字数:5143 字

    阅读完需:约 17 分钟

6 个多云架构设计,实现有效的云策略

本文最初发表于 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 件事:


  1. 对你的整个网络进行分析,然后确定特定云供应商的哪种服务最适合你的特定需求,以避免系统的复杂性和对资源的不当使用。

  2. 有多个云供应商会增加低级别的维护和监控任务。最好是将它们实现自动化。

  3. 专注于策略标准化,应用到每个云环境。它们涉及的领域包括数据存储、工作负载、流量、虚拟服务器、合规/法规、安全性和报告等领域。

  4. 采用一个面向虚拟环境的综合数据中心管理系统。这可以帮助你根据共同目标构建服务器、网络、存储、操作、安全和应用团队。

  5. 确定最适合你的组织中多云环境的应用程序。不同于传统应用程序,云原生应用程序是灵活和面向服务的,它由一组基于扩展的架构的容器和服务组成。此外,这些都实现自动化、移动和扩展。

多云架构的优点

灾难恢复


如果企业使用一个云平台来管理企业中所有资源时,则存在风险。网络攻击可能会使所有的业务长时间瘫痪,使得最终用户在问题解决之前无法访问。在使用多云架构时,它使你的公司的服务能够抵抗这些类型的网络攻击,因为在一个云出现故障时,还有其他云可以承担工作负载。

避免供应商锁定


多云平台让企业可以从每一个云平台中选择最佳的服务,以创建符合企业目标的定制基础设施。企业不需要管理业务过程,以适应特定供应商的设置和执行,企业可以探索不同的供应商,寻找业务运营中每一个部分的最佳匹配。

数据管理


企业内部产生了不同的数据类型。举例来说,有些数据库需要冷存储,不定期存取,而热数据一天可以存取 10 次,必须存储在频繁存取的存储中,比如 AWS S3 标准存储。与其将所有的数据都塞进一个云中,不如通过使用合适的服务进行多样化以获得合适的功能。

优化云成本


采取多云策略之前,你应该对你的工作负载进行性能分析,这可以是企业内部的,也可以是已经在云中的,并且可以和每一个云中的可用工作负载相比较。这样,你就能确定哪些选择能以最低的成本满足你的工作负载性能需求。举例来说,你可以通过对设计为荣作的工作负载运行 Spot 实例,同时对保留的实例运行遗留的工作负载来节省成本。

低延迟


如果一个应用程序的用户分布在世界各地,而数据传输是从单一的数据中心进行的,很多用户的响应时间会比较慢。在到达最终用户之前,数据流量必须经过几个节点,这就发生了延迟。这个延迟(称为延迟)是由远处的服务器提供的云服务所固有的。


在多云环境中,云架构师可以基于用户位置将数据中心部署到多个区域。最接近最终用户的数据中心能够以最少的服务器跳转来提供所需的数据。对于那些需要在不同地理位置提供数据,同时保持统一的最终用户体验的全球性组织来说,这种能力尤其有用。

结语


多云架构为企业提供了一个在传统基础设施之外建立安全、强大的云环境的环境。但是,将多云的影响最大化意味着要积极应对应用扩展、独特门户、合规性、迁移和安全等诸多挑战。多云策略的主要目标是根据需求使用尽可能多的云,以克服使用单一供应商的云的局限性。虽然在云提供商之间切换执行任务是非常复杂的,尤其是刚开始,云服务提供商正致力于提高云间切换效率。其效率约稿,云计算的发展也就越好。


作者介绍:

Jignesh Solanki,思想领袖,通过 DevOps 制度化、端到端产品开发和咨询知道的转型计划,领导 Simform 的产品工程团队。


原文链接:

https://www.simform.com/blog/multi-cloud-architecture/#mcloudstrategy

2021 年 10 月 15 日 15:003799

评论

发布
暂无评论
发现更多内容

教妹学Java(二十 七):this 关键字的用法

Java 程序员 后端

手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

Java 程序员 后端

我来告诉你解决死锁的100种方法

Java 程序员 后端

手写线程池实战

Java 程序员 后端

手把手教学妹CompletableFuture异步化,性能关系直接起飞!

Java 程序员 后端

我所理解的Java锁

Java 程序员 后端

教妹学Java(二十 七):this 关键字的用法(1)

Java 程序员 后端

我的Serverless实战——能掰扯面试官的SSVM超详细解析!

Java 程序员 后端

掌握了2-3-4树也就掌握了红黑树,不信进来看看,建议收藏!

Java 程序员 后端

排序二叉树JAVA版实现

Java 程序员 后端

什么是 TypeScript

HoneyMoose

接口文档:第二章:使用Swagger接口的文档在线自动生成

Java 程序员 后端

推荐 6 个前后端分离项目

Java 程序员 后端

教妹学Java(二十一):一文带你了解面向对象编程的所有概念

Java 程序员 后端

教妹学Java(二十四):一文了解 Java 中的方法

Java 程序员 后端

我猜你还没明白如何利用好Redis、Redisson使用实现分布式锁?

Java 程序员 后端

Docsify 脚本执行权限问题

HoneyMoose

我这么回答对Spring的理解,面试官狂问我什么时候入职?

Java 程序员 后端

抽象工厂模式

Java 程序员 后端

教妹学Java(二十五):搞懂 Java 中的构造方法

Java 程序员 后端

数据结构与算法-链表

Java 程序员 后端

我用了3年,从小厂干到美团L8技术专家!分享一下面经!

Java 程序员 后端

手撕ArrayList底层,透彻分析源码

Java 程序员 后端

拥有阿里P8推荐的SpringBoot笔记,备战金九银十,吊打面试官不是梦

Java 程序员 后端

捕获异常&指令重塑

Java 程序员 后端

我上高中的弟弟都能看懂的Docker学习教程,你看看讲的怎么样

Java 程序员 后端

成为架构师之前,你一定要懂的-CAP-定理

Java 程序员 后端

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

Java 程序员 后端

拿了 30K 的 offer!

Java 程序员 后端

教女朋友学习 vue中的组件

Java 程序员 后端

懊悔!早一点遇到这份1399页Nginx笔记,我绝不会错过阿里offer!

Java 程序员 后端

Flutter 自动化测试

Flutter 自动化测试

6 个多云架构设计,实现有效的云策略-InfoQ