Xuất bản vào

Kiến trúc của một Ngân hàng số - Revolut

Tác giả

Revolut là ngân hàng số lớn nhất tại Vương quốc Anh và Châu Âu với hơn 30 triệu khách hàng bán lẻ vào năm 2023.

Image

Nó trở nên phổ biến trong số các du khách và người nước ngoài gửi tiền ra nước ngoài nhờ vào phí thấp và tỷ giá hối đoái hấp dẫn.

Revolut đã thành công trong việc xây dựng kiến trúc microservices dựa trên sự kiện mà nhiều công ty đang gặp khó khăn trong việc triển khai. Kiến trúc này là kết quả của thử nghiệm và sai sót; nó đã trải qua một sự chuyển đổi từ một khối đơn và trưởng thành theo cách nó được trình bày trong sơ đồ.

Phần backend bao gồm nhiều microservices độc lập giao tiếp bằng cách gửi và nhận sự kiện. Các sự kiện được lưu trữ trong một kho sự kiện duy nhất, đó là một cơ sở dữ liệu Postgres. Thông tin từ kho sự kiện được tiêu thụ bởi các mô-đun khác nhau như Rủi ro, PnL và phát hiện gian lận.

Ngăn xếp công nghệ

1️⃣ Java, Kotlin cho backend

2️⃣ GCP là nhà cung cấp đám mây công cộng

3️⃣ PostgreSQL (sao chép để hỗ trợ streaming)

4️⃣ JetBrains Ktor và Kotlin coroutines để gửi sự kiện và streaming

5️⃣ jOOQ để viết các truy vấn sql

6️⃣ RSocket Reactive Streams

7️⃣ ReactJS cho frontend

Microservices dựa trên sự kiện

1️⃣ Microservices giao tiếp bằng cách trao đổi sự kiện (sử dụng Kotlin Coroutines).

2️⃣ Trước khi gửi, một sự kiện được lưu trữ trong bảng kho sự kiện trong Postgres DB.

3️⃣ Một dịch vụ nhận thực hiện onEvent handler để xử lý một sự kiện.

4️⃣ Một quy trình hòa giải cung cấp các sự kiện có trong DB nhưng chưa được cung cấp.

5️⃣ Kho sự kiện được sử dụng cho các truy vấn, streaming, phân tích và báo cáo.

Streaming sự kiện

1️⃣ SingleEventConsumer và MultiEventConsumer được sử dụng bởi các khách hàng để đăng ký sự kiện.

2️⃣ Mỗi ứng dụng tiêu thụ sự kiện dựa vào event-processor.

3️⃣ Event-processor chịu trách nhiệm phân phối các sự kiện của đăng ký đến người tiêu thụ.

4️⃣ Việc triển khai streaming dựa trên Scrollable JDBC ResultSets (Cursors).

5️⃣ Một bản sao đọc của kho sự kiện được sử dụng để cải thiện hiệu suất.

Tính nhất quán dữ liệu

☑️ Sử dụng giao dịch khi có thể, ví dụ, cho các hành động có ranh giới trong hệ thống.

☑️ Khi giao dịch không áp dụng được, nền tảng triển khai một sự hòa giải dựa trên công việc, ví dụ, khi gọi các API bên ngoài.

☑️ Revolut sử dụng Transaction Manager để khởi tạo giao dịch và di chuyển các kiểm tra tốn kém ra ngoài.

Thú vị là, họ đã đưa ra quyết định có ý thức không sử dụng Kafka, vốn đã tồn tại khi họ xây dựng nền tảng của mình. Một trong những lý do chính là sự phức tạp của việc bảo trì và cấu hình và, có lẽ, đường cong học tập dốc. Khi phát triển nội bộ, giải pháp độc quyền dựa trên cơ sở dữ liệu quan hệ dễ dàng bảo trì, tùy chỉnh và truy vấn dữ liệu từ đó.

TÁC GIẢ

Về ABN Asia: AiUTOMATING PEOPLE, ABN Asia được thành lập từ năm 2012, là một công ty xuất phát từ học thuật, do những giảng viên, cựu du học sinh Hungary, Hà Lan, Nga, Đức, và Nhật Bản sáng lập. Chúng tôi chia sẻ đam mê chung và tầm nhìn vững chắc về công nghệ, mang đến sự đổi mới và chất lượng đỉnh cao cho khách hàng. Phương châm của chúng tôi là: Tốt hơn. Nhanh hơn. An toàn hơn. Trong nhiều trường hợp: Rẻ hơn.

Hãy liên hệ với chúng tôi khi Quý doanh nghiệp có các nhu cầu về dịch vụ công nghệ thông tin, tư vấn chuyển đổi số, tìm kiếm các giải pháp phần mềm phù hợp, hoặc nếu Quý doanh nghiệp có đấu thầu CNTT (RFP) để chúng tôi tham dự. Quý doanh nghiệp có thể liên hệ với chúng tôi qua địa chỉ email [email protected]. Chúng tôi sẵn lòng hỗ trợ với mọi nhu cầu công nghệ của Quý doanh nghiệp.

ABNAsia.org

© ABN ASIA

AbnAsia.org Software