In this video, Vlad Yatsenko, the co-founder and CTO of Revolut briefly discusses the various challenges encountered by his company in building the new banking backend. He also elaborates on the mistakes made and lessons learned, and how they scaled to over 5 million users.
He beings by introducing what a bank is, its purpose and its varied functionalities. At 3:21, he points our some prominent functionalities of a bank that includes card payments, currency exchange, investments in the fund, analytics, fraud protection, financial education, social payments, insurance, and open banking.
Building a Bank
At 5:10, he puts forward the main functionality of Revolut which is managing multi-currencies. He further states that with Revolut, you can hold 29 currencies with addition to 5 cryptocurrencies in order to exchange, transfer, spend and invest without any fees.
From 6:10 Vlad provides an overview the main metrics, notably:
- 5m+ users, generating 1.7m transactions per day.
- 90 backend applications.
- 4 mobile applications.
- Over 10 web applications.
- Built and supported by 220 people in Product and Engineering.
The Back End
Beginning at 7:25 Vlad explores the main question: How is the simplistic, mobile app experiences for consumers achieved ‘in the background’, what is the ‘Back End’ and how is it achieved.
From 10:00 he explores the evolution from a very small, initial startup team, when the entire code base was maintained as a single monolith, and from there gets into the heart of how they have evolved their use of Java to adjust to the primary requirement of banking: Correctness.
This meant guaranteed consistency of information was the number one objective, translating into a focus on aspects of Java development for managing transactional behaviour. With processes such as reconciliation the types of high volume interactions they conduct, this high integrity design is their keystone foundation.
At 15:17, Vlad states the two critical rules told by Warren Buffet. The first one is to never lose memory while the second one is to never forget the first rule. He also emphasizes that both the company’s and customer’s money should not be wasted.
Currencies and a New World of Microservices
From 19:30 Vlad walks through a core strength of Revolut: Currency exchange services.
At 20:44, he states that with Revolut, there’s no need for people to perform any calculations to determine a specific amount in different currencies. It is all done in an automated fashion. He walks through an example user scenario showing how simple it is to perform via their app.
At 25:10 he explores the aspect of backend development he characterizes as the ‘New World of Microservices’, zeroing in a core principle constituting Microservice development. At 25:27, he emphasizes that the code based used in Revolut is quite simple and very flexible. He also adds that it follows the golden rule that the microservice or functionality serve is micro and not injected.
At 30:16, he references back to their original monolithic architecture, and how they began to adapt it for this new world, such as adding an event store for persistent messaging.
Work culture at Revolut
From 33:20 Vlad moves on to another major capacity requirement for them: Protection against financial crimes, such as money laundering, where the biggest issue is assessing valid transactions is a probabilistic scenario, and so they focus their Data Science experts on identifying fraud patterns.
At 36:02, he briefs that the teams working at the new database part at Revolut work constantly in try and optimize to bring down the false positive values.
Though the false positive cannot be brought down to zero, care is taken to bring the false positive value to the maximum low possible. At 39:33, he explains the culture that is followed at Revolut. He states that while the developers take care of several infrastructure tasks, the specialized projections are being taken care of by the DevOps. He adds that QA becomes the responsibility of developers (TDD) and testers are also developers.
At 45:08, Vlad explains the differences between problem-driven and solution-driven approaches. He briefs that sometimes you need to tackle problems with both the approaches. He states that one shouldn’t ponder too much into the problem, rather look at them from a broader sense.
He adds that peer reviews as a way to challenge each other and learn together. At 48:52, he concludes his lecture by emphasizing that creativity and optimized code and approaches are given utmost importance while working on projects at Revolut.