Monzo has grown from an idea to a fully regulated bank on the AWS Cloud. A bank that “lives on your smartphone,” Monzo has already handled £1 billion worth of transactions for half a million customers in the UK. Monzo runs more than 1600 core-banking microservices on AWS, using services including Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Block Store (Amazon EBS), and Amazon Simple Storage Service (Amazon S3).
The banking industry is ripe for disruption. Large banks are under threat from agile startups that can attract customers because they focus on providing an excellent, mobile-first experience and aren’t tethered by cumbersome legacy technology. One of the most prominent challenger banks is UK-based Monzo. Founded in 2015 by a small team of entrepreneurs from the technology and banking industries, it already has half a million users and 1600 employees, and has handled £1 billion [US$1.38 billion] in transactions so far. In 2017 alone, it grew from 65 to 275 employees and added 400,000 new customers.
Monzo’s CEO Tom Blomfield compares the digital offering of a traditional bank to that of his company: “We’re trying to take a generational leap forward in terms of the product and functionality. All of those painful things you have to do in your life with your money that you wish you didn’t have to think about—we just make them work.” These services include instant transfers between accounts, freezing (and unfreezing) lost cards with a tap on the app, and managing money by setting spending targets with notifications if money is being spent too quickly.
Monzo’s journey from an idea to a fully regulated bank has been surprisingly quick. This is thanks in no small part to the technical decisions the bank has taken, such as running its core banking services in the Amazon Web Services (AWS) Cloud and opting for a microservices architecture from day one.
One of the initial reasons Monzo chose AWS was the need to comply with banking regulations. In November 2015, the Financial Conduct Authority (FCA)—the UK regulatory body that awards banking licenses—released guidelines for banks using off-premises cloud services. Partly because the FCA had awarded a contract to AWS for its own needs, Monzo decided AWS had the credentials to host an FCA-regulated workload. According to Blomfield, “AWS differentiates itself as a forward-thinking cloud vendor that understands enterprise concerns and works with regulators and customers to launch new features.
To allay regulators’ fears, it has services such as AWS CloudTrail, which produce AWS API call logs to enable security analysis, resource change tracking, and compliance auditing.”
Monzo also segregates parts of its infrastructure using separate AWS accounts, so if one account is compromised, critical parts of the infrastructure in other accounts remain unaffected. The bank uses one account for production, one for non-production, and one for storing and managing users’ login information and roles within AWS. The privileges that are assigned in the user account then allow users to read or write to production and non-production accounts.
Using AWS CloudTrail, Monzo logs activity to Amazon S3 buckets in another separate audit account. Nobody can log in to that account, so the records remain immutable. Amazon S3 is also used in a final backup account to store encrypted backups from the production account. “This level of protection helps me sleep at night,” says Simon Vans-Colina, an engineer at Monzo. It took Monzo a day to migrate from its old account to a multi-account setup. In the future, routine management will be even easier, says Vans-Colina. This is because the company will administer its Terraform infrastructure management software with the AWS Organizations API.
Monzo was founded to eliminate the frustrations of traditional banking. For example, viewing real-time balances is often impossible for most of us—even with modern banking apps—because transactions can take 48 hours to show on our statements. The Monzo team has worked hard behind the scenes to reduce this type of delay and build the available, resilient, and responsive infrastructure that delivers a high-quality service to end users. Blomfield says, “A lot of people have taken existing core banking software and deployed it to the cloud. Instead, we’ve written it from scratch and deployed it to the cloud. Taking a monolithic software package and sticking it on AWS, you lose a lot of the benefits of containerization and enormous scale of infrastructure.”
Microservices have always been the lifeblood of Monzo’s core banking application. It currently runs 1600 of them, and the list is set to grow exponentially, according to Matt Heath, a distributed systems engineer at Monzo. Each service runs on Kubernetes, a platform that deploys, scales, and manages containerized applications. Kubernetes itself runs on a cluster of Amazon EC2 instances in the AWS EU (Ireland) Region across three Availability Zones. “Running microservices on Kubernetes and Amazon EC2 gives us agility and fault tolerance,” says Heath.
For example, if an instance is terminated, Monzo’s Auto Scaling groups will bring up another one, and Monzo’s software will re-attach the correct Amazon EBS volume so uptime stays high. And because Monzo’s “service” comprises more than 1600 microservices, availability isn’t necessarily a question of on and off. “If one service fails, we can often use other services to provide a similar experience to the end user without them noticing,” says Heath.
Heath continues: “When we started less than three years ago, we talked about the cool things we could do by building our own bank, but we’ve had to do a lot of groundwork to get to that point. Now we can start working on the things we dreamed about building a while ago.”
As Monzo continues to attract users, its teams spend more time and resources developing new features.
For example, open banking regulations, which came in at the start of 2018, required the nine largest banks in the UK to provide an API for their users’ account information. “We’re not one of those banks,” says Heath, “but we provided the API anyway because we think it’s where the industry is going. Now, Monzo users can integrate their accounts with other services. For our tech-savvy customers, this is great news.”
Heath concludes, “I didn’t think it would be possible to build a new bank, but AWS has made it really easy for us. By using AWS, we can run a bank with more than 4 million customers with just eight people on our infrastructure and reliability team.”