Niezmienne grafy i Clojure: jak Nubank skalował bank do 131 milionów klientów
Nubank osiągnął 131 milionów klientów w ciągu 12 lat, wykorzystując Clojure, Datomic i niezmienne dane. Ich stos technologiczny obejmuje 4000 mikroserwisów, 72 miliardy zdarzeń Kafka dziennie i 2,5 miliarda transakcji Datomic dziennie. To rozwiązanie minimalizuje złożoność, zapewniając ślad audytowy bez dodatkowej infrastruktury.
Kontekst brazylijski i start Nubank
W Brazylii pięć banków dominowało na 84% rynku kredytowego z oprocentowaniem do 450% rocznie. 34 miliony dorosłych nie miało kont, a otwarcie zajmowało miesiące. W 2013 roku zespół Davida Veleza (Sequoia Capital), Cristiny Junqueiry (Itaú) i Edwarda Wibla (Princeton) uruchomił Nubank z kartą kredytową bez opłat przez aplikację mobilną i limitem od 10 dolarów.
Inwestycje seedowe wyniosły 2 miliony dolarów. Wzrost: 12 milionów klientów do 2019, 48 milionów do IPO w 2021, 100 milionów do 2024 i 131 milionów do 2025 (62% dorosłej populacji). Rozwój następował poprzez rekomendacje.
Problemy z mutowalnością w systemach bankowych
Mutowalne dane komplikują audyt: regulatorzy wymagają stanu klienta w konkretnym momencie — limit, model scoringu, dane wejściowe. Transakcje są kwestionowane bez pełnej historii. Rozwiązania ML nie są reprodukowalne po aktualizacjach.
Tradycyjne rozwiązania — tabele audytowe, triggery, wersjonowanie — dodają tysiące linii kodu bez wartości biznesowej.
Podejście niezmienne: Każda zmiana to nowy fakt z timestampem. Stan w dowolnym momencie jest wyodrębniany zapytaniem. Audyt jest bezpłatny, reprodukowalność gwarantowana.
Wybór Datomic i Clojure
CTO Edward Wibl kierował się "Out of the Tarpit", skupiając się na minimalizacji mutowalnego stanu. Wybrał Datomic — niezmienną bazę danych Richa Hickey'ego w formacie EAVT (Entity-Attribute-Value-Transaction).
- Nic nie jest usuwane.
- Każda zmiana to fakt z czasem transakcji.
- Stan to wycinek czasowy, jak w Git.
Datomic doprowadził do Clojure: zespół porzucił OOP i RDBMS. Stos: Clojure (backend), Kafka (asynchroniczność), Datomic (dane), Flutter (mobilne), AWS/K8s (infrastruktura).
Skala w 2025: 4000 mikroserwisów, 72 miliardy zdarzeń Kafka dziennie, 2,5 miliarda transakcji Datomic dziennie, 85+ klastrów K8s, 50+ wdrożeń dziennie (master w produkcji w 30 minut).
Nubank nabył Cognitect (twórców Clojure/Datomic) w 2020, Hickey dołączył. Datomic open-source pod Apache 2.0 w 2023.
Filozofia Richa Hickey'ego
Rich Hickey stworzył Clojure w 2,5 roku samodzielnie. Kluczowe idee z "Simple Made Easy":
- Simple — niesplątane, easy — znajome. Branża poświęca prostotę dla łatwości.
- Wartości > obiekty. Czas to sekwencja faktów.
- Tożsamość to seria stanów, fakty są niezmienne.
Konsekwencje:
- Brak locków/muteksów, trywialna współbieżność.
- Deterministyczne testowanie.
- Baza danych jak Git: podróż w czasie.
Victor Oliveira: wkład Hickey'ego wykracza poza język, zmieniając podejście do oprogramowania.
Prawo Conwaya w architekturze Nubank
Prawo Conwaya (1968): systemy odzwierciedlają strukturę komunikacyjną organizacji. Trzy zespoły — trójprzejściowy kompilator; rozproszone grupy — nieporadne interfejsy.
Nubank świadomie buduje organizację pod stos: małe, międzyfunkcjonalne zespoły, jednolity stos technologiczny. To minimalizuje złożoność, skalując do 131 milionów klientów.
Co jest ważne:
- Niezmienność eliminuje potrzebę infrastruktury audytowej, upraszczając zgodność.
- Datomic EAVT + czas = Git dla danych bankowych.
- Clojure + prawo Conwaya zapewniają prostotę przy 4000 serwisach.
- Wzrost Nubank dowodzi żywotności FP dla wysokoskalowalnego fintechu.
- Open-sourcing Datomic przyspiesza adopcję.
— Editorial Team
Brak komentarzy.