Table of contents
Many organizations today are struggling to get the full value of migrating their enterprise systems to the cloud. The reason, according to consulting firm McKinsey & Company, is that companies tend to “fall into the trap of confusing simply moving IT systems to the cloud with the transformational strategy needed to get the full value of the cloud.”1 In essence, organizations are simply outsourcing their data centers, which prevents them from maximizing the benefits of the cloud.
That’s where the concept of modernization comes in. Moving to the cloud is only one—albeit essential—component of modernizing your infrastructure, applications, and approach to software development.
Why move to the cloud in the first place?
Among the top reasons are increased business agility and speed—and the competitive advantage that offers. Another compelling driver for many companies is the increased productivity of their workforce, while a number of organizations shift to the cloud to innovate and transform their business with modern technologies, reimagining their applications within a modern framework.
That’s why simply getting to the cloud should never be thought of as the finish line for your modernization efforts. Creating a new application in Amazon Web Services (AWS) or “lifting and shifting” legacy applications to AWS doesn’t automatically result in applications that can take full advantage of the elasticity, resiliency, ease of deployment and management, and flexibility that AWS offers. Nor does it automatically modernize your culture and processes to enable high-performing software development.
Modernization means taking your application environment in the form that it is today (most likely legacy and monolithic) and transforming it into something that is more agile, elastic, and highly available. In doing so, you can transform your business into a modern enterprise. However, modernization is not easy or trivial, nor does it happen overnight.
This ebook introduces a pragmatic and continuous approach to application modernization as part of a greater modernization effort on the AWS platform. You’ll learn about the choices, trade-offs, and benefits of various approaches to continuously modernizing your applications, and how you can achieve your goals for transformative IT and business outcomes.
1. “Cloud adoption to accelerate IT modernization,” McKinsey, April 2018
73% of organizations have at least one application or a portion of their computing infrastructure in the cloud.
Source: “2018 Cloud Computing Survey,” IDC, August 2018
For the vast majority of companies that were not “born” digital—and therefore not primed to take advantage of all the latest cloud technologies—there’s little choice about whether to modernize or not. Remaining stuck in the past in your infrastructure, technology, applications, and approach to software development means ceding the race to more agile, responsive, and innovative competitors. Large legacy businesses today need to evolve quickly if they are going to remain competitive and relevant.
Rather than approaching modernization as simply a way to survive in your industry, it’s more productive to view it as the key way to achieve business agility in the modern era. Modernization and transformation power your company’s ability to deliver measurable and sustainable outcomes such as:
- Improving customer experience and loyalty with a differentiated customer experience
- Disrupting the industry and the competition
- Introducing innovation at a rapid pace
- Optimizing the cost, speed to market, and volume of new digital experiences
- Supporting mandated changes such as regulatory compliance in a timely way
The question is not whether to modernize at all, but what and how to modernize. Should you move your core applications to AWS? Which business areas or applications will deliver the largest impact or highest value for the business when modernized? Are there applications that should not be modernized because they have reached the end of their useful life? What are best practices for breaking monoliths apart?
To answer these “what” and “how” questions about your legacy applications, you need two fundamental things: an understanding of your modernization options and deep insight into your applications. Read on for a strategy that incorporates both of these must-haves.
“Legacy systems are often seen as holding back the business initiatives that rely on them. When a tipping point is reached … it’s time to look to application modernization to help remove the obstacles.”
Source: “7 Options to Modernize Legacy Systems,” Smarter With Gartner, June 2018
Before diving into the details of application modernization, it’s helpful to understand how companies are adopting the cloud today. Based on its experience with millions of business customers, AWS sees organizations moving to the cloud in stages:
- Project phase: During this initial phase, companies are experimenting with new projects and running workloads on AWS to gauge and evaluate the cloud. This is generally done on a project-by-project basis and consists of proof-of-concept workloads.
- Foundation phase: In the second phase, organizations begin to see the benefits of the cloud as they start creating the foundation for cloud success. This includes creating landing zones or core constructs such as network connectivity, identity management, and other essential components.
- Migration phase: In the third phase, companies begin scaling adoption and growing their cloud footprint. To prevent getting stalled in this phase, companies should develop a clear application modernization strategy, using an informed approach to identify which applications will be migrated and how they will be modernized.
- Optimization phase: In the fourth and final phase, companies begin to optimize. This is where organizations begin taking full advantage of the cloud and accelerate time-to-market by employing serverless models, microservices, containerization, and other cloud native technologies and architectures.
Modernization and DevOps: Better Together
Application modernization enables DevOps success and vice versa. As legacy applications and their environments are modernized, DevOps teams can spend more time on developing and delivering new features and less on overcoming friction in the software lifecycle of existing systems.
Find out more about doing DevOps right:
Implementing Continuous Application Modernization
To deliver better quality software faster, and with greater frequency that enables the business to stay agile and respond rapidly to changes in the market, IT organizations must transform their culture, tools, and processes. The DevOps movement was born from this need, and includes core tenets such as collaboration, transparency, automation, and continuous delivery of software.
However, for the majority of businesses, legacy applications are still an essential part of the company’s value chain, providing core capabilities and data for the business. The architecture, infrastructure, and technology used by legacy applications do not easily lend themselves to modern software development, limiting the ability of your IT teams to deliver software with the speed and stability the business requires.
The answer is to incrementally, but continuously, modernize your legacy applications. By gradually transforming them, you can reduce technical debt, improve the value and performance of each application to the business, and support the shift to DevOps in your IT organization.
Here’s a pragmatic strategy for continuous application modernization:
- Step 1: Set goals for the modernization.
- Step 2: Make sure you thoroughly understand each of your applications.
- Step 3: Choose the optimal modernization approach for each application.
- Step 4: Monitor and measure changes against your goals before, during, and after modernization.
- Step 5: Start over with step one.
Before we discuss each step in more detail, there’s a critical success factor you need to keep in mind: your data. Not just any data, but contextual information about your infrastructure and applications and their impact on your customers and your business. Without this data, you’re essentially going into the modernization process blind, with limited ability to minimize risk; avoid missteps; and accurately assess, predict, and confirm improvements.
“Whether you’re looking to the cloud to help you build that next amazing customer experience, or to rehost a large part of your existing virtualized data center, or to refactor, rethink, and reimagine your most important core business applications, now is the time to get started.”
Source: “Predictions 2019 update: Cloud computing soars to new heights,” Dave Bartoletti, Forrester Research, published in ZDNet, May 2019
Step One: Define/Refine Your Goals for Modernization
How will you measure the success of your modernization efforts? Simply moving a certain percentage of applications to AWS is not a good measure of success in and of itself. Instead, it’s better to link modernization efforts to measurable business and IT goals, such as greater agility and faster time-to-market with new capabilities. This will allow you to show incremental progress and success as you continuously modernize your applications.
One way to get started is to identify the most business-critical applications and explore how they would benefit from better performance, scalability, and reliability by leveraging the economies of scale that AWS delivers. For instance, depending on your industry, target market, and other variables, you can identify how modernizing critical applications could impact areas such as profitability, revenue, churn, market share, differentiated customer experience, and more.
Once you define how your current applications impact business success, then you can link modernization goals and priorities back to business outcomes. For example, modernizing a billing application so that it can integrate with a new e-commerce system could drive greater customer satisfaction and reduce customer service costs as fewer customers need to contact the business about problems with their bills.
Step Two: Understand Your Applications
The next step in the strategy is to get a clear understanding of each application and its interdependencies. To do this, take a baseline measurement that helps you figure out how each application currently performs. This gives you the foundation for making data-driven decisions as you create your initial roadmap for modernization. With this understanding, you can identify and prioritize applications to modernize and determine how you want to approach modernizing each application.
To achieve this, you need a monitoring and analytics platform that delivers an in-depth, unified view of your applications and infrastructure and supports both pre- and post-modernization environments. Otherwise, you’ll be relying on guesswork, anecdotes, and “gut feelings” to understand how your application is functioning now and whether or not modernization improves it.
Once you have your monitoring in place, begin capturing data about your applications that will help you understand the following characteristics for each application:
- How are resources being used?
- Which resources are being used by this application?
- What chronic resource issues exist (e.g., over- or underutilization)?
Application Quality and Performance
- How is the application performing? What is normal, baseline performance?
- What errors does the application have currently?
- What are the application dependencies?
- How is the end user experience?
- Where is your application spending most of its time?
Impact on the Business
- How does performance and reliability impact revenue?
- How much time do users spend on the application?
- How does the application impact conversion rates or order value?
- Do errors/downtime impact customer service costs?
With an objective and holistic view of the application—including its running state, processes, infrastructure, business KPIs, codebase, and issues—you’ll now be able to make decisions about how best to modernize the application.
Step Three: Choose a Modernization Approach
Now it’s time to use all the data you’ve gathered to make an informed decision about how to begin modernizing or further modernize each application. Although there are six industry-recognized approaches that you can consider, only the last three—rehost, replatform, and refactor—involve modernizing the application.
Keep in mind that with an iterative modernization strategy, you can start with one approach, reap some initial benefits, and then continue to modernize through other approaches to obtain more benefits. For example, you could rehost an application with no code changes, then replatform it to swap out the current database for a cloud-based database service. With a different, higher-priority application, you could decide to go straight to refactoring it to take advantage of additional cloud technologies.
Step Four: Observe and Optimize
It should now be clear that you need to fully understand how your applications perform before you can decide how and whether to modernize them. The baseline picture of application performance gives you data not only to inform your decisions but to serve as a comparison during and after your modernization effort. It also helps you identify any issues that you need to address before you begin the modernization.
After the initial modernization iteration is complete, you can demonstrate success by comparing your previous baseline against current performance, customer experience, and business outcome data. Ideally, you’ll see improvements and identify areas where further modernization and optimization can help.
Sample KPIs to Track Before / During / After Modernization
- CPU percentage
- Memory used percentage
- Average load
Application Quality and Performance
- Availability percentage
- Page load time
- Perceived response times of key transactions
- Application response time
- Database response time
- Application error rates
Business and IT Impact
- Cost to operate
- Lead time for changes
- Mean time to resolution
- Conversion rates
“Good monitoring has been a staple of high-performing teams. In previous years, we found that proactively monitoring applications and infrastructure, and using this information to make business decisions, was strongly related to software delivery performance.
[In 2018, we] found that a comprehensive monitoring and observability solution positively contributes to continuous delivery and that those who have one were 1.3 times more likely to be in the elite-performing group.”
Source: “2018 Accelerate: State of DevOps, Strategies for a New Economy,” DevOps Research and Assessment (DORA), 2018
Step Five: Repeat
This last step is neither an actual step nor the last activity of the modernization process; rather, it’s a reminder that modernization is continuous, and that even as you gradually modernize your applications, there will always be new technologies and capabilities to incorporate and support.
However, with each cycle of modernization, your organization is making significant strides in enabling and fostering digital transformation and the culture, process, and technology changes that must happen as part of it.
New Relic can support you before, during, and after each modernization iteration, providing data-driven insights to help you make smart business decisions when considering which applications to modernize and the right approach to take for each. Using New Relic throughout your modernization efforts helps you reduce risk, set priorities, and demonstrate your impact at every step.
To learn more about modernization and how to monitor your software, attend an AWS Modernization Workshop.
Additional information can be found in the following tutorials:
- Measure Twice, Cut Once: Cloud Migration Measurement and Acceptance Testing with New Relic
- Guide to Planning Your Cloud Adoption Strategy
- Guide to Optimizing Your Cloud Native Environment
Special thanks to Jay Year and Carmen Puccio from Amazon Web Services for their contributions to this ebook.