Understanding how applications evolve is an important budget, resource, and lifecycle exercise. Based on the information gathered during the cataloging exercise, IT and business owners with input from operators and users should evaluate how best to handle the future of these workloads and applications.
There are a few directions to consider. Following are a few regularly encountered macro-level actions that have come up in customer conversations.
- Rehosting: this is a simple lift and shift of an application from its existing infrastructure to a new platform–no upgrades or changes to the application. It may be virtualized on the new platform, but no major changes are made on the storage design (simple migration). This is pursued to lower costs, get applications off obsolete hardware, or to potentially handle data growth or performance needs.
- Replatforming: this involves upgrading the application to the latest versions or enhancing functionality before shifting it from its existing infrastructure to a new platform. This makes up the bulk of application modernization projects, where some tinkering is required to improve the outcome, extend the application’s life and utility, handle growth (capacity and performance), and to potentially lower costs.
- Rewriting: this is the most involved of the three and is mostly used for new workloads or when the older workload is well past its expiry date and replatforming simply won’t do. This exercise may also be relevant when modernizing an application to use cloud services and functions or for concepts like stream processing.
- Retire: this is the best action for an application if it is known that the ongoing cost is much greater than the value derived, or if it is obsolete and a reasonable alternative or replacement is available.
Lastly, acknowledge that applications need to be periodically refreshed, maintained and updated, aside from the above mentioned list of actions. These updates range from minor functional changes to the software, to scaling performance and capacity, to improving availability and service levels. These should also be considered as a function of the factors below. We’ll discuss this in future blogs.
Deciding whether to rehost, replatform, rewrite, retire, or simply maintain an application should be driven by business, technical, and economic factors. In addition to the details captured in the cataloging exercise, consider these factors as well:
Business reasons for change: Evolving business models and a desire to invest in their core business, including transformation (moving away from areas that are not strategic). Example: Most organizations no longer want to run expense management software and instead turn to SaaS offers from vendors such as Concur and Expensify.
On the flip side, organizations are doubling down in strategic, transformational areas and investing in applications that will help them transform and grow. Staying with the retail theme from the previous blog, retailers can differentiate themselves with a connected, hyper-personalized retail experience—building loyalty and being responsive to trends. This requires collecting and mining of massive amounts of industry, behavioral, and other data and leveraging the output in marketing campaigns. This may very well be a rewriting exercise using new technologies, facilitating agile development of recommendation and targeting campaigns across multiple channels.
Technical ability to change: Can an application be left as is, or should it be upgraded or rewritten to take advantage of cloud native constructs like DBaaS/RDS, NoSQL, object storage, containers, and microservices, or should IT leverage third-party services using APIs? A word of caution— don’t get swept up in the trend du jour. For example: not all re-architecture requires a shift to microservices or leveraging NoSQL data stores. Carefully evaluate the technical merits, including future support state, the organization’s skill set, appetite for risk, and the rationale for change.
For some workloads, it may not be a question of whether, but when, it needs to change. In those cases, include investments in your roadmap around staff hiring and training, evaluating vendors for infrastructure and software, as well as for consulting, and creating standardized application and infrastructure building blocks. For example: In the banking sector, organizations should invest in creating a standardized data services platform for persistent data storage (including DBaaS, NoSQL, objects, and files). As applications across different divisions are being replatformed or rewritten they can use the data services platform in the same way they would use cloud services.
Economics of change: Applications should serve a purpose and deliver value. Economically evaluate any investment in application maintenance, rehosting, replatforming, or rewriting. This can be expressed as a simple ratio comparing return or gains to costs. Factors to consider include:
- Cost savings (compare total costs of the before and after scenarios; include placeholders for external talent and other costs).
- Business opportunities enabled (new revenue streams; don’t forget to factor in all costs — include factors such as reducing time to market).
- Productivity gains (improvements in personnel or systems outputs; don’t duplicate the business opportunities benefits).
- Cost of capital and other investments; also factor in time and other resources such as project management and end-user’s commitments.
Macro factors: consider other investments happening simultaneously such as higher level strategic initiatives and management support, all of which can play a role in the planning and roadmap exercises.