32,39 €
Organizations have varying circumstances, objectives, and prerequisites when contemplating a hyper-scale cloud solution transformation to a platform such as Azure. Modernizing Legacy Applications to Microsoft Azure uncovers potential scenarios and provides choices, methodologies, techniques, and prospective possibilities for transitioning from legacy applications to the Microsoft Azure environment.
You’ll start by understanding the legacy systems and the main concerns regarding migration. Then, you’ll investigate why distributed architectures are compelling and the various components of the Azure platform needed during migration. After that, you’ll explore the approaches to modernizing legacy applications and the Rs of modernizing (i.e., rehost, refactor, rearchitect, and retire). You’ll also learn about integration approaches and potential pitfalls.
By the end of this book, you’ll be well equipped to modernize your legacy workloads while being aware of pitfalls and best practices.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 290
Veröffentlichungsjahr: 2023
Plan and execute your modernization journey seamlessly
Steve Read
Larry Mead
BIRMINGHAM—MUMBAI
Copyright © 2023 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
Group Product Manager: Preet Ahuja
Publishing Product Manager: Preet Ahuja
Senior Editor: Runcil Rebello
Technical Editor: Irfa Ansari
Copy Editor: Safis Editing
Project Coordinator: Ashwin Kharwa
Proofreader: Safis Editing
Indexer: Hemangini Bari
Production Designer: Jyoti Kadam
Marketing Coordinator: Rohan Dobhal
First published: September 2023
Production reference: 1180823
Published by Packt Publishing Ltd.
Grosvenor House
11 St Paul’s Square
Birmingham
B3 1RB
ISBN 978-1-80461-665-9
www.packtpub.com
I would like to acknowledge all the people who helped put this book together, especially Bob Ellsworth, who provided the foreword, and the excellent technical reviewers.
– Steve Read
To my grandchildren, for giving me inspiration for the future as we move from legacy systems to the new era of technology.
– Larry Mead
Customers have been modernizing legacy applications for over 50 years. The pace of modernization has accelerated due to an increasing focus on business drivers, improvements in modernization technology and services, and new cloud deployment options, such as Azure.
Each customer is faced with one or more drivers to migrate, modernize, or transform. These drivers include increasing costs, decreasing skills, lack of deployment options, and lack of agility to be responsive to changing business requirements. As these drivers increase, more and more pressure is placed on Information Technology (IT) organizations to modernize their legacy applications.
With the increase in customer demand, migration tool vendors have invested in their technology to address this demand. This includes improving their tools to increase the level of automation and reduce manual intervention. Testing tools have also improved to accelerate the testing effort. These improvements result in lower costs, quicker migrations, and lower risk.
The cloud has been a positive revolutionary disruptor for IT. The ability to quickly deploy workloads at lower costs has accelerated the availability and adoption of new solutions to support businesses. What started as the ability to deploy virtual machines in the cloud expanded to include business and sales tools, such as Microsoft 365, Customer Relationship Management (CRM), and Enterprise Resource Planning (ERP). Cloud credibility has increased, ensuring that customers’ most critical business applications can be cost-effectively deployed with low risk and at scale. New solutions, such as OpenAI, will continue to increase the number of customers who have embraced a cloud-first strategy. This strategy will increasingly be applied to legacy systems.
Depending on your current legacy system, a modernization project can be complex and risky. While there have been tens of thousands of successful modernization projects, some projects have failed. To ensure a successful modernization, you must understand your current legacy system, the Azure cloud platform, and options for modernizing your current applications and systems. To facilitate this process, it is best to seek advice from experts who have decades of experience in modernizing legacy applications and systems.
The modernization knowledge and advice provided in this book provide the first step in the successful modernization of your legacy applications. Once you understand these concepts, you will be ready to engage with the right legacy transformation technology and service providers in order to accelerate your modernization journey.
Bob Ellsworth
President, Mainframe Transformation Consulting
Steve Read currently works at Microsoft as a Global Black Belt. In this position, he helps customers migrate their legacy workloads to Azure. He has been at Microsoft for 24 years in various technical roles, focusing on application and database development. Before joining Microsoft in 1999, he was a developer on both mainframe and UNIX platforms in the banking, healthcare, and government industries.
I would like to thank all of the people who made this book a reality. It is quite an effort to publish a book like this and it takes a village to make it happen. I would like to thank the folks at Packt, who were a pleasure to work with, Bob Ellsworth and Larry Mead, for being mentors to me, and especially the technical reviewers, whose expertise helped make this book more impactful.
Larry Mead is a principal technical program manager in Microsoft Azure Core engineering. Larry has over 45 years of experience developing mission-critical systems, starting with mainframes and mid-range systems, continuing with distributed systems, and now with cloud-based systems. Larry specializes in systems for financial services, but he also has experience with retail, manufacturing, transportation, and government systems. Currently, Larry specializes in how to develop Azure services for mission-critical systems.
I would like to thank co-author Steve Read and my colleagues from my time at Microsoft, who helped review and revise the content of this book.
Harri Jaakkonen is a Microsoft Valuable Professional within the security category and targets identity and access management. He is mainly focused on Microsoft technologies but also deals with network devices, load balancing, disaster recovery, and other non-Microsoft solutions. He has 27 years of experience in these areas.
Amethyst George Solomon is a senior engineering architect with the Microsoft Azure database product engineering group and collaborates with multiple product and service owners to build customer-oriented services on Azure to run mission-critical systems. He has been working with mainframe and mid-range modernization for more than a decade and has worked with customers on architecting the workload modernization strategy with the right technology. He drives product feature specifications across Azure platform products, which helps accelerate the adoption of Azure services by unblocking and accelerating complex workload migrations such as mainframes and making customer migrations successful on Azure.
Thanks to my family and friends who have been supportive throughout this time. Their support allowed me to concentrate and spend an adequate amount of time validating and adding value to this book. I would also like to thank the team behind maintaining Microsoft’s documentation, for keeping it up to date, and the product group, for keeping the information precise.
Roy de Milde has been working in the field of infrastructure and application development for over 15 years for different IT companies. He has experience and knowledge in modernizing applications to leverage the latest and greatest technology and generate more business value. For the last eight years, he has been focusing on application modernization and innovation with public cloud technology for enterprise customers.
Philip Brooks holds a B.Sc. degree in computer science from Shippensburg University, as well as a PMP certificate from the Project Management Institute. He serves as a director and secretary for the SHAPE Foundation. Philip started his 34+ year career with what became Unisys as an on-site systems mainframe support analyst for the US Army under Sperry Univac. He has been active in the IT client and system support arena since 1983. He has been an operator, installer, trainer, systems internalist, and trusted consultant, and provided program and sales support across a broad spectrum of IT services and clients during his 40 years in the IT industry. Since 2020, Mr. Brooks has been part of the Microsoft Azure Core Legacy Team.
Bhaskar Bandam is an experienced professional in technology. He has been part of Microsoft’s Azure Core engineering team for over three years, assisting customers with legacy workload migration to Azure. Previously, Bhaskar worked as a federal contractor, specializing in on-premises workload migration. With a career span of nearly 25 years, Bhaskar has honed his expertise in mainframe systems. He started as a mainframe developer and progressively advanced into key positions such as DevOps and digital transformation manager. Bhaskar holds a master’s degree in information systems, and an MBA, strengthening his technology foundation and managerial skills.
Bhuvi Vatsey is a seasoned modernization professional with over 14 years of industry experience across the hospitality, retail, healthcare, and telecom domains as an application developer, architect, solution lead, and program manager. She has hands-on experience in transforming mission-critical applications into cloud-first and cloud-native distributed systems. She has successfully led projects with multimillion-dollar spending on migration, enhancement, and modernization of mainframe systems with customers and partners. In her current role, she is responsible for helping enterprise customers meet/exceed their modernization objectives with the right strategy and underlying solutions on Azure.
Ricardo Galvan is a senior technical program manager on the Azure Core engineering team. Ricardo provides technical assistance in migrating mainframe and mid-range applications to Azure. Before joining Microsoft, he built software tools to automate the conversion of source code of applications and databases. Ricardo specializes in converting Cobol of IBM/Unisys mainframes and IBM i (AS/400), RPG, CL, ALGOL, and other programming languages to C# and Java, among others. He is a full stack developer covering a wide range of mainframe, mid-range, and Linux/Windows programming languages, database engines, and web frameworks. He completed his first Unisys MCP mainframe COBOL and LINC banking application migration to HP-UX back in 1994.
Hello all. This book will provide the background, options, and project planning for moving a legacy state on mainframes, mid-range, and Enterprise UNIX to the Azure cloud. This book is intended for IT architects, program managers, and project managers (alongside business groups) to understand the scope of modernization.
The book will cover topics to help legacy personnel understand services in Azure, and will also help Azure personnel understand the legacy environment that is the source of the migration.
Chapter 1, Understanding Your Legacy Environment - the Modernization Journey, looks at existing legacy environments to get a baseline on the scope of modernization.
Chapter 2, Strategies for Modernizing IBM and Unisys Mainframes, specifically looks at IBM and Unisys mainframes, and the options for migrating these to Azure.
Chapter 3, Midrange to Azure, looks at options for systems that run on IBM Power, including iSeries and AIX.
Chapter 4, Modernizing Legacy UNIX Systems, looks at options for Enterprise UNIX systems, such as Solaris and HP-UX.
Chapter 5, An Overview of the Microsoft Azure Cloud Platform, looks at the various options of the Azure Cloud platform as related to migrating legacy applications.
Chapter 6, Azure Cloud Architecture Overview for Mission-Critical Workloads, looks at the capabilities and approaches for creating mission-critical systems on Azure.
Chapter 7, Behold the Monolith – Pros and Cons of a Monolithic Architecture, looks at why many legacy applications are monoliths, and the options for moving to Azure.
Chapter 8, Exploring Deployment Options in Azure, looks at strategies for actually moving the legacy applications and data to Azure.
Chapter 9, Modernization Strategies and Patterns - the Big Picture, covers strategies for moving to Azure. This includes rehosting, refactoring, and rewriting. Additionally, we cover the big bang or phased approach.
Chapter 10, Modernizing the Monolith - Best Practices, specifically looks at the challenges of modernizing monolith applications to Azure.
Chapter 11, Integration - Playing Friendly in a Cloud-Native World, looks at best practices for running in the Azure cloud.
Chapter 12, Planning for the Future - Trends to Be Aware of, looks at trends for future Azure features, and how these trends may affect your modernization.
To get the most out of this book, we recommend that you have a background in a specific legacy environment, such as IBM or Unisys mainframe, Midrange, or Enterprise UNIX environment. Additionally, it would be helpful to have an application or system in mind for moving to Azure, or you want to build an overall strategy for moving to Azure. Finally, it would be helpful to have a background in the service-level agreement (SLA) mission-critical systems you might want to migrate.
There are a number of text conventions used throughout this book.
Bold: Indicates a new term, an important word, or words that you see onscreen. For instance, words in menus or dialog boxes appear in bold. Here is an example: “Azure Web App for Containers is technically part of what is known collectively as Azure App Service.”
Tips or important notes
Appear like this.
Feedback from our readers is always welcome.
General feedback: If you have questions about any aspect of this book, email us at [email protected] and mention the book title in the subject of your message.
Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you have found a mistake in this book, we would be grateful if you would report this to us. Please visit www.packtpub.com/support/errata and fill in the form.
Piracy: If you come across any illegal copies of our works in any form on the internet, we would be grateful if you would provide us with the location address or website name. Please contact us at [email protected] with a link to the material.
If you are interested in becoming an author: If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, please visit authors.packtpub.com.
Once you’ve read Modernizing Legacy Applications to Microsoft Azure, we’d love to hear your thoughts! Please click here to go straight to the Amazon review page for this book and share your feedback.
Your review is important to us and the tech community and will help us make sure we’re delivering excellent quality content.
Thanks for purchasing this book!
Do you like to read on the go but are unable to carry your print books everywhere?
Is your eBook purchase not compatible with the device of your choice?
Don’t worry, now with every Packt book you get a DRM-free PDF version of that book at no cost.
Read anywhere, any place, on any device. Search, copy, and paste code from your favorite technical books directly into your application.
The perks don’t stop there, you can get exclusive access to discounts, newsletters, and great free content in your inbox daily
Follow these simple steps to get the benefits:
Scan the QR code or visit the link belowhttps://packt.link/free-ebook/9781804616659
Submit your proof of purchaseThat’s it! We’ll send your free PDF and other benefits to your email directlyIn order to understand the options for moving a legacy application to Azure, we must first look at the options for the various types of legacy estates.
This part contains the following chapters:
Chapter 1, Understanding Your Legacy Environment – the Modernization JourneyChapter 2, Strategies for Modernizing IBM and Unisys MainframesChapter 3, Midrange to AzureChapter 4, Modernizing Legacy UNIX SystemsBefore you choose the right option to move your legacy estate to a hyperscale cloud provider such as Azure, you need to understand the current environment of your legacy estate to know the options that might exist. This chapter will focus on the areas you should consider. Also, while many of the concepts that we will discuss can be applied to other hyperscale clouds, this book will focus on Azure. So, let’s start with a list of topics that we will cover in this chapter to help you understand your current legacy estate:
Current legacy hardware and operating systemThe current state of legacy applicationsWhat are the goals of moving to a hyperscale cloud such as Microsoft Azure?The need to choose a target architectureConsider your constraintsHow do you declare success for a legacy modernization to Azure?Having been involved in many modernizations of legacy environments to Azure, understanding these fundamentals will both increase the likelihood of a successful modernization and provide you with an Azure estate that exceeds the capabilities of your current legacy environment.
Many people think of mainframes when the term legacy estate is used. However, the term mainframe does not have the same meaning for all people. Additionally, there are non-mainframe systems that can either make up or surround a legacy estate. This section will focus on four types of legacy estates:
IBM and Unisys mainframesIBM midrangeEnterprise UnixOther legacy estatesIBM mainframes have been around for over 50 years and have the largest share of the mainframe market. The current version is called the z series. Several operating systems can run on z hardware, including z/OS, z/VSE, z/TPF, and z/VM. Currently, IBM mainframes can also run Linux and specialty engines such as the z Integrated Information Processor (zIIP) and Integrated Facility for Linux (IFL). The most common operating environment we see is z/OS, which might also include zIIPs and IFLs in the same environment. This will be the type of IBM mainframe environment we will look at in this book for modernizing to Azure.
If you do have an IBM mainframe estate running z/OS, there are several other factors that you need to take into account before proceeding with an Azure cloud modernization. These include the mainframe size, features in use, and Service Level Agreements (SLAs). All of these factors need to be considered when modernizing to Azure.
The second largest mainframe market share belongs to Unisys. As with IBM mainframes, Unisys mainframes come in multiple versions. These include Libra (MCP) and Dorado (2200). To understand the differences, it is important to look at their history. Unisys is the result of a merger of two companies, Burroughs and Sperry. Libra comes from the Burroughs lineage. Dorado comes from the Sperry lineage. Keep in mind these are separate operating systems and require different modernization strategies.
As with IBM mainframes, you also need to take into account sizing, features, and SLAs.
For this book, we will consider IBM midrange systems to be POWER-based hardware that runs the iSeries OS. The IBM iSeries platform has been in existence for over 30 years and has included systems such as AS/400, System 36, and System 38. Many users of the iSeries platform also run mainframe systems. However, the iSeries is a distinct operating environment versus the IBM z series. As the name implies, midrange systems are typically smaller than mainframes. These systems may run mission-critical applications that require high performance. The iSeries operating system is tightly integrated with the POWER hardware to provide this high level of performance. Unlike the z systems, the iSeries is the only operating system for midrange. There are multiple versions of the iSeries in use today. But these share a common ancestry.
The POWER hardware can also run a Unix variant (AIX). This will be discussed separately in Chapter 3. Sizing, features, and SLAs are also factors for modernizing the iSeries.
While there are several versions of Unix, for this book, we will concentrate on AIX, Solaris, and HP-UX. Unix systems are very different than mainframe and midrange environments. Unix systems were one of the first operating system environments that promised the option of Open Systems. However, as it turns out, the Unix of Open Systems meant the operating system could run on multiple hardware platforms, not that applications developed for one platform could run without modification on another platform. Unix systems are still widely used in several systems. However, each major variant requires a different approach.
IBM AIX systems on POWER hardware are widely used and provide high performance and availability. Solaris is also widely used. Solaris can currently run on x86 but also continues to run on Sparc hardware. HP-UX is still available on HP Epic (Itanium)-based hardware. Enterprise Unix systems were developed over 30 years ago but are more closely related to today’s distributed and cloud systems. Enterprise Unix still has some legacy problems such as proprietary hardware/OS and agility.
Just to cover other legacy environments, there are several legacy operating systems and hardware. These include other z operating systems, such as z/TPF and z/VSE, other midrange systems such as Dec VAX, other mainframes such as Bull and NCR, and specialized operating systems such as HPE NonStop. While we will not go into detail about moving these environments to Azure, here are some options you can use for these environments that are similar to the areas we will cover:
z/TPF: Similar to approaches for Enterprise Unix, but specialized throughput and availabilityz/VSE: Similar to approaches for z/OSVAX: Similar approach to Enterprise UnixBull and NCR: Similar to the approach for UnisysHPE NonStop: Similar to z/OS, but with special attention to redundancyThese operating systems provide scale-up functionality similar to IBM and Unisys mainframes, and applications on these systems are typically written in legacy languages such as COBOL. This chapter will reference these systems in sections where features provided by them are discussed.
As with legacy hardware and operating systems, the current condition of applications that use your legacy estate is important to consider when you move to Azure. Here are the topics we will cover related to the current application estate:
Scope of the legacy application estateLanguages used in the current estateThird-party (COTS) applicationsUtilities (tools) usedOperating system servicesApplication-specific SLAsWhile we recommend that you also do a detailed inventory and tools-based assessment of your legacy source code, there are some general rules of thumb you can use to scope out how to both accelerate modernization to Azure and take advantage of Azure services in the process.
For example, the total number of lines of source code is a good indicator of the effort needed to modernize to Azure. Lines of code are not necessarily a measure of complexity, as source code can often be converted using automated tools. However, lines of code will likely indicate the effort needed to test code once converted to Azure.
Another measure of complexity or effort deals with code interdependency. This is important as modules run independently and can usually be converted separately, thus simplifying the testing process. Otherwise, the interdependent code module will likely need to convert at the same time. For performance and testing, we advise using Azure tools such as Azure Monitor and Application Insights to assist with performance testing.
Another thing to consider is the possibility of unused code in your legacy estate. Many of your legacy applications were written across multiple decades. This means that your application may be full of dead code that is no longer used. Rather than converting and testing the dead code, running code analysis tools to identify code that is never called can accelerate modernization.
Identifying the data associated with an application you want to modernize to Azure is very important. For example, if you modernize the application code to Azure without also moving the associated data for that application, you are likely introducing latency that may not be acceptable to access that data.
Finally, identifying if you have all the source code and the current version is extremely important. A lack of source code will limit the modernization options you have.
Since legacy systems were developed over decades, there may be some obscure development languages that it might be hard to find cloud versions for or are simply no longer supported. More commonly, however, you will find older languages such as Cobol or PL/I that are not supported with common tools and IDEs in Azure without third-party Independent Software Vendor (ISV) compiler software.
In particular, if your goal is to move to Azure-native managed code solutions for your legacy applications, you may find the need to integrate your managed code (for example, Java or C#) with unmanaged code in C/C++ or other managed executables.
Another possibility is the presence of third-party software in the legacy environment. Since most legacy applications not written in Java or C# (or another managed language) are not compatible with Azure, we need to find whether the third-party ISV provides a version that is compatible with Azure. For example, a commercial off-the-shelf (COTS) application that currently runs on AIX may have a version that runs on x86 Linux. In that case, moving the COTS application to Azure is typically not a technical problem. There may be licensing issues that need to be addressed. But it’s not a technical problem. If that is not the case, you will likely need to find an alternative for the COTS application. In some cases, such as POWER platforms, running the COTS application as-is on Azure might be an option. Otherwise, an alternative application that runs in Azure will need to be found.
Many applications depend on utilities that provide services by the operating system to function. This includes things such as queuing, transactions, data replication, scheduling, monitoring, backup, and printing. For example, many applications use queuing provided by MQSeries. When moving to Azure, you will need to decide if you wish to continue to use MQ, which is available in Azure, or use a native Azure queuing server such as Service Bus.
We recommend mapping all the utilities currently used by your legacy application with utilities available in Azure. In some cases, these may be native Azure services such as Service Bus, Azure Monitor, and Azure Data Factory. In other cases, third-party tools might be required for things such as printing and virtual tape.
A special type of utility deals with operating system services. This is particularly true for IBM mainframes and midrange. This includes features on the mainframe such as CICS, IMS DC, and Coupling Facility. When we look at these features further, CICS and IMS DC are really like application servers on the mainframe. So, on Azure, we need to look at things such as App Services or Tomcat hosted in Azure Kubernetes Service to provide similar functionality.
On the midrange, the operating system provides tight coupling with the database for applications, and integration with scripting using CL. For this type of functionality, we need to extract these functions from the applications and put them in the database, scripting language, or other utility functions on Azure.
The SLAs provided natively by Azure for virtual machines (VMs) and data solutions will likely meet the availability and recovery requirements for most legacy systems. However, there are some specific cases where that may not be the case.
Applications that were developed by legacy programmers often depend on proprietary features of the operating system to achieve high availability and resilience. An example would be COBOL applications run in a CICSPlex and use Db2 that runs in a Parallel Sysplex. In this type of scenario, the applications themselves are unaware of the underlying system software that provides application resilience and limits data loss. Application redundancy and data resilience in cloud systems such as Azure typically rely on scale-out redundancy to meet similar availability. The scale-out approach usually relies on the application to be able to restart. That logic might not be present in the legacy code being converted.
There are mitigating approaches that can be followed, such as using a caching service such as Redis Cache on Azure. However, either the ISV software being used for the application layer, or the application code itself, would need to be Redis Cache-aware.
Mainframe applications were typically developed as monoliths (single system, not distributed). This section covered the various requirements Azure needs to provide to offer the same type of robustness and features.
So, what are the reasons behind deciding on a migration or rewrite of an application or ecosystem of applications to Microsoft Azure? The answer to that question will no doubt be different for everyone. Typically, the reasons can be broken down into three general categories.
The following are the cost-related factors:
Elastic scalability