Monzo银行如何构建了一个经济高效、非传统的备份系统以确保银行业务的韧性

Monzo Stand-in 系统总结

概述

Monzo Bank 最近推出了 Monzo Stand-in,这是一个基于 GCP(Google Cloud Platform)的独立备份系统,旨在确保在应用程序和 AWS 基础设施出现故障时,核心银行服务仍然可用。与传统复制备份不同,Monzo Stand-in 是一个最小化的独立系统,仅支持关键操作,并且设计成本效益高,其运营成本仅为主平台的 1%。

主要特点

  1. 完全独立性

    • Monzo Stand-in 作为完全独立的备份系统运行,与 Monzo 的主平台分离,确保在故障期间服务不中断。
    • 与主平台不共享任何代码组件,拥有自己的云供应商、基础设施组件、支付处理和数据同步机制,减少了对共享元素的依赖。
  2. 软件独立性

    • 通过运行与主平台完全分离的软件,Monzo Stand-in 最大限度地减少了单一故障或 bug 影响两个系统的可能性。
    • 与传统的硬件冗余灾难恢复解决方案不同,Monzo 专注于软件独立性,确保每个平台能够自主运行。
  3. 最终一致性模型

    • Monzo Stand-in 采用最终一致性模型,最大化可用性。
    • 异步更新关键数据,而不是立即同步主平台,确保在故障期间操作仍能继续。
    • 交易记录为独立的“建议”,在主平台恢复后进行对账,减少了依赖性和故障风险。
  4. 最小化功能集

    • Monzo Stand-in 仅支持 Monzo 核心功能的最小子集,如卡支付、银行转账和余额查询,省略了非必要功能。
    • 这种简化设计显著降低了总拥有成本,其运营成本仅为主平台的 1%。
  5. 用户体验

    • Monzo App 与 Stand-in 集成,能够自动检测故障转移并切换到简化界面,确保关键银行功能的持续可用性,保持一致的用户体验。

测试策略

Monzo Stand-in 通过多种生产测试策略确保其可靠性:

  1. 影子测试:通过将部分支付操作在 Stand-in 上以影子模式运行,比较主平台与 Stand-in 的决策,检测意外差异。
  2. 负载测试:每天在高峰时段将影子测试比例设置为 100%,验证系统能否处理峰值负载,甚至进行超过 100% 的负载测试(如 5 倍峰值负载)。
  3. 直接测试:定期让 Stand-in 直接连接到支付方案,处理支付,测试数据中心与支付方案的连接。
  4. 端到端客户测试:每天选择一部分客户进行实际测试,确保移动应用与 Stand-in 的端到端集成。

数据对账与复杂性

Monzo Stand-in 采用最终一致性模型,数据对账过程如下:

  • Stand-in 不会直接修改从主平台同步的数据,而是记录授权交易,运行时动态计算余额。
  • 主平台恢复后,同步 Stand-in 的“建议”并应用到主平台。在极少数情况下,可能会出现账户负余额的情况,但通过保持同步延迟接近实时,这种风险非常低。

成本优化

Monzo Stand-in 的运营成本仅为主平台的 1%,主要得益于以下架构选择和优化:

  1. 服务简化:Stand-in 运行较少的“大型”服务,例如卡处理仅由一个系统处理,而主平台则有多个独立系统。
  2. 按需付费的托管数据库:选择按操作付费的托管数据库,使得 Stand-in 在启用时成本较高,但在大多数时间(仅同步状态时)成本较低。

多云架构挑战

Monzo Stand-in 在 GCP 上运行,而主平台在 AWS 上,这种多云架构带来了以下挑战:

  • 互操作性与网络:平台设计尽量减少对特定云服务的依赖,但“粘合代码”需要针对不同云服务进行调整。
  • 数据库选择:主平台使用 AWS Keyspaces 作为主要数据库,因此需要谨慎选择 GCP 上的数据库。为了确保可逆性,Monzo 构建了抽象工具,使数据库选择与应用代码分离。

总结

Monzo Stand-in 是一种创新的灾难恢复解决方案,通过软件独立性、最终一致性模型和最小化功能集,确保了银行服务的高可用性和低成本运行。其设计体现了对多云架构的深入理解和优化,为其他企业提供了宝贵的参考。

阅读 23
0 条评论