We’ve enabled digital transformation and ensured business continuity for our client by implementing an efficient code refactoring strategy
As our client, a European lending marketplace, was experiencing significant growth in demand for their loan brokering solution, they needed to modernize their legacy application to meet the growing business needs and push their product to a new level. Their goal was to refactor the system’s architecture from monolith to microservices without affecting the existing functionality and business logic to ensure an uninterrupted customer service flow.
As a proven FinTech provider, Intellias was already helping this client with building and improving their solution. Naturally, they turned to Intellias for refactoring a monolith to microservices. Modernizing legacy systems and infrastructures for banks, financial institutions, and lending companies has long been one of our core competencies at Intellias. Our client’s need for code refactoring and new feature development has launched a new phase of cooperation between our two companies.
To implement the monolith to microservices migration, we set up two flexible, cross-functional development teams proficient in refactoring techniques in Agile and working on two separate streams under the supervision of our client’s CTO and chief architect. While our technology team was responsible for refactoring the legacy monolithic application, our business team was building new features in microservices and performing code refactoring according to business needs.
In the course of our collaboration, Intellias engineers have become an integral part of our client’s organization, making valuable contributions to many aspects of product development and providing on-demand expert consulting. We have also built an efficient decision-making process where all stakeholders (tech leads, product owners, delivery and product managers, etc.) interact directly with each other and have a clear understanding of where the project is heading, what the next steps in refactoring monolith to microservices are, and how the project goals will be achieved.
Within the past three years, our engineering team led by an Intellias delivery manager came up with a number of product and process improvements, including test automation, implementation of CI/CD practices at the organization-wide level, and development of deliverable strategies for the whole software development lifecycle.
Another notable improvement suggested and implemented by our team was a new two-step refactoring strategy that enabled painless, risk-free, and fast platform migration. Our first step was to stop adding any functionality to the monolith and develop all new features in microservices. Secondly, we started to gradually extract services from the monolith and migrate all business-critical domains to microservices with every new feature request.
To efficiently break monolith to microservices, we identified vital areas of code that met 90% to 99% of business needs, verified the relevance of certain features for business processes, and prioritized the functionality to be built. By monitoring the impact of the code in production on our client’s business and using advanced refactoring techniques in Java, one by one we decoupled connections and dependencies in the system and managed to implement new functionality as services in the new architecture. We also migrated business-related data from the old database of the monolith to microservices databases.
From the technical perspective, we applied blue-green deployment and shadow testing in three phases:
- Backing up all data and requests for both the monolithic app and microservices
- Switching read and write operations between the monolithic app and microservices, tracking changes, and fixing bugs
- Cleaning up unnecessary code from the monolithic app
This technique of transforming a monolithic application into microservices allowed our team to single out vital functionality, test it against business needs and requirements, smoothly separate mission-critical business domains, and place them into microservices. The combination of tight, two-way communication between the teams, timely feedback from the client, and well-coordinated work contributed to the overall success of the project.
Our collaboration has greatly accelerated digital modernization for our client’s company, which was their most pressing need as a result of rapid business expansion. We helped our client move their entire business domain from a monolith to microservices in 1.5 years, resulting in a stable, maintainable, and scalable product. We also managed to keep the system 100% operational throughout the whole refactoring process, preserving business continuity and achieving the ROI cycle in one year.
Together with our client’s product teams, we worked out the right operational workflows. This resulted in an optimized, transparent, and predictable development process that includes:
- An efficient planning strategy with an 80/20 balance between planned and unplanned project activities
- An effective and more balanced allocation of rework tasks per sprint (from 25% to 10%)
- A daily release cycle and timely product shipments due to the CI/CD model
- Automation of all QA processes
The benefits our client received from partnering with Intellias go way beyond the initial goal to refactor monolithic to microservices architecture:
- Our full-fledged development team with tech and engineering leads on our side acts as a functional unit of our client’s corporate ecosystem.
- Our end-to-end services span every step from ideation, requirements clarification, and planning to post-production monitoring and on-call support.
- We ensured visibility into the system’s performance, speed, load capacity, stability, optimization, data normalization, etc.
- Intellias experts from Centers of Excellence provide our client with expertise in DevOps, test automation, business analysis, and other domains.
Read the original article here.