At some point, a monolith starts working against you.

In my case, Finovara was a single Spring Boot application handling everything (authentication, transactions, limits, piggy banks, notifications, activity logs, currency conversion)

The bigger it got, the harder it was to change anything without worrying about something else breaking.

So I broke it apart.

This post is about the first three pieces I extracted: the API Gateway, the activity-log-backend, and a shared module called contracts-backend.