Patterns are key for building software efficiently. They are the result of years of wisdom and have been traditionally used to conduct successful modernization of Legacy environments. Mainframe environments are not the exception. This article covers the use of two common Modernization Patterns for Mainframe Modernization.
Before discussing the patterns, let’s start categorizing Mainframe Modernization Approaches. We have found that it is simpler to categorize them as follows:
The following illustration summarizes the characteristics of each of them.
As you can see, each presented approach has a flavor of temporary or permanent co-existence between the modern and old environments. That, however, neither tell us much on how to address the challenges inherent to dealing with the modernization nor how we can keep a future co-existence model to maintain our existing service level indicators.
Modernizing Mainframes cannot be compared to modernizing a server. Modernizing a mainframe means modernizing an ecosystem. A successful modernization strategy will include ways to deal with:
And of course, the Non-mainframe Dependencies who have been built over the years the mainframe have been supporting the business.
Good design encompasses factors such as consistency and coherence in component design and deployment, maintainability to simplify administration and development, and reusability to allow components and subsystems to be used in other applications and in other scenarios. Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services.
At our Architecture Center, we have a list of tested patterns that describes the problem that they address, considerations for applying the pattern, and an example based on Microsoft Azure. They are available at https://learn.microsoft.com/en-us/azure/architecture/patterns/category/design-implementation. We call them the Design and Implementation Patterns.
This article will cover two common patterns for Modernization available in our Design and Implementation Patterns: The Anti-corruption and Strangler Fig Patterns.
The Anti-corruption Layer Pattern implements a façade or adapter layer between the Mainframe legacy system and Azure systems.
This pattern is used to ensure that an application's design is not limited by dependencies on outside subsystems. This pattern was first described by Eric Evans in Domain-Driven Design.
The goal is to isolate the different subsystems by placing an anti-corruption layer between them. This layer translates communications between the two systems, allowing one system to remain unchanged while the other can avoid compromising its design and technological approach. The following diagram depicts the pattern.
When modernizing a mainframe environment, the Anti-corruption layer will be built using our Azure Logic Apps Workflows and our connectors for Mainframes and Midranges technologies. They will serve as a communications translator layer between the Mainframe and the newly created Azure systems.
The Strangler Fig Pattern Incrementally migrates a legacy system by gradually replacing specific pieces of functionality with new applications and services.
As features from the legacy system are replaced, the new system eventually replaces all the old system's features, strangling the old system and allowing you to decommission it.
The goal is to incrementally replace specific pieces of functionality with new applications and services. Create a façade that intercepts requests going to the backend legacy system. The façade routes these requests either to the legacy application or the new services. Existing features can be migrated to the new system gradually, and consumers can continue using the same interface, unaware that any migration has taken place. The following diagram depicts the pattern.
As you can see, this process is gradual. Hence the importance to define a clear modernization Backlog for the existing Mainframe environment elements that includes a complete inventory of applications and their components, such as:
Considering this is a gradual modernization, you will need to focus the modernization efforts on isolating “Applications” or groupings of the elements on a Mainframe environment. To summarize, this means understanding the boundaries of the Modernization.
If your Mainframe looks like this:
You must determine the boundaries of the applications to be modernized (Sets of programs, data, jobs, etc. highlighted in colors). And this is the efforts need to be focused first. Unless you plan to conduct a Lift and Shift approach and avoid rewriting systems at all costs, this is required.
The following illustration depicts a downsized Mainframe interacting with the Anti-corruption Layer built using our Azure Logic Apps connectors for IBM Mainframes and midranges.
Remember that our Architecture Center also includes multiple Mainframe and midranges modernization topologies and solution patterns: https://learn.microsoft.com/en-us/azure/architecture/browse/?terms=mainframe.
Now, let’s pick an IBM CICS workload. How do I effectively interact with IBM CICS from Azure? Using our Azure Logic Apps connector for IBM CICS as depicted below (More information available at: Logic Apps Mission Critical Series: "We Speak: IBM CICS" - Microsoft Community Hub.
For other connectors and IBM Integration technologies, please visit:
Connector |
Link |
IBM MQ |
|
IBM Host Files |
|
IBM DB2 |
|
IBM IMS |
|
IBM SNA and AIS |
And the following would be a Reference Architecture using our Azure Integration Services and extending workloads to Azure and keeping on-premises dependencies up and running.
The following video covers this topic:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.