Account 로그인

I really dislike the term "legacy apps," especially when it is used by vendors. It feels like they are calling my baby (i.e. my app) with a bad name.  I love the quote by Martin Fowler, "All we are doing is writing tomorrow's legacy software today."  I am certainly not advocating to stick to your old applications forever.  All applications and systems have a life-cycle that goes from build to retire. Somewhere in between lies the stage of renewing the capabilities of the system, often named as modernization, enhancement, or rehab. This is the most important phase from the perspective of extending the life of the application and enhancing the long term value harvested from it.

In IT, each generational transition has called for modernizing and redesigning applications, business processes and IT infrastructure to exploit new technologies' capabilities and efficiencies. App modernization isn't carried out as a fashion statement or status symbol but for hard business reasons. Regardless of the era, the benefits of a periodic app overhaul include better performance, more features, greater usability, and higher reliability.

While the need to modernize is obvious, the path to modernization is unique to each business. And choosing the modernization approach to go with can be difficult because there are several options. The key point is to keep your applications and its direction in alignment with business strategy.  Sometimes, your business strategy might dictate that your legacy app requires a web presence; other times it may require just an interface with mobile-based applications. Other strategies may need the integration of new technologies like cloud deployment or API based integration.

Therefore, it is important to engage with business stakeholders and determine the gaps and shortfalls in existing apps. Here are some basic steps:

  1. Get the business involved, and keep the focus on customers experience (internal or external).
  2. Determine how users are accessing an application.
  3. Find out what kind of data users are seeking.

Today the technology shifts include cloud, big data, mobile and social. However, moving to the cloud, whether public or private, provides much greater impact for improving application scalability, deployment flexibility, responsiveness, and efficient use of IT resources.  Cloud services also provide greater flexibility and agility in application provisioning, whether for development, testing or production deployment. By using a consistent set of services and APIs, the cloud inserts a portable abstraction layer between applications and infrastructure that allows apps to be easily moved to new locations, cloned for testing or non-disruptively updated. Such ease of app modification, testing, and deployment also enable new processes such as agile development, DevOps, and continuous integration and delivery.

Moving apps to the cloud can happen in several ways: lift and shift, connect and extend, or rearchitect and rewrite.

Lift and Shift

Lifting and shifting modernizes how existing applications are packaged and deployed. By lifting and shifting, existing components are deployed on a modern deployment platform. A familiar example is application virtualization, where the application is packaged with the operating system and run as a virtual machine instead of on dedicated hardware.  Lifting and shifting is not intended to modernize the application architecture. Instead, it gets enterprises running on a modern deployment platform with a buffer of time to refactor the application later.

Lifting and shifting can be used to improve application performance by deploying on current and faster hardware. Applications become more flexible with simple deployment processes on modern platforms. Operational costs may be reduced too by retiring one-off servers and centralizing management.


Connect and Extend

Many firms create business value by delivering applications over new channels such as mobile and integrating with partner applications. Extending an application with new layers can help make existing application functionality accessible to new applications and conduits. This can also reduce development time and costs because the functionality does not have to be redeveloped. It is better to use complex and critical functionality where it exists, since it has been thoroughly proven over time.

As a software pattern, extending an application involves creating a new layer of application software that wraps the existing functionality and data with an interface that is accessible to new applications.  To avoid introducing excessive complexity, the layer usually has no extra business logic but simply serves as an adapter between the new and the old.


Rearchitect and Rewrite

Rewriting an application is different than creating new applications from scratch; it is the process of creating new functionality to replace and retire existing applications. As part of an overall modernization strategy, rewriting can follow lifting and shifting and augmenting with new layers, and it is the only way to update the application architecture for a fully modern stack.

Rewriting an existing application is usually the least appealing option of the three. It is likely expensive, time-consuming, and may take years for costs to offset. Unless the application delivers new business value, rewriting it is hard to justify to executives with limited budgets.

When rewriting is the only way to go,  migrate functionality off old applications gradually; augmenting with new layers can make that possible. It is also a good idea to delay rewriting because some functionality will become obsolete and will not need to be migrated at all.  Resist the temptation to simply migrate old behaviors, and instead plan and prioritize as if developing a new application. This will help create applications that are more flexible and accommodating to the changes that will come.

Whatever approach is adopted, you will also need to be partnered with a trusted vendor that offers you products and services you can depend on. Red Hat uses a multiphase, iterative process for application modernization. The main objective is to create a plan and execute it multiple times, where each iteration results in new, incremental value. This reduces the risk associated with ripping and replacing.

To see what Red hat offers for app modernization, visit

Red Hat logo LinkedInYouTubeFacebookTwitter


구매 정보


Red Hat 소개

Red Hat은 Linux, 클라우드, 컨테이너, 쿠버네티스 등을 포함한 글로벌 엔터프라이즈 오픈소스 솔루션 공급업체입니다. Red Hat은 코어 데이터센터에서 네트워크 엣지에 이르기까지 다양한 플랫폼과 환경에서 기업의 업무 편의성을 높여 주는 강화된 기능의 솔루션을 제공합니다.

Red Hat Shares 뉴스레터를 구독하세요

지금 신청하기

언어 선택

© 2022 Red Hat, Inc. Red Hat Summit