在两个云提供商拥有活跃帐户和运营弹性多云架构之间存在根本区别。首先是采购立场。第二个是工程决策,涉及实际运营成本、持续的复杂性和只有在灾难性事件发生时才会实现的效益。两者之间的混淆导致公司花钱购买在需要时不起作用的冗余,并在生产事故期间以艰难的方式发现这一点。
为什么公司会出于错误的原因转向多云
导致采用多云的对话通常从采购部门或最高管理层开始。这个逻辑显然是可靠的:如果你与 AWS 和 Azure 签订了合同,那么两者都不会将你锁定在滥用条件中。供应商之间的竞争可以控制价格,如果关系恶化,你还有出路。
作为一种交易策略,这种推理并没有错。问题在于混淆了商业杠杆与技术弹性。一家 90% 的负载在 AWS 上运行并维护一个包含一些外围服务的 Azure 帐户的公司并不具有多云架构 - 它具有供应商多元化。如果 AWS 遇到严重的区域中断,Azure 环境将不会自动吸收负载。这将需要数小时或数天的手动工作、数据迁移、网络重新配置,以及一个深入了解这两种环境的团队。这不是复原力,而是从未经过考验的应急计划。
真正的多云弹性需要什么
跨多个提供商的主动-主动架构是提供真正弹性的唯一模型,假设应用程序在两个环境中同时运行,并且有能力吸收其中任何一个环境中的全部负载。这需要跨云状态同步、全局负载平衡、跨环境延迟管理以及在压力下执行的数据一致性策略。
[数据库0几乎总是瓶颈。本质上,静态数据在提供商之间复制比计算更困难。提供商在自己的环境中提供托管复制服务,但每个提供商的本机服务的跨云复制并不是作为现成产品存在的 - 它需要构建。这意味着选择支持跨云复制的数据库(具有正确配置的 PostgreSQL、CockroachDB、YugabyteDB)或接受数据具有单一事实提供者并且弹性仅适用于应用程序层。
网络层也发生了显着变化。以可接受的延迟和足够的安全性连接来自不同提供商的 VPC 需要设置 VPN 或专用互连(AWS Direct Connect、Azure ExpressRoute),这在许多情况下比计算基础设施的成本更高。
宣传中没有人提及的运营成本
提供商的专业基础设施团队已经完成了他们的工作,以便他们能够及时了解最新的版本、服务变更和最佳实践。对于具有不同抽象、不同术语、不同可观察性工具和不同定价模型的两个提供商来说,这种复杂性加倍会使团队的认知负担加倍,或者雇用精通这两种环境的工程师,这种情况更加罕见且昂贵。
需要编写基础设施即代码工具来抽象提供者之间的差异,这通常意味着额外的抽象层(具有与提供者无关的模块的 Terraform),这会增加复杂性而不添加可见的功能。统一的可观察性对于诊断跨环境的事件至关重要,需要一个中立的监控平台(Datadog、New Relic、Grafana Cloud)来聚合来自两个提供商的指标,这更多的是成本和维护的集成。
实际结果是,考虑到计算、网络、存储和团队成本,运营双活多云的实际成本比在单个提供商上运营相同工作负载高出 30% 到 50%。在采用此架构之前,正确的问题是:业务 4 小时不可用的成本是多少?如果答案小于维持弹性的成本,则从数学上看,有利于采取不同的策略。
当多云是正确答案时
在某些情况下,开销显然是合理的。金融服务和关键基础设施的监管可用性 SLA 高于 99.99%,并且中断会立即造成监管或财务损失。覆盖全球的平台,其中延迟很重要,并且不同的提供商在特定区域有更好的存在。发生过严重提供商事件并需要向客户和监管机构证明依赖性已得到解决的组织。
在这些背景之外,对于大多数公司来说,最有效的弹性策略是多区域、单一提供商,并具有经过充分记录和测试的灾难恢复。 AWS us-east-1 与准备接管的 us-west-2 工作负载一起为大多数故障场景提供了相同的实际结果,而操作复杂性却只有一小部分。
做出此决定的相关区别在于故障域之间。如果担心的是特定区域出现故障,则多区域可以解决该问题。如果担心整个提供商失败或停止,则需要多云。第二个假设在技术上是可行的,但在三大提供商中历史上很少见。根据实际风险而不是想象的风险来校准弹性策略,是合理的架构决策与解决不存在问题的昂贵项目的区别所在。
构建前如何评估
正确的评估始于诚实的依赖关系映射。应用程序当前使用哪些本地提供商服务?其中有多少人在第二个提供商中拥有同等功能?移植到不可知或兼容服务的努力与所寻求的利益成正比吗?
下一步是在构建冗余之前模拟提供商故障。从当前状态恢复第二个提供商的运行需要多长时间?哪些数据会丢失?需要哪些手动流程?这种模拟(不需要在生产中完成,可以是纸质架构练习)通常表明,最快的恢复路径不是多云,而是改进当前提供商的恢复流程。只有在用尽此选项之后,多云的额外复杂性才合理。
另请阅读
- [优化云成本:小型企业的 FinOps 策略2
- [使用 AWS Lambda 的无服务器:可扩展应用程序实用指南3
- [弹性供应链:超越准时制4
- [自主计算:当系统在你注意到错误之前自行纠正时5
- [数据驻留:确保数据保留在巴西的实践意义6
- [应用程序可扩展性:增长之前的策略和清单7
