These applications are often old: in some cases even one or two decades. Thanks to their age, they contain layers and layers of useful features and business logic which have been discovered during a long strategic journey and dialogue between the makers of the application and the users. This is what gives rise to the huge value of such applications, together with an established user base.
The legacy aspect though is a bit problematic. Legacy often means outdated tools built for the developers and infrastructures of many years ago. Legacy also means outdated architectures, leading to complex governance when it comes to backups, data synchronization, multiple devices, responsiveness, and more.
One of the clearest symptoms of such an application' legacy is that the time it takes to fix issues or build new functionality tends to grow faster than the application itself. This leads to complaints from customers, and the risk of disruption from new players unencumbered with such legacy. If those new players start adding the missing functionality that end customers desire, well, that can lead to loss of customers and undermine the value of the app.
The cherry on top is that it's getting harder and harder to find good developers willing and able to work on an old application, leading to grounded concerns for the long-term viability of the enterprise.
A rebuild might sound like an attractive idea, but at the same time it's very risky. Standing still for months while spending a huge amount of money with no guarantee of success and with competitors that keep on moving forward in the meanwhile is not an exciting perspective. And yet doing nothing is not viable either and the problem will not go away by itself.
Fortunately, there is a pragmatic and effective solution! The hybrid approach that integrates continuous development with strategic refactoring. While building new functionality, slowly but surely we can introduce modularization into the application and new technical patterns that make it possible to migrate data and business logic to the cloud, piece by piece, into a more modern framework such as .NET (Core) hosted on Linux via Docker containers and a proper CI/CD pipeline. As more of the data and business logic are served from the cloud with an API such as OpenAPI or Graph/OData, pieces of the existing UX as well as new additions to the UI can be moved to modern frontend technologies such as TypeScript and React.
The old on-premise app will become thinner and thinner, without any "big bangs". Users will experience no disruptions at all, while thanks to the migration to the cloud more and more of the functionality will increase in quality and will be delivered faster. Releases of a cloud application can be very frequent, leading to a very effective build-measure-learn cycle. There are no painful local deployments with complex procedures involving remote installers, screen sharing, or database migrations. As the data comes from a cloud API, synchronization issues will eventually just cease to exist. Similarly, as a reactive and progressive TypeScript and React web app starts taking over user interactions, users will notice a smoother, more beautiful, mobile-friendly (or even mobile-first) always-on experience. And security can be managed centrally, leading to better control over who access what data. In short, the cloud will lead to better governance, and higher quality across all possible parameters.
And that's not all! If all data is exposed through a (secure!!!) API, then it will be possible to connect the application to a richer ecosystem. For example, we could use hyper-efficient no-code tools such as Power Apps in order to build backoffice applications for support employees, or we could read data via PowerQuery in order to build beautiful dashboards in Excel or, when even more sophistication is needed, via PowerBI.
In short, all of the advantages of a modern web application will reveal themselves gradually, without the hassle of a rebuild. The end result? Happier customers, no disruptions, a much faster development cycle, and all of the UX advantages of a modern web app such as instant deployments, easier governance, and more.
Do you have a legacy .NET on-premise application with a lot of valuable functionality and a large user base, and do you want to try the hybrid approach to modernize it to the cloud without disruption? Get in touch with us and we will be happy to help: firstname.lastname@example.org or 010 - 22 10 190.
Schrijf je in voor onze nieuwsbrief en laat ons jouw gids zijn in een complexe digitale wereld.