It’s Time for Legacy Modernization 2.0 - Part 2

It’s Time for Legacy Modernization 2.0 - Part 2

Part 2 of 2

In the first part of this article, we discussed legacy modernization from the point of few of architecture and platform and commented o

  • The Future Role of Legacy Platforms 
  • Architecture: Role of Containers, Micro-services
  • Evolving the data architecture (relational/NoSQL)
  • User Experience Delivery: Mobile, Web, API, Omnichannel

In this second part, we will continue our analysis from a software development perspective and will cover the following critical topics.

  • Modernizing Development
  • Value of Code Generators/Translators
  • Technology Choices - Application servers, Programming Languages
  • Talent Availability

On we go.

Modernizing Development

IT consumer expectations are higher than ever. These expectations also relate to the velocity with which new features and bug fixes are released. How can development teams support ten software releases a month? How about ten a week? Automation is the essential ingredient that makes delivery and deployment of software break the old, slow quarterly release cycles, often tied to a waterfall-based development process. Discrete steps that yield deployable software assets are chained together in continuous integration and continuous delivery pipelines ( CI/CD). A plethora of tools compatible with pipeline-based automation has emerged and this has made it possible to define and refine the process of producing software in a very granular way.

The modern software development process applies automation not only to application software itself but automation is applied to infrastructure as well. This is known as applying a principle of infrastructure as code and is mainly possible once the hardware is virtualized and therefore has become a programmable entity. 

In legacy environments only a subset of this vision is possible. The virtualization of hardware is either lacking or cost-prohibitive. As a result, supporting an infrastructure lifecycle of configuration, use, teardown, and reconfiguration is very difficult. At scale, when multiple pipelines are active at the same time, this is virtually impossible. Toolchain components are also very limited so automation will be limited to certain tasks and a granular refinement and evolution of the CI/CD process will likely stall. It is true that some vendors have added agile features to their products. These enhancements do not however address the very proprietary characteristics of the software environments, operating systems, and hardware. Frictionless continuity and process flow as pipelines execute are hard to achieve. To get around the proprietary nature of the legacy platforms, implementing the concepts of gated automation, will require specialized connectors to execute even the simplest of tasks. A design that includes gated automation temporarily pauses automation flow to include human interaction and approval. This is a critical feature of any CI/CD pipeline and is particularly needed in heavily regulated industries.

A solid modernization program that extends the legacy environment with external components. will allow developers to develop and deploy software assets with greater flexibility and speed and fully apply automation. This, in turn, will give our end users access to new features and functionality on shorter timeframes.

A status quo that continues to concentrate on the development and deployment process within the legacy environment will not be able to meet the need for a faster turnaround of IT service delivery.  

Value of Code Generators/Translators

Modernization is often presented as an exercise in porting computer code from one platform or from one programming language to another. This technique, while useful for tactical use cases, fails to hold up at scale and longer-term goals. It is one thing, for example, to convert a handful of legacy RPG code to java so that a certain system utility tool can run. It is a completely different scenario to use a code translator to convert an entire portfolio of RPG assets implementing a proprietary Enterprise Resource Planning (ERP) application running on an IBM i system. In order to achieve long term viability, newly crafted code will be required. In addition, at a data level, relational models will need to be updated and broadened to support additional data types and data access patterns. It is upon this kind of foundation that a microservice, container-oriented architecture can be built. 

To properly modernize a legacy system, a new architecture and different best practices need to be applied. Code translators will not affect architecture, Code translators and generators won’t create properly layered APIs from aging system components. Deconstructing monolithic applications will require code examination, architecture, and dependency understanding followed by multiple design sprints with the goal of building a new system.

In an ideal situation, a properly partitioned legacy system may present well-defined component boundaries which a modernization program can take advantage of. But this is more of an exception than a rule. 

Today the value of code generators is highly diminished as programming frameworks have become very powerful. These new frameworks have empowered a new class of highly efficient programmers to practice their art with ultimate productivity, A very extensive open source community creates and maintains a high-quality ever-growing set of tools and frameworks. These frameworks address all aspects of development and architecture. With today's frameworks, it is possible to build highly sophisticated user experiences by writing only a fraction of the code. It is important to know is that programmers have always valued efficiency and this is true now more than ever. Extra effort is frowned upon and when a tool is hard to use, slows the development process down, when programming languages, frameworks, or APIs result in extra work, rest assured that Darwinian-like forces will emerge. The Open source community exercising its own form of natural selection will in time produce more efficient tools, frameworks, and programming languages. 

But open source communities not only police for quality, but they are the source of constant acceleration. They produce technology that is democratized, open to all to use, and helps level the playing field so that true innovation takes place.

Juxtapose this world to our experiences in the world of legacy platforms. There is certainly an effort to embrace openness but efforts and results remain limited. Without a proper modernization effort that breaks free of the single vendor, single technology milieu, progress will be limited. COBOL will always remain COBOL, RPG, free form, or not, will always be cryptic RPG. 

Technology Choices - Application servers, Programming Languages

One of the biggest decision points when defining a modernization 2.0 framework will be that of selecting a new technology stack and the standards and corporate guidelines surrounding their use. Historically, IT groups have valued prescribing sets of development technologies, high and low levels, along with a set of enterprise standards. This approach worked fairly well as we transitioned away from centralized computing to more distributed models and for a while produced some positive results helping organizations improve their development velocity and product quality. 

But as agile methodologies started producing very tangible results and automation within the software development process became mainstream, rigid standards and end to end technology prescriptions, started becoming a cause of friction. Today architects and developers have access to a very broad palette of programming languages and rich frameworks. Most programmers are fluent and proficient in more than one programming language. Programming languages themselves have become more specialized, some intended for front-end development, others optimized for expressing business logic running on middle-tier servers. With so much choice and specialization, it is important not to stymie innovation and efficiency in the name of corporate compliance to standards. Erecting barriers to productivity will hurt the modern development process and won’t gain compliance, trust, and loyalty across developer ranks.

Moreover, in the case of legacy environments where technology choices are inherently more limited, it can be very challenging to support a broad enough set of tools and technologies to keep productivity high. End-to-end standardization, despite its noble intent, becomes an element of friction. Most open-source frameworks and languages are either not available or do not evolve at the same development speed that the community operates. Runtime and compile-time incompatibilities discourage and often frustrates developers looking to build high-quality products in shortened timeframes.

And if the choice of programming language wasn’t enough, the way applications are architected is also changing. Applications now produce and consume APIs. This effectively facilitates fast speed to market, guarantees higher quality by relying on prebuilt and battle-tested functionality. Modularity, a key precept of strong system design, is easy to enforce and maintain. The role of APIs has become so pervasive and fundamental to modern system design that it has led to the emergence of an “API Economy”.Yet with all this excitement, legacy platforms have not elevated themselves to first-class participants in this economy. Consuming an API from a legacy system, while simple in theory, is more challenging in practice, certainly a situation that can not go on for the long term.

A modernization program must account for more than just technology. Culture, resource personality, and group expectations are as equally important and will ultimately drive success. The new technology stack? To paraphrase a popular ad, “What’s in your server?”

Talent Availability

“Tempus fugit “, the Romans used to say. “Time flies'' and this applies to everyone including to resources that operate and maintain legacy environments. It is time to confront the elephant in the room: a growing scarcity of talent that can develop, support, and operate legacy environments. For many years now, a common concern of IT managers of legacy environments has been the difficulty of replenishing resources. Talent, once plentiful, has become harder and harder to find. Many resources have now reached retirement age. Despite modest efforts of companies such as IBM to train and incentivize younger talent to learn technologies such as COBOL, CICS, RPG, operating systems such as Z/OS snd IBMi, very few candidates opt to learn what are perceived as dying technologies. As result projects are limited in what they can do and how fast they can deliver. Recent news in the US has highlighted this skills drought in a very tangible way. A lack of COBOL programmers was responsible for a delay in issuing unemployment payments to citizens of several states. 

Talent scarcity also applies to hardware. Developers and system administrators alike, all have grown up on laptops, mobile platforms, and the cloud. Most have never connected to a Mainframe, have never heard of a 3270 or 5250 emulator, and would not know where to start. Modern IT and computer science curricula provide students with hands-on experience with Java, dynamic programming languages such as python and javascript. Linux is the operating system most are familiar with. Macbooks are the cool platform and for diehards, Ubuntu. Most computing resources are cloud-based, and often free as hyper-scale cloud service providers such as Amazon Web Services, Azure and Google, provide hundreds of dollars of value to grow a loyal user base. In the cloud with Computer time metered by the second, talented programmers can experiment and explore new ideas across large pools of powerful computing storage, “rented” for a few hours. The number of ultra-advanced Interactive Development Environments (IDE) is plentiful. Imagine asking a young developer that eats Visual Studio Code (a very popular IDE) for breakfast to learn ISPF shortcuts so that he /she can edit and compile computer programs under Z/OS?

For a Modernization 2.0 effort, timing is going to be everything. The effort will require both knowledge of the old and new technologies so that a bridge can be established. This may sound like a solid plan but there are definite headwinds. If the pool of talent with legacy skills dwindles past a critical level, modernization programs themselves will struggle as there will not be enough talent to operate existing systems and at the same time support transition or a technology expansion that introduces new ideas and elements. 

Conclusion

Our legacy platforms are certainly critical for the operation and delivery of many of the functions we count on in our lives. Banking and insurance services heavily rely on powerful Mainframes to deliver uninterrupted services to their customers. Retail and distribution count on reliable IBM i systems to transact and ensure smooth supply chain execution. Manufacturing, not surprisingly leverages specialized ERP systems to track finances and industrial operation. But these systems have now become barriers and a liability that taxes innovation. The deficit in trained talent is deepening and will continue to impact productivity and development velocity. The availability of technologies that empower developers and technologies that specialize in solving specific problems, are not emerging or being ported to our legacy platforms. In many cases, porting doesn't architecturally and economically make sense.

The status quo is not sustainable and enterprises will urgently need to address a plan to properly envision the role that current legacy platforms will play in the short and long term. Technologies today provide IT organizations with many options along a spectrum that proceeds from simple rehosting or modest to refactoring to complete re-architecture and sunsetting. Where organizations will land will need to be determined. The time to assess and plan is now.


About the Author

Michael “Mick” Bisignani, a professional technologist, has held CTO and IT director positions. In his spare time, Michael aspires to become a burgeoning chef. You can follow him on Instagram @micksterct to tempt your taste buds

To view or add a comment, sign in

Others also viewed

Explore topics