# 不变图与 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%)。口碑传播是成功关键。
可变数据在银行系统的隐患
可变数据让审计变成噩梦:监管机构要求随时查看客户确切状态——额度、评分模型、输入数据。没有完整历史,纠纷频发。机器学习模型更新后难以复现。
传统补救如审计表、触发器和版本控制,会堆积数千行无业务价值的代码。
不变式方法: 每笔变更都是带时间戳的新事实。可查询任意时间点的状态。审计零成本,复现有保障。
为什么选择 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 分钟)。
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
暂无评论。