Building a Modern Bank Backend


A lot of the discussion about this post is probably going to happen in :mondo:'s developer community on Slack. You can request an invite here. And this is where the conversation started.

1 Like

looking forward to it

Great post, I’ve been looking into using Kubernetes myself with my current project but decided it best to wait till after launch to start considering switching to a microservices approach, was very interesting to see how you are doing it.

Really interesting read. Well above my knowledge level but still worth reading.

@oliver, what exactly were the key issues for you to switch from Mesos to Kubernetes?

Good question. :bulb: We switched mostly because the operational tooling around Mesos/Marathon is a bit weak. For example, there is no analogue of kubectl (which is a tool we all love). Also, Kubernetes has a stronger feature set, especially with regard to stateful apps and cloud provider integration.

@oliver Interesting and very useful blog! I must admit that most of the concepts are out of my reach, but I am really impressed the way you guys have gone ahead handling such a challenging problem - banking with such a sophisticated technology products/tools.

I got motivated to learn some of them now for sure and I will follow you guys closely now onwards.

1 Like

Thank you very much for having shared such precious information.
It’s really well explained.
Is it possible to have more information about your database ? which engine(s) (NoSQL, relational, …) do you use ?
If you have different engines, for which purpose each of them is set for ?

@oliver Great article and thanks for sharing :smiley:

Small question, your team’s tech stack is mainly on Go, but you use Finagle for RPC framework which is a Scala project, do you write those RPC services in Scala, or in Go but integrated with Finagle? Our team is also Go based and we are seeking for a solid RPC system to work with Go written services. Currently we are using gRPC but its a library rather than system/framework that provide composing & management features with service clusters together.

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?


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:)


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


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

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: