Diterbitkan pada

Arsitektur Neobank - Revolut

Penulis

Revolut adalah neobank terbesar di Inggris dan Eropa dengan lebih dari 30 juta pelanggan ritel pada tahun 2023.

Image

Revolut menjadi populer di kalangan wisatawan dan ekspatriat yang mengirim uang ke luar negeri berkat biaya rendah dan kurs yang menarik.

Revolut berhasil membangun arsitektur mikroservis berbasis event yang banyak perusahaan kesulitan implementasikan. Arsitektur ini merupakan hasil dari trial dan error; ia mengalami transformasi dari monolit dan matang dalam cara yang ditampilkan dalam diagram.

Bagian backend terdiri dari banyak mikroservis independen yang berkomunikasi dengan mengirim dan menerima event. Event-event tersebut dipertahankan dalam penyimpanan event tunggal, yang merupakan Postgres DB. Informasi dari penyimpanan event dikonsumsi oleh berbagai modul seperti Risiko, PnL, dan deteksi penipuan.

Tumpukan Teknologi

1️⃣ Java, Kotlin untuk backend

2️⃣ GCP sebagai penyedia awan publik

3️⃣ PostgreSQL (direplikasi untuk mendukung streaming)

4️⃣ JetBrains Ktor dan Kotlin coroutines untuk mengirim event dan streaming

5️⃣ jOOQ untuk menulis kueri SQL

6️⃣ RSocket Reactive Streams

7️⃣ ReactJS untuk frontend

Mikroservis Berbasis Event

1️⃣ Mikroservis berkomunikasi dengan menukar event (menggunakan Kotlin Coroutines).

2️⃣ Sebelum mengirim, event dipertahankan dalam tabel penyimpanan event di Postgres DB.

3️⃣ Layanan penerima menerapkan handler onEvent untuk memproses event.

4️⃣ Proses rekonsiliasi mengirimkan event yang ada di DB tetapi belum dikirimkan.

5️⃣ Penyimpanan event digunakan untuk kueri, streaming, analisis, dan pelaporan.

Streaming Event

1️⃣ SingleEventConsumer dan MultiEventConsumer digunakan oleh klien untuk berlangganan event.

2️⃣ Setiap aplikasi yang mengonsumsi event bergantung pada event-processor.

3️⃣ Event-processor bertanggung jawab untuk mengirimkan event langganan ke konsumen.

4️⃣ Implementasi streaming didasarkan pada Scrollable JDBC ResultSets (Cursors).

5️⃣ Salinan baca dari penyimpanan event digunakan untuk meningkatkan kinerja.

Konsistensi Data

☑️ Gunakan transaksi saat memungkinkan, misalnya, untuk tindakan yang memiliki batas dalam sistem.

☑️ Ketika transaksi tidak dapat diterapkan, platform menerapkan rekonsiliasi berbasis pekerjaan, misalnya, ketika memanggil API eksternal.

☑️ Revolut menggunakan Transaction Manager untuk memulai transaksi dan memindahkan periksaan mahal ke luar.

Menariknya, mereka membuat keputusan sadar untuk tidak menggunakan Kafka, yang sudah ada saat mereka membangun platform mereka. Salah satu alasan utama adalah kompleksitas pemeliharaan dan konfigurasi, dan mungkin, kurva belajar yang curam. Ketika dikembangkan secara internal, solusi proprietary berbasis DB relasional mudah dipelihara, disesuaikan, dan dikueri.

Harap dicatat bahwa versi bahasa Indonesia didukung oleh AI dan karena itu mungkin terjadi kesalahan kecil.

Penulis

Ai Base Network (ABN), ABN ASIA didirikan oleh orang-orang dengan akar yang kuat di dunia akademis, dengan pengalaman kerja di Amerika Serikat, Belanda, Hungaria, Jepang, Korea Selatan, Singapura, dan Vietnam. ABN Asia adalah tempat di mana akademik dan teknologi bertemu dengan peluang. Dengan solusi terdepan kami dan layanan pengembangan perangkat lunak yang kompeten, kami membantu bisnis untuk meningkatkan level dan bersaing di panggung global. Komitmen kami: Lebih Cepat. Lebih Baik. Lebih handal. Dalam kebanyakan kasus: Lebih murah juga.

Jangan ragu untuk menghubungi kami jika Anda membutuhkan layanan IT, konsultasi digital, solusi perangkat lunak siap pakai, atau jika Anda ingin mengirimkan permintaan proposal (RFP). Anda dapat menghubungi kami di [email protected]. Kami siap membantu Anda dengan semua kebutuhan teknologi Anda.

ABNAsia.org

© ABN ASIA