Product Modernization is one of the aspects that technology companies have to consider from time to time as their offering loses competitiveness or enters into a maturity or decline stage in the Product life cycle. With newer frameworks and design patterns emerging, the frequency of modernizing the product has increased significantly.  Gone are those days when a company could claim that they have spent xx million revamping their technology stack and are set for the next 10 years. From our study of customers and industry trends, it has been seen that on an average, a major evaluation of the entire technology stack has to happen once every 3-5 years and minor changes to one or more individual components like the user interface, DB design, Framework design and performance to handle the new features and the volume of transactions that gets doubled in every 18-24 months. The big budget spending in spurts has given way to smaller and consistent IT budget outlays for Product Re-engineering and modernization.

Some of the tangible technology benefits that organizations stand to leverage out of Product Modernization are:-

  • Increased scalability supporting their growing volumes of users and/or transactions
  • Modular and flexible architecture to add more features without altering too much of the stable app
  • Support modern resources like browsers, plug-ins, mobile devices etc…
  • Adopt newer ideas, innovations through good UX design

How to Modernize?

Once the IT budget is available and the need for modernization is outlined, the next challenge confronted by most technology companies is how to plan a typical modernization exercise considering all factors. The big budget end-to-end modernization approach delivered in a waterfall model is almost obsolete now. Incremental modernization is the agile way which helps organizations to see output delivered at regular intervals and helps them manage their customer expectations better. Incremental modernization ensures modifications only on required areas and not on other areas.

We, at Aspire recommend incremental modernization approach at technology stack level to both product & enterprise organizations. Initially, the legacy system consists completely of legacy code. At the completion of each increment, the percentage of legacy code decreases while the percentage of modernized code increases. Eventually, the system is completely modernized. An incremental modernization effort strives to keep the system fully operational at all times while reducing the amount of rework and technical risk during modernization. In order to balance these conflicting requirements, a modernization effort needs to be carefully planned in any of the below mentioned ways:

Horizontal – Layer by Layer Approach

This approach is preferred where there is an integrated architecture and multiple features are bundled together in the same package.  The modernization happens in one tier at a time in an n-tier application, either starting from UI layer, moving to the service or middle tier and ending with the ORM and DB layers. It can also start from the DB layer and move to the UI layer.  If any of these layers do not require to be rewritten, the modernized code should be easily integrated with the rest of the application.

It is always recommended that the modernization across multiple layers happens in one direction. We could of course have a requirement wherein only the middle layer or business layer is to be modernized while the other layers are untouched.

Vertical- Feature by Feature Approach

In a highly modular architecture, if only few of the modules or features require to be rewritten, a vertical approach to modernization is followed. An authentication module or a payment module is rewritten using the best practices in REST in one release and subsequent features are modified in subsequent releases. All the layers affecting the feature are migrated to the new design.

Other Examples where vertical approach can be followed:-

  • Adding Solr capabilities to the search module
  • Integrating the Login screen with organization LDAP

Pros and Cons of Incremental Modernization

Pros

  • Huge investment costs upfront can be avoided
  • Faster time to market that allows end customers see the output early and their feedback can be incorporated
  • By opting to modernize one feature or one layer at a time, organizations can be agile responding to changes in technology, competitor responses etc.
  • With incremental modernization, a part of your code is modernized while another part is still legacy- maintenance is sometimes a challenge

Limitations

  • With incremental modernization, a part of your code is modernized while another part is still legacy- maintenance is sometimes a challenge

The pros far outweigh the limitations. Thus incremental modernization increases planning accuracy, as each increment provides historical data that can be used in cost estimation models. Now its upto the organizations to constantly evaluate their architecture and technology stack and look at the best frameworks and tools upgradation to keep their offering competitive to the changing Business demands.