原文链接:https://medium.com/wise-engineering/wise-tech-stack-2025-update-d0e63fe718c7[1]
截至2024财年,Wise已经为1280万活跃客户提供服务,每季度处理的跨境转账金额高达300亿英镑。超过60%的转账实现了即时到账,我们的Wise平台[2]为全球银行和非银行机构提供支付服务。这一成就离不开我们以技术为核心的理念、稳健的架构以及专注的工程团队。
Wise在全球主要地点拥有850多名工程师,他们被组织成独立的小组和部落。这些团队被赋予了创新和独立决策的权力,促进了透明度、信任和协作。
本文基于我们2022年的技术栈[3],涵盖了Wise技术栈的最新改进,帮助我们实现无国界的资金流动——即时、便捷、透明,最终实现免费。
我们的网页应用基于CRAB(Wise特有的抽象层,构建在流行的Next.js框架之上),包含40个独立的应用程序,每个应用负责特定的产品功能,使得部署更加安全和易于管理。
在测试方法上,我们最大的变化之一是引入了Storybook[4],用于在开发过程中可视化单个React组件。Storybook与Chromatic[5]配合使用,能够在每次更改后捕获快照,并突出组件的视觉差异。这些快照在代码更改过程中非常有效,帮助我们防止错误影响到客户。
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。自上次更新以来,我们专注于通过开发内部工具来提高自动化和效率,从而加快开发速度,并提供跨不同服务使用的标准库。
更快构建优秀应用
自上次更新以来,我们一直专注于通过自动化代码更新和可扩展的依赖管理解决方案来实现大规模工程。为此,我们:
我们已在菲律宾上线了即时支付系统InstaPay,并获得了加入日本即时支付系统Zengin的许可。我们还获得了巴西PIX的接入权限。
在Wise,我们投入了大量精力来创建尽可能一致的架构,网络通过AWS Transit Gateways[9]集中管理。英国、匈牙利和澳大利亚的物理数据中心集成的细节存在显著差异。我们的澳大利亚数据中心是AWS Outpost Servers[10]的首次部署之一,使我们能够在尽可能多的基础设施中保持一致的AWS工具。
我们的公共API允许企业直接集成Wise的跨境支付服务,使用安全的REST API,支持OAuth认证。这为企业[11]提供了转账、货币兑换和账户管理的功能,以及全面的文档和开发者工具,以简化集成过程。
Wise平台[12]支持超过70种货币和多种支付路线,提供无缝的全球连接解决方案。该平台包括内置的合规功能,允许在利用Wise广泛的全球基础设施的同时,实现无缝的跨境操作。
为了适应快速增长,我们专注于重建基础设施,以确保效率和灵活性,同时减少团队的运营负担。
**计算运行时平台(CRP)**是我们新的可扩展平台,利用Kubernetes,使工程团队能够轻松托管应用程序,而无需管理复杂的基础设施设置。
发展我们的Kubernetes栈
自2018年以来,Wise一直依赖于使用Terraform、JSONNET和ConcourseCI构建的Kubernetes,以支持服务网格控制(Envoy)、PCI-DSS合规性和无摩擦的部署。虽然这一模型为我们提供了良好的服务,但我们需要一种更可扩展和标准化的方法。这就是我们引入CRP的原因:
因此,我们的Kubernetes集群数量从6个增长到超过20个,同时保持可维护性和效率。
更智能的自动扩展和成本优化
除了更好地配置和维护基础设施的能力外,我们还通过CRP引入了效率改进:
对成本优化的关注使Wise更接近于零任务[15]。
在Wise,我们的许多工作都与数据的移动和理解有关。无论是转账、更新实时仪表板,还是为后台的机器学习模型提供动力,我们的系统都在不断处理和分发大量信息。随着我们全球足迹的扩大,我们对更快、更安全和更灵活的数据处理方式的需求也在增加。以下是我们如何发展数据技术栈,以继续为客户提供可靠、便捷和高效的体验的快速概述。
在Wise,我们的数据库是我们所有工作的基础之一,因此我们在使其既稳健又易于管理方面投入了大量精力。在幕后,我们的数据库工程师正在解决一些引人入胜的技术挑战,推动金融数据管理的可能性。
Wise各团队使用我们的商业智能工具做出战略性、数据驱动的决策,以提升客户体验——从欺诈检测到个性化营销和预测分析。
我们的机器学习架构旨在支持探索和生产,无缝集成机器学习功能到产品中,以改善客户入职和欺诈预防,并利用负责任的人工智能技术。
我们创建了一个安全的网关,连接多个大型语言模型提供商,包括Anthropic(Claude)、AWS(Bedrock)、Google(Gemini)和OpenAI(gpt和o系列)。这种方法使我们能够在不处理单独凭证或复杂合规检查的情况下实验不同的模型。一个受LangChain启发的Python库封装了这些API,以加快原型设计。
对于需要引用内部文档、知识库或用户数据的情况,我们提供了一个自定义的检索增强生成(RAG)服务。它在生成响应之前从各种数据存储中提取最新信息——这是总结复杂文档或自动化客户服务工作流的便捷功能。
我们的数据架构既庞大又复杂,因此我们建立了一个全面的库存系统和专门的治理门户,以显示数据存储的位置及其分类。
我们已在整个数据资产中实现了自动化数据发现,以了解创建了什么数据;谁创建了它;以及数据的类别是什么。我们正在利用我们的数据库存来支持数据删除、数据合规和数据发现的工作。这种设置不仅支持审计和法规的合规工作,还提高了开发者的生产力。
随着越来越多的工程师加入治理工作,我们能够推出更严格的政策、增强的隐私检查和自动化的数据生命周期管理。
为了加强我们的交付管道和开发者体验,我们不断发展我们的CI/CD平台,以使开发者能够比以往更快、更可靠地将功能交付给客户。
从CircleCI迁移到GitHub Actions带来了优化的新可能性。通过实施详细的指标跟踪,我们发现了构建性能的关键见解。例如,通过预填充常用容器的缓存,我们将构建时间缩短了15%。在我们每月50万次构建的规模下,这相当于每月节省超过1000小时。
我们一直在有条不紊地在我们的构建过程中实施SLSA框架[19],逐步加强我们的供应链安全。
在我们之前的文章[20]中提到的CI/CD管道状态之后,我们的部署策略随着从Octopus(我们的内部工具)转向Spinnaker[21]而发生了变化。这不仅仅是工具的更换——它代表了一种范式转变,从将部署视为简单的事务转变为将其视为有序事件序列。
这一转变使我们能够减少工程师在部署管理上花费的时间,并最小化缺陷到达客户的风险。这提高了开发者的交付速度,使我们能够更快地为客户提供服务,而不牺牲质量和稳定性。
Spinnaker的自动金丝雀分析[22]已成为我们部署管道的基石。该过程在其简单性中优雅而强大:
因此,仅在2024年,这一系统自动阻止了数百次可能导致事件的部署,节省了数千小时的工程时间。
目前,Wise的超过一半服务已在Spinnaker上运行,预计到2025年中期将完成全面迁移,我们准备迈出下一步:实施托管交付,以协调整个SDLC,包括测试和数据管理。
我们改善了可观察性生态系统,以更好地监控、理解和优化Wise产品。可靠性工程师专注于构建一个更强大、高效和富有洞察力的可观察性平台,以应对我们快速扩展环境中的关键挑战。
我们实施了专用的可观察性CRP集群。这为在不同环境中运行的服务提供了开箱即用的可观察性。因此,我们简化了监控设置,减少了手动配置的负担。
为了解决可扩展性问题,我们已从Thanos迁移到Grafana Mimir。这意味着我们现在完全运行在LGTM堆栈[23]上:Loki用于日志,Grafana用于仪表板和可视化,Tempo用于跟踪,Mimir用于指标。作为我们在可观察性方面持续改进的一部分,我们正在试点测试Grafana Pyroscope,以对选定服务进行分析,探索性能洞察和优化的新维度。 我们的指标堆栈每秒接收约600万个指标样本,并处理我们最大指标租户的1.5亿个活动系列。 通过统一我们的堆栈,我们:
最后,我们继续投资于优化我们的可观察性堆栈。我们能够降低运营成本,提高资源利用率,并最终拥有更可持续的长期可观察性战略。请查看我们之前的文章[24],详细介绍了我们在这些倡议上所做的工作。
这一战略演变使我们的工程团队能够获得更深入、更具可操作性的洞察,同时确保我们的可观察性基础设施既强大又具有成本效益。
总之,我们2025年的技术栈证明了Wise如何引领潮流,为全球1280万活跃客户提供最快、最可靠和最具成本效益的资金转移方式。对标准化和集成的高度关注意味着我们的系统旨在高效扩展,同时确保稳健的风险和合规管理。
我们的工程团队继续在所有领域精炼我们的基础设施,从移动和网页应用到后端服务和机器学习。这些努力简化并加速了跨境资金流动,确保我们为当前需求和未来增长做好准备。
我们致力于长期投资,构建最佳基础设施,以无缝管理您在全球范围内的资金。随着每一次技术增强和与支付系统的新直接连接,我们正稳步朝着实现无国界资金流动的愿景迈进。
[1]https://medium.com/wise-engineering/wise-tech-stack-2025-update-d0e63fe718c7
[2]Wise平台: https://platform.wise.com/
[3]技术栈: https://medium.com/wise-engineering/wise-tech-stack-2022-edition-a6ac089a382f
[4]Storybook: https://storybook.js.org/
[5]Chromatic: https://www.chromatic.com/
[6]BFFs: https://blog.bitsrc.io/bff-pattern-backend-for-frontend-an-introduction-e4fa965128bf
[7]KSP: https://kotlinlang.org/docs/ksp-overview.html
[8]Kotlin多平台: https://kotlinlang.org/docs/multiplatform.html
[9]AWS Transit Gateways: https://aws.amazon.com/transit-gateway/
[10]AWS Outpost Servers: https://aws.amazon.com/outposts/servers/features/
[11]企业: https://wise.com/gb/business/api
[12]Wise平台: https://platform.wise.com/
[13]调整大小: https://aws.amazon.com/blogs/opensource/right-size-your-kubernetes-applications-using-open-source-goldilocks-for-cost-optimization/
[14]KEDA: https://keda.sh/
[15]零任务: https://wise.com/p/our-mission
[16]Temporal: https://temporal.io/
[17]切换: https://medium.com/wise-engineering/how-wise-reduced-aws-rds-maintenance-downtimes-from-10-minutes-to-100-milliseconds-18ab69fe2346
[18]演讲: https://www.youtube.com/watch?v=K5RmYtbeXAc
[19]SLSA框架: https://slsa.dev/spec/v1.1/about
[20]文章: https://medium.com/wise-engineering/state-of-our-ci-cd-pipeline-part-2-29bd17515e6f
[21]Spinnaker: https://spinnaker.io/
[22]自动金丝雀分析: https://spinnaker.io/docs/guides/user/canary/
[23]LGTM堆栈: https://grafana.com/go/webinar/getting-started-with-grafana-lgtm-stack/
[24]文章: https://medium.com/wise-engineering/grafana-mimir-compaction-from-bottleneck-to-savings-b26c6b0125a6