Hacker News new | ask | show | jobs
by mattheath 3361 days ago
Hi, author here. Happy to answer any questions!
4 comments

Monzo sounds like a really fun bank to work!

I suspect the technological baggage in finance to be one of the main deterrents for young developers, the people who want to engineer modern, elegant systems and not go into the business of maintaining legacy spaghetti. I imagine you guys are attracting some really high end talent.

My questions are a little more about Monzo as a workplace in general as I will be applying for an internship with you guys.

Is there any Scala in your infrastructure? If not, was it a language that was given much consideration earlier on?

I see Kafka as part of your stack. Are stream processing frameworks like Samza, Spark and Flink found in your infrastructure?

How many developers? What would you estimate the backend/frontend split to be at?

This might help, Monzo published a blog detailing their technology stack a while ago -

https://monzo.com/blog/2016/09/19/building-a-modern-bank-bac...

Thanks for the link!

I just wanna add that I think it's beyond cool that there's a bank out there that's publishing a dev blog and detailing their tech stack.

Most of the other banks are too ashamed to publish their tech stack. After all, it's kind of hard to attract 25-30 year olds with technologies that had their last major updates before the candidates were born :p
Hi there, I scrolled through the video and also read the blog post describing your stack and couldn't find anything about your data modeling and persistence layer. To me that is the most interesting part since you are a bank but at the same time you are using a micro service based architecture. Is there any information available about what database you use and how you manage your data?
We store the vast majority of our data in Cassandra, which gives us tuneable consistency and high availability given its master-less architecture. Those properties suit the rest of our architecture perfectly, though there are of course trade offs involved. Each service then has its own keyspace and is unable to access the data of other services.
I'd be much more interested in understanding how you managed to handle banking level transaction on a non rdbms system like cassandra, than how you coded some logic in go.
Thanks for the talk Matt. Lots of really good detail there. Working with both Go/Java and Microservices. One question I have is how critical is linkerd to having a dependable microservice mesh? Another question is what did you use for async services?
You're welcome! In our case linkerd is critical to this, as we've offloaded load balancing, circuit breaking, and retry policies etc to linkerd. If we hadn't then we would need to implement this functionality in multiple languages (though we mainly use go) and keep these in sync as we developed our platform, which from my experience is quite difficult. Using linkerd largely removes this from us, meaning we have a well tested method of inter-service RPCs, and we get free feature development ;) For async processing we're using Kafka, which powers the majority of our event sourced architecture.
For some reason https://monzo.com/ crashes in both Chrome and Firefox before the pages loads on my linux desktop machine. Never seen anything like that before...
Both browsers is unusual (I have the occasional Firefox crash sometimes though not on Mondo and not for a while).

It works on both here (FFDE and Chrome 58).