This week’s podcast features a chat with Vitor Olivier. Olivier is a partner at NuBank (a technology-centric bank in Brazil). This podcast hits on topics from several of Nubank’s recent QCon talks and includes things like: Nubank’s stack, functional programming, event sourcing, defining service boundaries, recommendations on reasoning about services, tips (or tweaks) on the second iteration of their initial architecture and more.
Key Takeaways
- Property-based testing and Schemas (or Clojure.Spec) are complementary.
- Clojure’s functional nature and Datomic’s features are a match for Nubank’s requirements.
- A (micro)service needs to be able to create the full representation of the core feature it’s handling.
- GraphQL is useful to abstract away the distributed system complexity from the mobile (or frontend) developers.
- NuBank’s uses a combination of monitoring and sanity checks in real time at various levels to keep systems consistent. Once an invariant is broken, the system will try to fix it automatically.
- Event sourcing architecture offers time-series debugging and improves confidence in the system.
Subscribe on:
Show Notes
- 1:24 - What is Nubank?
- 2:32 - Compete by continuously improving the product.
- 4:15 - Functional programming a good fit for banking logic.
- 5:30 - Datomic as persistence layer.
- 8:03 - Consistency considerations.
- 9:17 - Accounting view of the world. Maintaining consistency between Nubank’s microservices through monitoring and sanity checks in real time at various levels.
- 14:30 - Functions get applied to incoming events, stored in temporary version of database; perform sanity checks. If sanity checks pass, the changes are committed, if not, check which invariants are broken and try to fix automatically.
- 16:12 - Property-based (or generative) testing to find corner cases. Schemas exist for various types and can be used to generate tests.
- 19:12 - Why use Clojure? Because of Datomic. Clojure makes imperative code look bad; it's useful to stick to functional practices.
- 21:08 - The Nubank team.
- 25:14 - Lessons learned building microservices, both building services that did either too much or services that could have been combined into one.
- 27:18 - How to choose boundaries for microservices. A service needs to be able to create the full representation of the core feature it’s handling.
- 34:39 - How Nubank uses GraphQL. Abstracts away the distributed system complexity from the mobile developers.
Resources
Level-up on the skills most in-demand in 2021. Attend QCon Plus (May 17-28).
Validate your software roadmap by learning the trends, best practices and solutions applied by the world's most innovative software practitioners. If you are a senior software engineer, architect, or team lead and want to take your technical learning and personal development to a whole new level this year, join us at QCon Plus this May 17-28.
Community comments