I helped migrate a .NET monolith to microservices, processing 4-5 million daily operations for financial advisors. Using Kafka and Kubernetes, I streamlined complex commission rules. My 20+ years in procurement enabled me to align teams and deliver tough updates. Despite delays, my refactoring ensured cloud readiness.
The application was built using .NET and was running on a monolithic architecture on a Virtual Machine.
We decided to use Kafka as our message broker to decouple the services and allow for asynchronous communication between them.
This application retrieved 4 to 5 million of operations on a daily basis and to complete all calculations in a reasonable time for each associated office and financial advisors.
It was a critical system. since it was going to calculate the approved amounts of fees for each financial advisor and the office they belonged to.
The complex business rules required frequent updates, which I streamlined during the development.
From the technical side the challenge was to setup multiple consumers per pod on the Kubernetes cluster in order to accelerated calculations to under 20 minutes per working day.
I was involved in this project in the test phase, however the project itself was not ready and hasn’t been deployed and tested in any environment. So I did a lot of refactoring, tested each layer independently (repositories, services, controllers and worker) and what was initially an activity to last one or two sprints took almost 3 months to finish. The background service of the worker was not working as expected and I had to refactor the code to make it work.
My procurement experience was key to aligning teams, deliver bad news right after my involvement and present a strategy to continue the development of the project, modifying only the necessary parts of the code and not the entire application.
With this project I contributed enabling one more application to be removed from the Virtual Machines and moved to the Kubernetes cluster in the company Move to Cloud initiative.
In this project I also included some notes regarding Health Checks and how to implement them in a microservices architecture.
The project repository contains the code and the instructions to run the applications, a Web API and a Worker locally using Docker and Docker Compose, and also has a very detailed explanation of the tools used and the architecture of the application.