GizmoxTS - Desktop App Modernization: Who’s Who in the Zoo Part Three: How to Simplify and automate application transformation

Desktop App Modernization: Who’s Who in the Zoo Part Three: How to Simplify and automate application transformation

Tuesday, 08 May 2018 12:20
Upon reading part one and part two of this series it gets clearer that halfway cloud transformation, namely lift & Shift on IaaS cloud, is not a ‘one size fits all’ kind of solution. Disillusionment from the initial hype is becoming more and more widespread, as client/server desktop applications that were "lifted & shifted" in a hurry at the time (like in cases of on-prem datacenter shutdown) now fail to deliver the desired UX in many cases, particularly with highly transactional applications. Such applications are usually deployed on top of virtualization layers and use RDPs for remote UI, which often makes them too sluggish to meet daily needs of handling high transaction rates. As a consequence, mere lift & shift onto an IaaS cloud of desktop applications or server-centric web applications cannot always deliver on the cloud promise. Be it Visual Basic, PowerBuilder Classic ASP or even server-centric ASP.NET or J2EE or any other aging framework, or be it the best practices of the nineties that simply don’t deploy well on new platforms, is it inevitable to keep dragging the challenges caused by those old clunkers or can the organization make the strategic move to a native PaaS cloud experience?

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.

1.jpg               

Unlike feeding, app modernization calls for a tool that can simplify and automate the complex process

PaaS opens the door for native cloud benefits

Before 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 transformation

If 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.

2.jpg

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.