Preparing for Application Modernization

Application modernization is the process of upgrading legacy systems to modern technology.

When considering modernization, there are three basic categories of strategies: rehosting, refactoring, and replatforming. However, selecting a strategy is just the beginning of the journey toward application modernization. To ensure the success of a modernization effort, it’s essential to consider multiple factors such as business objectives, application/system design, operations, regulatory compliance, and developer velocity. In this article, we’ll explore each of these considerations in detail, along with examples of how they can impact the success of an application modernization effort.

Rehosting

Rehosting involves moving an existing application from its current environment to a newer infrastructure. This strategy attempts to implement this move with as little change to the code as possible. This is usually the least disruptive strategy but is limited in the improvements that can be realized.

Refactoring

Refactoring modifies significant portions of the system’s design to maximize its efficiency. This strategy entails rewriting code or redesigning the application, sometimes in its entirety.

Replatforming

Replatforming sits right between Rehosting and Refactoring. It does not attempt to refactor major portions of the system. Instead, it aims at smaller changes that enable the system to leverage cloud capabilities for core components.

Considerations

If you’re trying to select a modernization strategy, or if you’ve already selected a strategy and are preparing to start, here are some suggestions to consider that may be helpful.

Business Objectives

Modernization should enable your business to reach its goals. When selecting a strategy, it’s important to clarify your objectives. Determine the criteria you’ll use to measure the success of the modernization effort and document any assumptions you have regarding modernization.

Imagine

Company A has a goal to reduce its IT operating expenses by 10%. Their system engineers currently spend a significant amount of their time patching and maintaining the company’s on-prem server cluster.

Company B has a goal to increase online sales by 25% and needs to ensure its online store can handle the increased traffic without impacting the customer experience.

These companies have very different objectives, and a strategy that works for one may work against the other.

Questions to consider regarding business objectives
  • What are your business’ current goals?
  • Which of these goals is motivating your consideration of application modernization?
  • What issues are you looking to address by modernizing?
  • What are the specific outcomes you want to achieve with modernization?

Application / System Design

Most modernization projects require a certain amount of modification to the design of the system. Whether it’s a full refactoring effort or the replatforming of one system component, modifications to the system should focus on areas of improvement that will deliver the most value.

Imagine

Company A and Company B both have on-prem applications with growing utilization. They are experiencing database latency and are running low on storage space.

Company A has heard that the cloud provides practically unlimited storage and scalability and decides to rehost their entire application in the cloud only to realize they are having to continually increase the size of their VM, which is causing budget overrun.

Company B chooses a replatforming strategy, moving just their storage and data to managed cloud services that autoscale. By focusing on what will provide the most value, they are able to benefit from the capabilities of the cloud while managing cost and prolonging the lifespan of the infrastructure they’ve already invested in.

Questions to consider regarding system design
  • What are the pain points with the current application?
  • Are you predicting usage to increase in the near future? By how much?
  • If a major refactoring is warranted, which core components will need to scale the most?
  • Can poorly performing dependencies be improved, minimized, or avoided?
  • What impact will modernization have on system security?

Operations

A modernization strategy can have a profound impact on operations and release management. Taking current operations into consideration and examining how they may change allows you to make appropriate preparations.

Imagine

A software team at Company A is replatforming the database for an on-prem application and is moving it to a new cloud provider account managed by the marketing department. The company has formal change management and release management processes managed by IT.

The team is ready to deploy its new architecture, but the change and release management processes have not been updated, causing a delay in the project.

Taking operations into account during the preparation phase can help prevent unnecessary delays.

Questions to consider regarding system operations
  • Does your change management process need to be modified to account for details that will change during modernization?
  • How will modernization affect release agility and frequency for the application?
  • Do support, systems, and release engineers have the necessary access to modernized system components?
  • Under the system’s current design, can components/modules of the application be deployed independently? If not, how will modernization affect collaboration during releases?

Regulatory

Regulated environments can put tight constraints on system design and data flow. Considering regulatory guidelines will help you avoid selecting non-compliant service configurations and ensure the design of your modernized system maintains the required compliance.

Imagine

Company A is a healthcare company with an on-prem application that they want to move to the cloud. HIPAA regulations put constraints on where and how Protected Health Information (PHI) is handled and by whom. Additional internal policies can also limit which systems PHI data flows through.

These regulations put strict demands on system design that need to be considered early in a modernization effort.

Questions to consider regarding regulatory compliance
  • What kind of compliance regulations need to be kept in mind?
  • How will modernization affect data-flow, storage, and access?
  • Are the target environments compliant with existing regulations?

Developer Velocity

The speed at which a development team delivers software is directly related to the capabilities of the team and their familiarity with the environment. Selecting a strategy that your current team cannot support results in lower velocity and skill gaps. A clear understanding of your team’s current capabilities can inform which strategy is selected, how the strategy is implemented, or what steps the company needs to take to support the modernized system.

Imagine

Company A met with a consulting firm and determined that to meet their business objectives they would need to refactor a core business application. Using a design that leverages the scalability, resilience, durability, and performance of the cloud will enable them to scale and reach their current goals.

However, only a couple of people on their development team have experience developing, deploying, or operating cloud-native applications.

The company realizes they need to provide training to its team and hire a couple of additional people in order to be prepared to support the system once it is handed off.

Questions to consider regarding developer velocity
  • What kind of in-house capabilities does your company have?
  • What’s the current developer experience for those maintaining the system?
  • Do you have a release cadence that needs to be upheld?
  • Do you offer SLAs that may be impacted by lower developer velocity?

Costs & Workload Efficiency

Modernization doesn’t necessarily result in lower invoices but should result in greater efficiency. Consider your current visibility into the cost & efficiency of your workload. If you have difficulty measuring and tracking efficiency in your current system, consider how to improve that visibility when you modernize so that you’re able to quantify the value of the improvements.

Imagine

Company A refactored a customer-facing application and was initially surprised when the monthly invoice from the cloud provider showed no decrease in the cost of services.

Fortunately, the development team followed best practices for both observability and cost management. They were able to show that though the invoice was the same, they were handling 30% more customers with less strain on the system, and conversions were up 10%.

Questions to consider regarding cost and efficiency
  • How is cost & efficiency managed?
  • Is application performance monitored?
  • Have performance & service level objectives been defined for the application?
  • Is resource utilization tracked and measured?

This article was originally published on technossus.com


Gene Rivera Avatar