Cloud Native 7 min read

Monzo’s Approach to Managing 1,600 Backend Microservices with Kubernetes and Cloud‑Native Practices

Monzo, the UK digital bank, shares how it built a Kubernetes‑based, cloud‑native platform to run over 1,600 Go‑written microservices backed by Cassandra, implements fine‑grained service isolation with network policies, and creates internal tooling to automate security and deployment at massive scale.

Cloud Native Technology Community
Cloud Native Technology Community
Cloud Native Technology Community
Monzo’s Approach to Managing 1,600 Backend Microservices with Kubernetes and Cloud‑Native Practices

At a London seminar, senior Monzo engineers Matt Heath and Suhail Patel described how the bank, serving over four million users, manages more than 1,600 backend microservices using a cloud‑native architecture.

Monzo chose a distributed design from the start, moving from Mesos to Kubernetes in 2016 and migrating its infrastructure to AWS to reduce operational overhead.

The backend relies on the horizontally scalable NoSQL database Cassandra and the concise, backward‑compatible Go language, allowing seamless adoption of new language features such as garbage collection without code changes.

To avoid unnecessary third‑party dependencies, Monzo builds its own integration tools, including a custom utility that lets developers trigger deployments or rollbacks with a single pull‑request command.

Each microservice runs in its own Docker container and is split into two layers: a shared core library (providing RPC, Cassandra access, locking, logging, metrics, and queuing) and a business‑logic layer specific to the service.

Monzo aggressively decomposes services to the smallest viable granularity, growing from a few hundred services in its first year to over 1,600 by late 2020, with more than 9,300 unique service‑to‑service calls.

To enforce zero‑trust security, the team initially maintained a manual whitelist of allowed service calls, but as the number of services approached ten thousand, they automated whitelist generation using a Go‑based RPC map analyzer that identifies all callers of a critical service (service.ledger) and creates Kubernetes NetworkPolicy objects.

When manual whitelist maintenance proved cumbersome, Monzo adopted the open‑source Calico project to provide per‑service micro‑firewalls and built internal observability tools that expose API inventories, status information, and visual traffic monitoring.

Monzo also produced a “Backend Engineer 101” guide covering service creation, RPC handling, Firehose publishing, unit testing, and deployment procedures, supported by a dedicated Slack channel for discussion.

The overall lesson is that fine‑grained microservice decomposition, combined with standardized tooling, automation, and strict security policies, enables rapid iteration while mitigating the complexity of large‑scale financial applications.

cloud nativemicroservicesKubernetesGoCassandraMonzo
Cloud Native Technology Community
Written by

Cloud Native Technology Community

The Cloud Native Technology Community, part of the CNBPA Cloud Native Technology Practice Alliance, focuses on evangelizing cutting‑edge cloud‑native technologies and practical implementations. It shares in‑depth content, case studies, and event/meetup information on containers, Kubernetes, DevOps, Service Mesh, and other cloud‑native tech, along with updates from the CNBPA alliance.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.