原文链接:https://medium.com/wise-engineering/wise-tech-stack-2025-update-d0e63fe718c7
Wise工程:2025年技术栈更新
截至2024财年,Wise已经为1280万活跃客户提供服务,每季度处理的跨境转账金额高达300亿英镑。超过60%的转账实现了即时到账,我们的Wise平台为全球银行和非银行机构提供支付服务。这一成就离不开我们以技术为核心的理念、稳健的架构以及专注的工程团队。
Wise的工作方式
Wise在全球主要地点拥有850多名工程师,他们被组织成独立的小组和部落。这些团队被赋予了创新和独立决策的权力,促进了透明度、信任和协作。
本文基于我们2022年的技术栈,涵盖了Wise技术栈的最新改进,帮助我们实现无国界的资金流动——即时、便捷、透明,最终实现免费。
使用Wise转账
我们的网页和移动应用
我们的网页应用基于CRAB(Wise特有的抽象层,构建在流行的Next.js框架之上),包含40个独立的应用程序,每个应用负责特定的产品功能,使得部署更加安全和易于管理。
在测试方法上,我们最大的变化之一是引入了Storybook,用于在开发过程中可视化单个React组件。Storybook与Chromatic配合使用,能够在每次更改后捕获快照,并突出组件的视觉差异。这些快照在代码更改过程中非常有效,帮助我们防止错误影响到客户。
Wise移动应用:更快、更智能、更高效
我们的iOS工程师通过将250多个Xcode模块从Xcodegen迁移到Tuist,并将Cocoapods切换到Swift Package Manager(SPM),升级了基础设施,从而实现了构建缓存的改进。团队还提高了灵活性,将零变更构建时间从28秒减少到2秒。借助先进的构建缓存,开发变得更加顺畅,并朝着使用SPM的Swift可组合架构方向发展。
我们的Android工程师则专注于大规模应用开发。主要Android代码库包含300多个Gradle模块和大约100万行代码,涵盖2个生产应用、6个示例应用、17个JVM模块、221个Android模块和65个多平台模块。我们提高Android开发速度的努力集中在以下几个关键领域:
在用户界面方面,我们已经全面转向Compose——首先用于设计系统,现在用于整个屏幕和导航。我们迅速采用了Kotlin 2.0和2.1版本。为了处理异步任务,我们使用协程和流,而我们的架构遵循标准的MVVM模式,并得到Google的Jetpack库的支持。
后端服务
Wise总共运行超过1000个服务。在后端,我们主要使用Java和Kotlin。自上次更新以来,我们专注于通过开发内部工具来提高自动化和效率,从而加快开发速度,并提供跨不同服务使用的标准库。
更快构建优秀应用
自上次更新以来,我们一直专注于通过自动化代码更新和可扩展的依赖管理解决方案来实现大规模工程。为此,我们:
- 引入了一个内部微服务底层框架,基于最小配置原则构建,并作为构件发布,使我们能够更快地构建标准微服务。它配置了服务使用的常见功能,提供推荐的默认设置:安全性、可观察性、数据库通信、与Kafka的交互等,使团队能够专注于业务逻辑。
- 通过内部Gradle插件集合改善构建管道的标准化。一个显著的例子是我们的插件,它标准化了GitHub Actions工作流。这使得通过简单的插件版本更新实现组织范围内的工作流更改变得轻而易举,使得在700多个Java代码库中推出SLSA等倡议变得轻松。
- 引入了一种语言无关的自动化服务,使我们能够在大规模上对代码库进行复杂更改,并为拥有团队创建拉取请求进行审查。通过使用该服务,我们进一步推进了集中式Java依赖管理平台,通过自动化Java服务的依赖升级。
直接与本地支付系统集成
我们已在菲律宾上线了即时支付系统InstaPay,并获得了加入日本即时支付系统Zengin的许可。我们还获得了巴西PIX的接入权限。
在Wise,我们投入了大量精力来创建尽可能一致的架构,网络通过AWS Transit Gateways集中管理。英国、匈牙利和澳大利亚的物理数据中心集成的细节存在显著差异。我们的澳大利亚数据中心是AWS Outpost Servers的首次部署之一,使我们能够在尽可能多的基础设施中保持一致的AWS工具。
允许企业使用我们的API
我们的公共API允许企业直接集成Wise的跨境支付服务,使用安全的REST API,支持OAuth认证。这为企业提供了转账、货币兑换和账户管理的功能,以及全面的文档和开发者工具,以简化集成过程。
Wise平台支持超过70种货币和多种支付路线,提供无缝的全球连接解决方案。该平台包括内置的合规功能,允许在利用Wise广泛的全球基础设施的同时,实现无缝的跨境操作。
扩展Wise的基础设施平台
为了适应快速增长,我们专注于重建基础设施,以确保效率和灵活性,同时减少团队的运营负担。
引入我们的新Kubernetes支持的计算运行时平台
**计算运行时平台(CRP)**是我们新的可扩展平台,利用Kubernetes,使工程团队能够轻松托管应用程序,而无需管理复杂的基础设施设置。
发展我们的Kubernetes栈
自2018年以来,Wise一直依赖于使用Terraform、JSONNET和ConcourseCI构建的Kubernetes,以支持服务网格控制(Envoy)、PCI-DSS合规性和无摩擦的部署。虽然这一模型为我们提供了良好的服务,但我们需要一种更可扩展和标准化的方法。这就是我们引入CRP的原因:
- Terraform仍然负责基础设施的配置,但我们从头开始重写了代码库,以提高灵活性和可维护性。
- RKE2处理集群引导,Rancher管理整体集群状态。
- Helm取代JSONNET,以提高可维护性和上游兼容性。
- ArgoCD与自定义插件确保完全自动化的配置和一致性。
- 我们的Envoy服务代理现在包括服务之间的无缝集成和发现,提高了平台的灵活性、弹性和监督。
因此,我们的Kubernetes集群数量从6个增长到超过20个,同时保持可维护性和效率。
更智能的自动扩展和成本优化
除了更好地配置和维护基础设施的能力外,我们还通过CRP引入了效率改进:
- 我们正在构建一个灵活的、可选择的自动扩展解决方案,以降低云成本和团队的认知负担。
- 自动化容器CPU调整大小(通过垂直Pod自动扩展器)现在在非生产环境中上线,并正在向非关键工作负载的生产环境推广。
- 完全托管的边车容器(如Envoy代理)现在简化了产品团队的部署。
- 扩展水平扩展,使用KEDA,根据每日和每周的流量模式优化工作负载。
对成本优化的关注使Wise更接近于零任务。
构建可扩展、可靠和智能的数据基础设施
在Wise,我们的许多工作都与数据的移动和理解有关。无论是转账、更新实时仪表板,还是为后台的机器学习模型提供动力,我们的系统都在不断处理和分发大量信息。随着我们全球足迹的扩大,我们对更快、更安全和更灵活的数据处理方式的需求也在增加。以下是我们如何发展数据技术栈,以继续为客户提供可靠、便捷和高效的体验的快速概述。
为我们的数据骨干提供动力
在Wise,我们的数据库是我们所有工作的基础之一,因此我们在使其既稳健又易于管理方面投入了大量精力。在幕后,我们的数据库工程师正在解决一些引人入胜的技术挑战,推动金融数据管理的可能性。
- 我们努力将大部分MariaDB和Postgres工作负载从EC2迁移到Amazon RDS。这一转变减少了维护任务,降低了运营开销,并提供了更强大的安全功能。
- 同样,我们正在将自托管的MongoDB迁移到MongoDB Atlas,这使我们能够专注于构建新功能,而不是与扩展作斗争。
- Redis继续为我们的内存工作负载提供支持。
- 我们还在探索分布式数据库,以实现更大的关系可扩展性。
更智能的工作流编排和可观察性
- 我们采用了一种名为Temporal的工作流引擎,以自动化关键任务,如切换和恢复测试。这有助于我们将停机时间降至最低,并保持符合严格的弹性法规。
- 像RDS性能洞察和Percona监控与管理(PMM)这样的工具为我们提供了清晰的数据库运行状况视图,使我们能够及早解决问题。
- 我们还在尝试使用直接的云SDK来管理我们的基础设施——逐步从Terraform Enterprise转向简化我们的配置流程。
保持数据流动
- Kafka支撑着我们大多数实时数据的移动——无论是服务之间的异步消息传递、日志收集,还是分析的流式更新。
- 我们的Kafka集群容量显著增长,并引入了诸如机架感知备用副本等功能,以提高容错能力。
- 我们的内部数据移动服务帮助将信息从Kafka或数据库引导到Snowflake、S3 Parquet、Iceberg或其他目标。
- 配置过程中的自动检查减少了人为错误,其日益增长的使用表明团队发现设置新管道变得更简单、更快捷。
- 另一个内部服务,数据归档,现在在多个数据库中归档超过1000亿条记录。这不仅节省了成本,还使我们的数据库更易于备份和恢复。
将数据转化为洞察
Wise各团队使用我们的商业智能工具做出战略性、数据驱动的决策,以提升客户体验——从欺诈检测到个性化营销和预测分析。
- 尽管我们仍然依赖Snowflake作为分析的核心组成部分,但我们已经在Amazon S3上建立了数据湖的基础,使用Apache Iceberg。得益于其强大的开放表格式,Apache Iceberg使我们能够更高效地在S3上存储大量数据。它允许我们在不需要重写所有数据的情况下修改表结构,从而加快查询速度并控制存储成本。此外,其活跃的开源社区不断推动改进,惠及我们的长期可扩展性。
- 在我们的数据源和商业智能工具之间是Trino,它使我们能够在一个地方查询Iceberg表、Snowflake或甚至Kafka流。
- 一个新的Trino网关处理工作负载分离和容错查询,而复杂的工作流仍由Airflow和dbt-core管理。有关此主题的深入了解,请观看我们数据工程师最近的会议演讲。
- 报告和仪表板使用Looker或Superset构建——团队选择最适合的工具集。
推动智能解决方案
我们的机器学习架构旨在支持探索和生产,无缝集成机器学习功能到产品中,以改善客户入职和欺诈预防,并利用负责任的人工智能技术。
- 我们的数据科学家在Amazon SageMaker Studio中工作,选择JupyterLab或VSCode来构建实验和探索数据。
- 大规模处理在EMR上使用Spark进行,而Airflow则协调数据收集、清理、模型训练和定期再训练,以保持每个步骤按计划进行。
- 我们使用SageMaker特征存储来保持数百个特征在训练和推理中的同步,MLflow跟踪实验、指标和模型版本。这种设置简化了模型变体的比较或在需要时的回滚。
- 当模型准备好投入生产时,我们通过基于Ray Serve的内部预测服务进行部署。
- 多亏了MLflow插件,我们的数据科学家可以以最小的摩擦推出模型——加快欺诈检测、KYC或其他用例的推理时间,在这些情况下每毫秒都至关重要。
- 自动检查有助于在数据漂移或特征不一致变成严重问题之前捕捉到它们。
解锁新的人工智能能力
我们创建了一个安全的网关,连接多个大型语言模型提供商,包括Anthropic(Claude)、AWS(Bedrock)、Google(Gemini)和OpenAI(gpt和o系列)。这种方法使我们能够在不处理单独凭证或复杂合规检查的情况下实验不同的模型。一个受LangChain启发的Python库封装了这些API,以加快原型设计。
对于需要引用内部文档、知识库或用户数据的情况,我们提供了一个自定义的检索增强生成(RAG)服务。它在生成响应之前从各种数据存储中提取最新信息——这是总结复杂文档或自动化客户服务工作流的便捷功能。
智能数据管理
我们的数据架构既庞大又复杂,因此我们建立了一个全面的库存系统和专门的治理门户,以显示数据存储的位置及其分类。
我们已在整个数据资产中实现了自动化数据发现,以了解创建了什么数据;谁创建了它;以及数据的类别是什么。我们正在利用我们的数据库存来支持数据删除、数据合规和数据发现的工作。这种设置不仅支持审计和法规的合规工作,还提高了开发者的生产力。
随着越来越多的工程师加入治理工作,我们能够推出更严格的政策、增强的隐私检查和自动化的数据生命周期管理。
开发者赋能——Wise的CI/CD演变
为了加强我们的交付管道和开发者体验,我们不断发展我们的CI/CD平台,以使开发者能够比以往更快、更可靠地将功能交付给客户。
CI改进:速度和安全性
从CircleCI迁移到GitHub Actions带来了优化的新可能性。通过实施详细的指标跟踪,我们发现了构建性能的关键见解。例如,通过预填充常用容器的缓存,我们将构建时间缩短了15%。在我们每月50万次构建的规模下,这相当于每月节省超过1000小时。
我们一直在有条不紊地在我们的构建过程中实施SLSA框架,逐步加强我们的供应链安全。
CD转型:从Octopus到Spinnaker
在我们之前的文章中提到的CI/CD管道状态之后,我们的部署策略随着从Octopus(我们的内部工具)转向Spinnaker而发生了变化。这不仅仅是工具的更换——它代表了一种范式转变,从将部署视为简单的事务转变为将其视为有序事件序列。
这一转变使我们能够减少工程师在部署管理上花费的时间,并最小化缺陷到达客户的风险。这提高了开发者的交付速度,使我们能够更快地为客户提供服务,而不牺牲质量和稳定性。
高级金丝雀测试
Spinnaker的自动金丝雀分析已成为我们部署管道的基石。该过程在其简单性中优雅而强大:
- 仅5%的流量路由到新服务版本进行测试
- 对技术和业务指标进行全面的30分钟分析
- 对重大异常触发自动回滚
因此,仅在2024年,这一系统自动阻止了数百次可能导致事件的部署,节省了数千小时的工程时间。
目前,Wise的超过一半服务已在Spinnaker上运行,预计到2025年中期将完成全面迁移,我们准备迈出下一步:实施托管交付,以协调整个SDLC,包括测试和数据管理。
LGTM堆栈的可观察性
我们改善了可观察性生态系统,以更好地监控、理解和优化Wise产品。可靠性工程师专注于构建一个更强大、高效和富有洞察力的可观察性平台,以应对我们快速扩展环境中的关键挑战。
专用的可观察性基础设施
我们实施了专用的可观察性CRP集群。这为在不同环境中运行的服务提供了开箱即用的可观察性。因此,我们简化了监控设置,减少了手动配置的负担。
统一的指标和监控堆栈
为了解决可扩展性问题,我们已从Thanos迁移到Grafana Mimir。这意味着我们现在完全运行在LGTM堆栈上:Loki用于日志,Grafana用于仪表板和可视化,Tempo用于跟踪,Mimir用于指标。作为我们在可观察性方面持续改进的一部分,我们正在试点测试Grafana Pyroscope,以对选定服务进行分析,探索性能洞察和优化的新维度。
我们的指标堆栈每秒接收约600万个指标样本,并处理我们最大指标租户的1.5亿个活动系列。
通过统一我们的堆栈,我们:
- 在整个技术生态系统中标准化可观察性。
- 增强日志、指标、跟踪和仪表板之间的关联。
- 改善监控基础设施的性能和可扩展性。
可观察性的成本优化和效率
最后,我们继续投资于优化我们的可观察性堆栈。我们能够降低运营成本,提高资源利用率,并最终拥有更可持续的长期可观察性战略。请查看我们之前的文章,详细介绍了我们在这些倡议上所做的工作。
这一战略演变使我们的工程团队能够获得更深入、更具可操作性的洞察,同时确保我们的可观察性基础设施既强大又具有成本效益。
结论
总之,我们2025年的技术栈证明了Wise如何引领潮流,为全球1280万活跃客户提供最快、最可靠和最具成本效益的资金转移方式。对标准化和集成的高度关注意味着我们的系统旨在高效扩展,同时确保稳健的风险和合规管理。
我们的工程团队继续在所有领域精炼我们的基础设施,从移动和网页应用到后端服务和机器学习。这些努力简化并加速了跨境资金流动,确保我们为当前需求和未来增长做好准备。
我们致力于长期投资,构建最佳基础设施,以无缝管理您在全球范围内的资金。随着每一次技术增强和与支付系统的新直接连接,我们正稳步朝着实现无国界资金流动的愿景迈进。