As a lean, solutions-driven SaaS company, LeanIX provides innovative solutions to our many clients. We assist them in Mergers & Acquisitions, Cloud Transformation, setting up beneficial IoT architectures, preparing for and dealing with technology obsolescence, data compliance, application rationalization, and many other use cases.
One of our most significant use cases is helping enterprises transfer their code bases from monoliths to a more agile microservice architecture. This blog post will detail our very own journey from a monolith to microservices architecture.
Why start with a monolith?
As with many companies, LeanIX started with a single core code base. Almost all the successful microservice stories have begun with a monolith that got too big and was eventually broken up. Many companies naturally go for a monolith-first strategy – building a new application as a monolith initially, with the possibility to move to microservices when necessary. Even with the recent microservices hype, monoliths are not innately bad or incompetent.
Why the move to microservices?
We decided that it was time to move to microservices to separate functionalities. Microservices has enabled us to work better in teams, to reorganize our teams in a way that is very conducive to scaling. Before, there were many developers working all-hands-on deck on all projects. It was challenging to be up to date with any changes that were happening on a particular project. Now, each team has its own microservice or functionality to focus on, which enables them to work faster and better.
We’ve realized that smaller teams can push things faster than larger groups.
LeanIX uses Docker. Docker is a software technology providing containers, promoted by the company Docker, Inc. Docker provides an additional layer of abstraction and automation of operating-system-level virtualization. With Docker, we organize our microservices.
Each microservice has a single interface where a client can connect and get data from. We are currently using 20 containers. Our microservices are separated by three different layers: database/storage layer, frontend layer, and the business logic layer. Some of our microservices are bigger than others.
With this distinctive separation, you can deploy a functionality and update independently. Before, when we were operating a monolithic code base, whenever we added functionality to the application, it grew larger and larger. This presented us with multiple single points of failure and made the entire software more susceptible to crashes.
With all of the features separated, it isn’t necessary to deploy everything once you perform a simple update. You also don’t have to update dependencies when changing one aspect. From a developer’s point of view, it is easier to program our projects now. Deployments are smaller and more frequent, functionality has been distributed, and it is easier to scale.
From startup to scaleup
LeanIX has raised US 7.5 million to expand to the United States and has doubled the team. As our software enhances competitiveness and innovative capabilities, the microservice architecture model enables LeanIX to correctly organize our dev team as we make strides expand overseas.