Veröffentlicht am

Architektur einer Neobank - Revolut

Autoren

Revolut ist die größte Neobank im Vereinigten Königreich und in Europa mit mehr als 30 Millionen Privatkunden für 2023.

Image

Es wurde bei Reisenden und Expats, die Geld ins Ausland senden, aufgrund seiner niedrigen Gebühren und attraktiven Wechselkurse populär.

Revolut baute erfolgreich eine ereignisgesteuerte Mikroservice-Architektur auf, die viele Unternehmen Schwierigkeiten bereitet, umzusetzen. Diese Architektur war das Ergebnis von Trial und Error; sie ging durch eine Transformation von einem Monolithen und reifte in der Weise, wie sie im Diagramm dargestellt wird.

Das Backend besteht aus zahlreichen unabhängigen Mikroservices, die durch das Senden und Empfangen von Ereignissen kommunizieren. Die Ereignisse werden in einem einzigen Ereignisspeicher, einem Postgres-DB, persistent gespeichert. Informationen aus dem Ereignisspeicher werden von verschiedenen Modulen wie Risiko, PnL und Betrugserkennung konsumiert.

Technologie-Stack

1️⃣ Java, Kotlin für das Backend

2️⃣ GCP als öffentlicher Cloud-Anbieter

3️⃣ PostgreSQL (repliziert, um Streaming zu unterstützen)

4️⃣ JetBrains Ktor und Kotlin-Coroutinen zum Senden von Ereignissen und Streaming

5️⃣ jOOQ zum Schreiben von SQL-Abfragen

6️⃣ RSocket Reactive Streams

7️⃣ ReactJS für das Frontend

Ereignisgesteuerte Mikroservices

1️⃣ Mikroservices kommunizieren durch den Austausch von Ereignissen (mit Kotlin-Coroutinen).

2️⃣ Bevor ein Ereignis gesendet wird, wird es im Ereignisspeichertabelle in der Postgres-DB persistent gespeichert.

3️⃣ Ein Empfänger-Service implementiert einen onEvent-Handler, um ein Ereignis zu verarbeiten.

4️⃣ Ein Reconciler-Prozess liefert Ereignisse, die in der DB vorhanden sind, aber nicht geliefert wurden.

5️⃣ Der Ereignisspeicher wird für Abfragen, Streaming, Analytics und Reporting verwendet.

Ereignis-Streaming

1️⃣ SingleEventConsumer und MultiEventConsumer werden von Clients verwendet, um sich für Ereignisse zu abonnieren.

2️⃣ Jede Anwendung, die Ereignisse konsumiert, verlässt sich auf den Ereignis-Processor.

3️⃣ Der Ereignis-Processor ist dafür verantwortlich, die Ereignisse des Abonnements an die Consumer zu dispatchen.

4️⃣ Die Implementierung des Streamings basiert auf den Scrollable JDBC-ResultSets (Cursors).

5️⃣ Eine Lesereplik des Ereignisspeichers wird verwendet, um die Leistung zu verbessern.

Datenkonsistenz

☑️ Verwenden Sie Transaktionen, wenn möglich, z. B. für Aktionen, die innerhalb des Systems Grenzen haben.

☑️ Wenn Transaktionen nicht anwendbar sind, implementiert die Plattform eine jobbasierte Reconciliation, z. B. bei der Aufrufung externer APIs.

☑️ Revolut verwendet einen Transaktions-Manager, um Transaktionen zu initiieren und teure Überprüfungen außerhalb zu bewegen.

Interessanterweise haben sie eine bewusste Entscheidung getroffen, Kafka nicht zu verwenden, das bereits existierte, als sie ihre Plattform aufbauten. Einer der Hauptgründe ist die Komplexität der Wartung und Konfiguration und wahrscheinlich die steile Lernkurve. Wenn eine eigene Lösung auf Basis einer relationalen Datenbank entwickelt wird, ist sie leicht zu warten, anzupassen und zu abfragen.

Bitte beachten Sie, dass die deutsche Version von Ai unterstützt wird und daher geringfügige Fehler auftreten können.

AUTOR

Über ABN Asia: Ai Base Network (ABN), ABN Asia wurde im Jahr 2012 gegründet und ist ein Unternehmen mit akademischem Hintergrund, das von Lehrkräften und ehemaligen Studierenden aus Ungarn, den Niederlanden, Russland, Deutschland und Japan gegründet wurde. Wir teilen eine gemeinsame Leidenschaft und eine klare Vision für Technologie, die Innovation und erstklassige Qualität für unsere Kunden bringt. Unser Motto lautet: Besser. Schneller. Sicherer. In vielen Fällen: Günstiger.

Zögern Sie nicht, uns zu kontaktieren, wenn Sie IT-Dienstleistungen, digitale Beratung, Standardsoftwarelösungen benötigen oder uns Angebotsanfragen (RFPs) senden möchten. Sie können uns unter [email protected] kontaktieren. Wir sind bereit, Ihnen bei all Ihren Technologiebedürfnissen zu helfen.

ABNAsia.org

© ABN ASIA