By: Harshit
May 17 2019

Bringing legacy systems to DevOps speed

Across all business cultures, growing and adapting to changing business practises and environments has always been through either mergers or some sort of acquisition. Day by day as organisations become larger, it often makes sense to acquire companies which are already doing what they excel at and that somehow serves your business purpose. However, this can often create a variety of conflicts and challenges—one of which is around infrastructure. 
Source: Insurance Blog 

It often feels impossible to modernise their legacy system and it requires sheer expertise from people from the technical and business front to chip in and head the product towards renovation. 

For other companies that have grown more organically, it often can be difficult to modernize their legacy systems and bring their technology stack into the 21st century.

According to Tim Russell, chief product officer of Perforce Software - 

“When an organisation has a legacy application which has attributes that are being used in new services, it is necessary to design the right interfaces that can enable DevOps teams to work independently of it. This may involve the legacy lean providing the right application programming interfaces (APIs) to enable the DevOps team to work without being held back by the pace with which the legacy code can be changed”

DevOps has caught some serious pace but the spread is selective in nature

DevOps has always shown some real promise. Needed functionality is coming online faster and teams are working together better, and issues are being resolved closer to the moment they are detected. But only where DevOps has been applied systematically.

Devops culture
Source: Martin Fowler 

                           
The primary characteristic of DevOps culture is increased collaboration between the roles of development and operations. There are some important cultural shifts, within teams and at an organizational level, that support this collaboration.

Actual blocker is the backend work being slower in general 

Usually, when a given application has unlimited or limited number for dependencies, problems start occurring on the backend operations and development. The legacy systems that contain enormous amounts of sensitive consumer and business data have been thought through and designed in a way that it holds and transports data within the system for better business functioning. 

Those legacy systems have been rock solid for years and have not been touched or re-thought, they need all-round expertise to be touching them for a revamp. Also, they get pretty slower day by day since they are not so much future-proof in terms of scaling and so they start experiencing performance and quality issues. 

But where does DevOps underlying strength come to business use?

Both the business and customers are demanding a faster rate of change though. The whole goal of digital transformation is to increase the rate of change to meet the demands of today’s environment. DevOps strength is continuous delivery and integration, in acronyms, it’s known as CI/CD. The art of bridging the development efforts to the deployment efforts to the testing and fixing efforts is what DevOps intends to be excel at. That’s the selling point of DevOps engineers and why they have become extremely necessary to every project. 

By offering quick iterations with a highly automated build/test/deploy environment and repeatable/reusable processes and artifacts, DevOps increases the rate of change, and often increases stability by removing room for human error.

A word on scaling DevOps

But organisations face major hurdles when trying to scale DevOps processes company-wide, warned Bola Rotibi, founder and director of Creative Intellect Consulting. Speaking to Computer Weekly, Rotibi said: “The danger is that too many organisations think they need a separate DevOps team. They are not incorporating the teams they have. They are not imbibing a DevOps culture within their existing teams and it is costing them in terms of efficiency, delivery and modernizing their approach. 

Ensure these steps or practises for successful implementation of DevOps in case of Legacy Systems

Migrate to the Cloud and Forklift 

If you don’t have a continuous delivery approach figured out yet, adopt directly to the DevOps driven approach and adopt directly to a DevOps-driven, continuous delivery approach. looks the easiest but has the worst long-term payoff. 

forklift

Moving your platform to the cloud is the first thing you should focus on once you are done deciding that you are bringing DevOps in your legacy systems. You can choose to migrate your on-premise application to several cloud services like AWS, Azure, as this is going to be new for you, you can always take your time and learn how to go around the cloud setup. Migrate an on-premise application you have onto a cloud platform like AWS or Azure as a way to learn what it takes to live in the cloud. 

Now, don't test your primary business-machine on the cloud at the first instance, try porting one of the trivial systems which you can clone easily and port it to the cloud or say a comparatively self-contained system with few dependencies. Then bring in the forklift approach, start picking and dropping things one by one where they were fitted earlier in the legacy system. 

Find and Automate recurring processes

work automation

Ask your team to find any recurring task being done manually and replace it with an automation script. Yep, the easy way out. What will you get out of it? More consistency, more reliability and more performance and also zero chances of failure since the computers are built for this purpose since inception. 

Well, what does your human workforce do then? You ask them to brush on the cloud practices. Gain more expertise and knowledge of the things they are handling and will be handling in the future. Try helping them understand the value of automating and how much more can be achieved by automating their tasks. 

Consider automating testing, builds, or even your recurring deployments for that matter.  while freeing the humans to do more of the knowledge work they’re good at. Consider automating parts of testing, builds, or deployments. Once you see the benefits of automation, you’ll start looking for more tasks to automate.

Rewrite and create a value stream mapping 

Revise dated code for use with DevOps approach; most time intensive and if done slapdash, risk-laden choice, if done properly achieves frequent change benefits of continuous delivery. For interdependent legacy applications. 

Create a value stream map to reflect the end-to-end picture of what it takes to build, deliver, and operate software within your organization. Value stream mapping will create better visibility, shared context, and more awareness about where there are opportunities to improve flow and eliminate waste. Depending on the size and complexity of the value stream and the size of the team involved in the value stream, you can create a value stream map in a workshop that takes anywhere from a few hours to a few days.

A final word 

DevOps is about to go through a dramatic evolvement and it is extremely necessary for us to be making changes to responsibilities and areas, bettering our technical flow and processes and helping our overall development practices before shifting any legacy system to sheer excellence and modernization.