We are going to talk about how we built, maintain and scale our microservices architecture. We are a fast-growing digital bank with a lot of challenges regarding scalability, operability and reliability and we would like to present a structured talk about the key components of our ecosystem and also how they interact with each other.
There’s a few characteristics that are not so usual and gives us a lot of leverage when compared to our competitors, things like Sharding and Homogeneous Codebase, using functional programming as our main paradigm. Also, we build and maintain abstractions that help our engineering team to smoothly operate and constantly improve their microservices, and furthermore the products we offer to customers.
One of things we use to achieve high levels of resilience and reliability is Kubernetes with our own developed tooling and abstractions, which allows us to provide fast interaction cycle and an even more optimized way to deploy services and other infrastructure parts. For instance, we deploy things like Thanos, Prometheus and Grafana using those abstractions to ensure fast-ish manner to release and control software versioning.
By dealing with a regulated environment with high requirements around, specially, uptime, SLAs and SLOs we’ve learned how to properly interact with large and complex distributed systems, keeping core platform systems like Kafka, used among services for asynchronous communication, on the highest levels of reliability.
On daily basis we operate a lot of services, we would like to spread our case, what things we did work, what doesn’t work, what drove our decisions. It is a opportunity to learn from others and make it feasible since we use a lot of technologies which are open source to everybody.
Eric Yoshimura is a Software Enginner at Nubank, currently living in São Paulo, Brazil. Nowadays working on a SRE team helping to build an awesome monitoring platform. In spare time, Eric likes to watch NHL games and learn about economics stuff.
Riad Vargas is a Software Engineer at Nubank, with more than 2 years of experience developing and maintaining microservices in the financial industry, focused in functional programming, transactional databases and DevOps stuff.