Every decision maker would love to see the organization stepping up the game and moving to modern client frameworks like Angular with modern server support like ASP.NET MVC and Spring on a native cloud, but there appear to be a lot of unknowns in such a decision. How then can we define a sustainable path for application modernization, preferably a simplified and automated one, which will result in well-architected web applications that can be deployed natively on cloud? How can this be achieved while keeping risk under control? Until recently, the only way for transforming desktop apps or apps that were “lifted & shifted” on IaaS into native PaaS cloud was a manual rewrite, and as such it was full of risks and often failed. However, as explained below things have changed, and new innovative solutions can now simplify and automate the process and dramatically reduce risk.
Unlike feeding, app modernization calls for a tool that can simplify and automate the complex process
PaaS opens the door for native cloud benefitsBefore outlining a solution that simplifies and automates the transformation from lift & shift and from client/server desktop to native cloud (PaaS) let’s get one thing out of the way. Choosing a target platform for the modernization process has many aspects, but at least the preferred type of cloud platform for highly transactional applications should be clear by now. As previous parts of this article series outline, preferring PaaS over IaaS allows leveraging the benefits of true cloud, modern web or mobile-based UI for digital transformation, as it enables application modernization into a native cloud platform that supports better scale economy and provides a modern user experience.
Take VB.NET or C# client/server desktop application for example. When modernized and deployed natively, it enables the modern user experience that frameworks such as Angular provide. On the other hand, choosing IaaS might mean keeping the old Visual Basic or C Sharp code and merely uploading the same desktop app to a virtual machine in the cloud with RDP-based user experience and all associated drawbacks. While there is no argument that PaaS opens the door for superior modern platforms like ASP.NET MVC, Angular and Spring, how can the organization avoid the pains of application rewrite and choose PaaS? Luckily enough there is a method that simplifies and automates the modernization process and keeps risks at bay.
Automated app transformationIf some decision makers in the organization still favor manual rewriting of legacy applications despite the clear statistics in this matter, letting them try it is all the convincing they will ever need (that and perhaps a few empty bottles of Valium). Even before realizing that planned time and cost get tripled and quadrupled rather quickly, simply trying to manually extract the business logic of those aging desktop apps will prove a gigantic and oftentimes impractical task. How can this process be automated then? Well, not only that such a solution exists, but it can actually handle app transformation in fixed time and cost. This is made possible thanks to an automatic analysis of the desktop app using a tool that is freely available. The IDE-based solution automatically extracts the business logic of the monolithic desktop app and based on that it reengineers the app into layers in a modular way that is fundamental for every well-architected web application, such as ASP.NET MVC (Model–View–Controller layers) for example. As explained in the previous post, this transformation allows the modernized application to support multi-user and multi-tenant so it could benefit from native cloud scalability as a result. This is in contrary to the lift and shift approach that uses the same stateful desktop app only in a cloud VM, and therefore cannot take full advantage of what the cloud has to offer.
While rearchitecting the monolithic desktop app into a modern architecture, the tool breaks the app into client modules and server modules in a way that enables good performance and efficient maintenance over cloud or web, and minimizes roundtrips and excessive use of internet protocols. During the rearchitecture process, the tool handles all wiring and communication between modules assigned to client-side and those assigned to server-side using proxies, resource management and so forth. Security and authentication over a web browser are also handled by the tool to ensure that the modernized version of the application would benefit from up-to-date protection. Throughout the automated rewriting process the tool also performs refactoring, standardizes repetitive code patterns and uses best practices of the target platform to meet the standards of a well-architected web application. This entire process is highly customizable and the architect that configures it can control many facets of the transformation, like the tradeoff between performance and security for example. This allows tailor-made application modernization that meets the technological and business requirements of the organization. At the end of this process, the aging monolithic client/server desktop app is fully transformed into a modern native cloud or web application, which is well architected for ideal utilization of cloud technology.
When it comes to large datasets of numerous app transformation scenarios, machine learning is the way to go
Reading and acquiring the functionality and structure of a legacy client/server desktop app and efficiently rewriting it for a modern platform is rather impractical to be done manually, and it is not by accident that almost all attempts to do so fail. Even for the tool described here that automates and simplifies the process it is a challenging task, which consumes a lot of computational resources. It is therefore not surprising that the tool uses tailored stochastic algorithms and machine learning techniques in order to resolve this mammoth computational challenge. It has been trained in massive scale over time to handle common scenarios of partitioning and refactoring code from one platform to another, and whenever an unfamiliar scenario appears it interacts with the user to resolve it and learns from that for future use.