沃达丰如何利用 Temporal 编排跨设备的增值服务

Temporal 在速度方面给我们带来了回报——我们交付新功能和新能力的能力,而无需每次都编写代码来应对重试和错误情况。

vodafone small logo

行业

电信

用例

软件编排

公司规模

大型企业

SDK

Java

Temporal

云端


沃达丰是一家领先的跨国电信公司,致力于通过技术连接人与人。

最近,沃达丰推出了一代新的客户前提设备 (CPE) 以改善用户体验。这些 CPE(包括路由器等设备)允许客户在其网络中添加安全和物联网等服务。

作为这项举措的一部分,家庭技术和产品团队的工程部门需要构建一个新平台,以在 CPE 上安装软件。在下面的故事中,我们将探讨团队面临的挑战,以及他们采用 Temporal 的原因和方式。

跨设备编排软件安装

团队需要在有限的时间内完成他们的项目。目标是创建一个云原生的 CPE 管理系统,该系统利用宽带论坛的新协议,称为用户服务平台 (USP),或更常见的 TR-369。

沃达丰新的 CPE 管理系统需要编排软件安装,无论是在 CPE 初始入网时,还是在 CPE 的整个生命周期中。该系统由四个称为 USP 控制器的服务组成,这些服务负责不同的域。

从工程角度来看,存在许多挑战

  • 异步工作:USP 控制器请求 CPE 安装软件与控制器收到任务完成的响应之间可能存在很长的延迟。这增加了间歇性故障的可能性。
  • 潜在的脑裂:可能会出现两种“大脑”试图编排 CPE 的情况——本地系统和新的 CPE 管理系统。
  • 两种截然不同的工作负载:该系统需要支持两种具有截然不同的规模需求的工作负载。
    • 入网:当客户订购新设备、打开包装并插入电源时,CPE 入网到平台并安装或更新潜在的软件。此工作负载规模较小,并且自然分布。
    • 活动:当推出新功能和能力时,平台需要能够在一夜之间更新整个 CPE 舰队(或其子集)。此工作负载是高容量的,因为更改可能针对许多设备。
  • 计划工作:团队正在寻找一种方法来安排跨设备舰队的定期任务,而无需进行大量的持续监督。

团队开始寻找一种可以管理间歇性故障并编排其异步工作流程的工具。

一种代码优先、可扩展的工作流工具,支持 Java

我们选择 Temporal 的原因之一是我们可以使用 Java。我们不需要用 XML 或其他东西声明工作流,然后编写代码将其连接起来。——James Irwin,软件与产品设计实践首席经理

团队需要遵循几个指导原则来选择他们的工具和技术栈:Java、云原生、水平扩展以及对 CI/CD 的良好支持。他们根据这些要求评估了各种工作流工具。

当他们找到 Temporal 时,他们运行了一个概念验证和几个峰值测试。他们立即意识到 Temporal 的价值,并很快选择它,因为它

  • 允许开发人员纯粹用 Java 编写代码。
  • 允许开发人员“专注于编写代码以满足业务需求。”
  • 起源于 Uber,这让团队对这项技术充满信心。
  • 是开源的,并且被受人尊敬的公司使用。

与业务逻辑对齐的架构

当您将微服务架构推向极致,并将其分解为不同的域时,最终会得到微服务调用微服务调用微服务。处理故障和由此产生的复杂性变得具有挑战性。而使用 Temporal,我们可以专注于用例和业务逻辑执行。

当沃达丰开始使用 Temporal 构建时,一个立竿见影的好处是它让他们能够以一种新的、更有效的方式设计他们的系统。

CPE 管理系统利用“多控制器范例”,这是 USP 启用的一项新功能。该系统分为三个独立的控制器。每个控制器负责一个域,具有有限的功能集,并且只能访问 CPE 数据模型的一个子集——遵循最小权限原则。

使用传统的微服务架构,工程师需要花费很多时间来映射域和每个服务需要完成的操作,并确保微服务能够正确地进行通信并应对各种微服务之间的故障。

使用 Temporal,工程师创建了四个命名空间,每个控制器一个,另一个用于管理整个 CPE 舰队的更新(或活动)。然后他们只需定义工作流来包含所需的动作,而无需考虑故障场景。他们分布式的 Worker 舰队可以水平扩展以执行业务逻辑。他们可以从一个命名空间内调用另一个命名空间内的工作流,并且他们打算迁移到 Nexus。

Vodafone architecture

从概念到现实的更快时间

使用 Temporal,我们只需编写代码以满足业务需求,而不是编写代码来应对持久性问题。实现新的用例所需的时间比使用传统的微服务架构要低得多。

使用 Temporal,沃达丰团队按时完成了他们的紧迫期限。他们及时启动并运行了新的平台并投入生产。他们还从 Temporal 中获得了许多其他好处

  • 面对故障时的持久代码执行:他们遇到过许多控制器出现问题的实例,通常会影响最终用户,导致运营头痛。但是,借助 Temporal 的持久性和内置重试机制,系统的可操作性不受影响。
  • 用于高容量活动的可水平扩展:Temporal 允许系统轻松扩展到每分钟数百万个工作流,以便为活动升级设备。
  • 更快、更敏捷地实现新功能:团队现在只需要编写业务逻辑,而不需要编写故障处理代码,因此他们推出新功能的速度更快。

迁移到 Temporal Cloud

Temporal Cloud 的新型自定义存储后端在性能方面很有吸引力。

在自行托管 Temporal 一段时间后,沃达丰团队决定迁移到 Temporal Cloud。他们从未遇到过与其自托管集群相关的问题,但 Temporal Cloud 的优势很有吸引力。

他们查看了典型的 Temporal 用量,以预测 Temporal Cloud Actions 的成本。他们还考虑了当前数据库、计算资源以及管理集群的运营开销的成本。特别是数据库成本非常高,因为他们继续扩展用例。

在计算完数字后,Temporal Cloud 的定价估算看起来很乐观。还有其他令人信服的原因促使沃达丰选择 Temporal Cloud

  • 降低运营复杂性和更轻松的升级:在自行托管期间,他们的团队需要从低级别了解 Temporal 服务,确保其不断调整以与用例的不断变化的需求保持一致。这种努力,加上他们跟上 Temporal Cloud 频繁发布的愿望,占用了工程时间。
  • 优化的存储后端:他们预测他们的数据库 Postgres 最终会成为一个瓶颈,因为他们对未来几年的规模目标进行了评估。他们不得不迁移到 Cassandra 以支持必要的规模,这是他们不希望看到的。Temporal Cloud 优化的存储后端释放了他们所需的规模。
  • 自动水平扩展:在自行托管期间,如果他们想运行活动,团队必须手动扩展 Postgres 最小容量单元,以便它们保持温暖并准备好每秒处理大量工作流。使用 Temporal Cloud,他们预计新的自定义存储后端将处理此规模而无需人工干预,因此他们的团队只需要处理 Worker 扩展,这很容易实现自动化。
  • 在非高峰时降低成本:在自行托管期间,沃达丰团队必须过度配置 Temporal 服务的容量,即使在他们没有运行活动期间也是如此。这需要他们为计算和其他基础设施付费,而 Temporal Cloud 的成本是基于消耗的。
  • 安全的数据模型:由于其数据转换器架构,Temporal Cloud 的安全审查比预期更容易通过。Temporal Cloud 不会看到任何客户数据(除了工作流元数据),并且所有数据都已加密。

接下来是什么

随着沃达丰扩展到新的地理区域并继续扩展规模,Temporal Cloud 将支持他们的旅程并使团队能够继续创新。

构建无敌的应用程序

您准备好了解为什么 Netflix、Doordash 和 Stripe 等公司信任 Temporal 作为构建和创新的安全且可扩展的方式吗?