Legacy monolithic application – not a nightmare anymore!
This post is provided by App Dev Manager Srividya Annapantula who explores how emerging technical trends are changing the way we approach monolithic application.
Dealing with a legacy monolithic mission critical application with millions of lines of code is a nightmare. This is especially true if you are an ISV (Independent Software Vendor) with an application installed in various client environments, dealing with different hardware, and a configuration drifting from recommended settings you may not control. If you cannot mandate a specific version, you probably end up supporting multiple versions of the software.
As business and clients always demand new features, developers are focused on building them into legacy applications and the technical debt keeps growing. As a client’s user base continues to grow, that legacy application may not able to scale to meet those needs– resulting in poor performance and increased client frustration. Even thinking about a technology uplift can seem like a multi-year project which will never receive the approval or funding from upper management. Developers are frequently stuck developing on old code while there are so many new, cool technologies available to innovate with. If your organization is in this situation, it can be frustrating for developers and crush the motivation you need to build competitive solutions. The good news is that current technical trends can offer creative solutions to break out of the monolithic nightmare:
- Micro Services architecture – Completely rewriting a legacy application isn’t always an option. That requires a lot of time, money and effort and there are multiple risks involved in it. When you are developing new features, build them as micro services using Docker in Azure or Service Fabric that can be deployed on-prem or in Azure. These micro services will be stand-alone services but are integrated with your legacy application.
- Scaling globally – Businesses are expanding globally and your apps need to keep pace without investing in datacenters all around the world. Look into Azure’s Cosmos DB to offer a globally scalable and distributed database.
- Development lifecycle fundamentals – Whether your release cycle is once a week or once in 3 months, it is necessary to have the discipline to take care of the fundamentals of application development throughout the lifecycle. It is even more critical as you break out services from legacy applications and integrate micro services. Automated testing, automated deployment and continuous monitoring are key to the quality of the applications and to ensure you are not causing regressions, introducing new bugs, or affecting performance adversely with each release.
- Application Insights provides rich performance monitoring and alerting. Instrumentation is available for .NET developers and there are open source SDKs available for other programming languages.
- Check out how easy Visual Studio Team Services makes it to go from a user story to a release with Continuous Integration (CI)/Continuous Deployment (CD) pipelines, whether you are deploying to on-prem or cloud.
- Culture change – Start gaining trust of your clients with high performing services outside of their environment in a secure and trusted cloud – Azure. For many customers, it’s a opportunity to reduce overhead and focus resources on the business functions that define their market. Reducing overhead of managing hardware – though it might seem things are not in their control at first, quickly turn into a benefit – it is an industry and cultural shift!
Microsoft Premier Developer can help you with this transformational journey providing education and guidance on how this can be accomplished. Dealing with legacy monolithic application shouldn’t be a nightmare anymore!