Large enterprises continue to operate with legacy systems, most of them built on client-server based architectures over the last 30 years. Some of these applications are enormous in size, excessively complex, highly coupled and monolithic.
As shown in the chart, based on interviews with more than 1,550 executives, the CGI Client Global Insights reveals that our clients view modernizing their application portfolios as a high priority.
CGI Client Global Insights: Top Business Priorities
In this blog, co-authored with Dominik Neumann, we share a two-pronged approach for accomplishing this daunting objective:
- Replatform: migrating existing applications from bare-metal or virtual machines to containerized target environments on a cloud platform
- Rebuild: gradually modernizing huge monolithic applications by extracting functionalities (in parts) and rebuilding them as cloud-native services
And, as always, when considering migration to the cloud, an assessment is required to balance cloud benefits with an organization’s obligations to protect critical data, ensure data privacy, comply with regulation and mitigate commercial risk.
Rebuilding and replatforming legacy applications
In replatforming, often the first approach is to migrate a large number of applications to a container-based cloud platform. Here, the goal is not necessarily to completely rebuild applications. Instead, the applications are only altered to the extent required to ensure they are cloud-capable—and cloud secure—and will run in the target environment.
Before starting on such a journey, an assessment is needed of your cloud and business strategies, including understanding the data protection required, to make sure you migrate the right applications for the right reasons. This requires an understanding of your business and cloud strategy, your current data center setup, the level of maturity of your organization’s cloud-native development practices, potential cybersecurity and other risks, and various other factors.
A best practices approach will include a continual assessment stream and a continual replatforming stream. The team responsible for the continual assessment stream assesses one application at a time according to predefined criteria. The results of the assessment are added to a replatforming backlog, where applications typically are grouped and labeled as S (small), M (medium) and L (large) levels of effort to get an idea of how long it will take to migrate them.
Once the first applications have been analyzed and data is placed in the replatforming backlog, work on the continual cloud-replatforming stream can begin. A group of experienced engineers takes the applications out of the backlog to replatform one at a time. After migrating a few applications, patterns typically emerge that should be captured in an application modernization “cookbook.”
While small- and medium-sized applications feasibly can be reconstructed from scratch, very large monolithic applications that have evolved over decades and are business critical require a different approach: rebuild modernization. A project of this kind requires great attention to detail and a reliable, expert external partner that can support an ongoing modernization effort and make sure the required resources are available consistently.
Rebuilding a very large application is a major project that can take many months or even years to complete. Such projects should start by creating a work structure. As with the replatforming approach discussed above, the rebuilding approach should include a continual assessment stream and a continual rebuilding stream. One major difference here is that you do not have to search for applications that can be modified minimally to run in a cloud-native environment. Instead, everyone involved (business, IT, management, etc.) is guided through the process of defining business domains, bounded contexts, entities, value objects and so forth. Strategic-domain-driven design at the program level should be used to identify the priorities and requirements for the next three to six months.
This should be followed by event storming workshops, a method used to quickly apply domain-driven design techniques together with IT and business people. This will generate enough detailed information to populate an agile backlog with epics and user stories. Then, multiple teams can start rebuilding (mimicking) the functionality of the existing legacy application as a set of micro-services running in a cloud-native environment. These services are then integrated with the existing application via application programming interfaces (APIs), with the functionality rebuilt outside of the legacy application.
This process is repeated until either all of the functionality has been moved out and rebuilt, or there is no business reason for rebuilding any leftover functionality in the old legacy application.
Modernizing on the front lines
It isn’t easy to carry out high-quality replatforming and rebuilding modernization work. And it’s even harder to do it on a global scale. The replatforming and rebuilding approaches we have discussed here are continuously improving and evolving, and CGI is on the front lines of this modernization every day―with deep familiarity in both the “old” and “new” worlds of IT to make it happen. Recognizing the ever-evolving cybersecurity and data privacy challenges that influence cloud-based solutions, CGI helps clients take a comprehensive cloud approach that balances risk and value. Learn more about our approach for migrating to cloud-native solutions.