返回首页

Nubank 的 Clojure 和 Datomic:1.31 亿客户

Nubank 使用 Clojure 和 Datomic 扩展到 1.31 亿客户,最小化可变复杂性。不可变事实提供免费审计和可重现性。Conway's law 被整合到组织中。

Nubank:为 1.31 亿客户提供 Clojure 和不可变数据
Advertisement 728x90

# 不变图与 Clojure:Nubank 如何用 12 年服务 1.31 亿客户

Nubank 仅用 12 年就服务了 1.31 亿客户,靠的是 Clojure、Datomic 和不变数据。其技术栈轻松驾驭 4000 个微服务、日均 720 亿 Kafka 事件,以及 25 亿 Datomic 事务。这种方法大幅降低复杂度,还自带审计追踪——无需额外基础设施。

巴西银行业格局与 Nubank 的崛起

巴西银行业长期被五大巨头垄断,掌控 84% 的信贷市场,年利率高达 450%。约 3400 万成年人无银行账户,开户往往需数月。2013 年,David Vélez(红杉资本)、Cristina Junqueira(Itaú)和 Edward Wible(普林斯顿)带领团队推出 Nubank,通过手机 App 提供免年费信用卡,初始额度低至 10 美元。

种子轮融资:200 万美元。随后增长爆炸式:2019 年 1200 万客户,2021 年 IPO 时 4800 万,2024 年 1 亿,2025 年达 1.31 亿(覆盖巴西成年人口 62%)。口碑传播是成功关键。

Google AdInline article slot

可变数据在银行系统的隐患

可变数据让审计变成噩梦:监管机构要求随时查看客户确切状态——额度、评分模型、输入数据。没有完整历史,纠纷频发。机器学习模型更新后难以复现。

传统补救如审计表、触发器和版本控制,会堆积数千行无业务价值的代码。

不变式方法: 每笔变更都是带时间戳的新事实。可查询任意时间点的状态。审计零成本,复现有保障。

Google AdInline article slot

为什么选择 Datomic 和 Clojure

CTO Edward Wible 受《摆脱沥青坑》启发,优先最小化可变状态。他选了 Datomic——Rich Hickey 打造的不变数据库,采用 EAVT 格式(实体-属性-值-事务)。

  • 什么都不会被删除。
  • 每笔变更都是有时效的事实。
  • 状态就是时间切片,就像 Git 一样。

Datomic 引向 Clojure:团队抛弃 OOP 和 RDBMS。技术栈:Clojure(后端)、Kafka(异步)、Datomic(数据)、Flutter(移动端)、AWS/K8s(基础设施)。

2025 年规模:4000 个微服务、日均 720 亿 Kafka 事件、25 亿 Datomic 事务、85+ K8s 集群、日均 50+ 次部署(主分支到生产仅 30 分钟)。

Google AdInline article slot

Nubank 于 2020 年收购 Clojure/Datomic 创造者 Cognitect;Hickey 加入。Datomic 于 2023 年完全开源,采用 Apache 2.0 许可。

Rich Hickey 的设计哲学

Rich Hickey 独力打造 Clojure,仅用 2.5 年。《简单即易懂》核心观点:

  • 简单指无纠缠;容易指熟悉。行业常以容易换简单。
  • 重视值而非对象。时间是事实序列。
  • 身份是一系列状态;事实不可变。

影响:

  • 无锁/互斥,并发 trivial。
  • 确定性测试。
  • 像 Git 一样的数据库:内置时间旅行。

Victor Oliveira 指出,Hickey 影响超越语言,重塑软件设计。

Nubank 架构中的康威定律

康威定律(1968):系统镜像组织沟通结构。三人团队建三遍编译器;孤岛团队造笨拙接口。

Nubank 刻意围绕技术栈塑造组织:小型跨职能团队,统一技术栈。这在服务 1.31 亿客户时保持低复杂度。

关键启示:

  • 不变性消除审计基础设施,简化合规。
  • Datomic 的 EAVT + 时间 = 银行数据的 Git。
  • Clojure + 康威定律在 4000 服务中实现简单性。
  • Nubank 增长证明函数式编程适合高规模金融科技。
  • Datomic 开源加速采用。

— Editorial Team

Advertisement 728x90

继续阅读