Building a Modern Bank Backend

As your platform are mostly written by go, have you evaluate GNATS for PUB/SUB queue before using kafka?

I cant believe you opted for a non golang based fabric layer. I am curious about why ?

  • For RPC GRPC i pretty solid now. In fact K8 is heavily based itself on GPRC, as are many of the big golang based services. Its also highly interoperable and has build in tracing & metrics.

  • In regards to the Fabric for a async idempotent archi, how are you ensuring you are idempotent underneath your chosen fabric. To be idempotent your going to need the architecture to be a Event Store with a CQRS based architecture. There are 3 i have seen for golang.
    I am working on a similar project and am very curious what your chose for idempotentency architecture ??

@ykk83568 @reorx @orson @joeblew99

Just a quick suggestion - @oliver usually picks up questions in the Slack developer community & these types of questions are generally easier to discuss in chat so it might be worth asking them there (there’s a link which you can use to join in my first comment on this topic).

For anyone who wants to find out more…

How do you trace/log a transaction through your infrastructure?

2 Likes

I just posted the slides from a talk I did last night about our backend at the Kubernetes London meetup, in case anyone finds them interesting :innocent:

(And sorry I haven’t responded to all the questions in this thread… I’m not ignoring you and I will get around to replying :persevere:)

2 Likes

I found this conversation on Twitter & asked one of the organisers

Edit

Edit 2

Link in tweet was pointing to the event’s other talk, this is the link for Oliver’s

The video’s been posted now…unfortunately it looks like embedding the video’s been disabled

https://skillsmatter.com/skillscasts/9146-building-a-microservices-with-kubernetes

Are you guys using any GUI for managing Kubernetes? Or just managing all the Kubernetes configurations through yaml configuration files?

AWS showing some :heart: for Monzo with a tube ad :slight_smile:

https://twitter.com/t_blom/status/819480772654600192

2 Likes

I’ve just been reading through the job posts on Monzo’s careers page & I thought I’d share the current list of tools & technologies from Monzo’s technology stack (a couple of which - in bold - weren’t mentioned in this blog post), before the Backend Engineer role is taken down, if it ever is :wink:

  • Cassandra for most persistent data storage
  • Kafka for our asynchronous message queue
  • Linkerd/Finagle for RPC
  • Kubernetes and Docker to schedule and run our services
  • AWS for most of our infrastructure
  • React for internal web dashboards
  • We also have two physical datacenter sites with actual cables to connect to various third parties :slight_smile:
1 Like

There’s now an 8 page case study detailing Monzo’s use of AWS on their website -

1 Like

Impressive to see that Monzo’s built 95% of their software in house!

Screenshot from Monzo’s Crowdcube investment deck.

2 Likes

@tristan @Naji Would be awesome to see an update to this with the impending CA roll out to see how/if you have had to change the way your infrastructure runs to scale differently to the pre paid.

3 Likes

@oliver - thank you kindly for this. The content is excellent. A few questions for you. People related questions.
(1) What is the impact of the architecture Monzo has set out, on how product teams have been structured?
(2) What has been the biggest challenging in onboarding engineers with this, architecture?
(3) Does each engineer have accountability for a few micro services?

In case you were wondering..

I don’t think the architecture has driven the design of our organisational structure, but it also has not constrained it. As you may know, there is no “engineering team” at Monzo. Instead, there are lots of teams, many of which each have some engineers. Our architecture has been really useful in letting us make those teams as autonomous and decoupled as possible.

With several hundred services, it’s becoming increasingly impractical for every engineer to know even what functionality exists within the platform. Of course, they have access to all the code, but it’s a bit like an operating system where there’s just lots of functionality that you may not be aware of. I personally am often pleasantly surprised to discover some useful nugget of functionality that already exists.

Each team has responsibility for a set of services. There is no responsibility on an individual for an individual service.

5 Likes

FYI, that case study and the architecture diagram are both at least somewhat incorrect. Daniel mentioned he had not seen the case study before, and that they did not use CloudHSM (which is mentioned in both the diagram and the case study).

1 Like

Another update -

1 Like

Making Monzo shared a cool, high level, diagram of Monzo’s tech stack today -

1 Like