As pandemic lockdowns ease, companies are racing to modernize applications ahead of new waves of COVID-19 infections that could send developers home to work again. When application modernization is combined with the cloud, developers can work in “virtual teams” – at home or the office – to rapidly deliver quality software that meets evolving customer desires and business needs.           

To achieve application modernization quickly, it’s important to get the formula right. A mistake I see is equating “application modernization” with “cloud hosting and microservices architectures.” That’s true only to the extent that “wardrobe” equals “shoes and socks” – it’s just part of the answer.

A Cautionary Tale

To illustrate the hazards of taking a narrow view of application modernization – including key processes and techniques – I’ll share the story of a company that wanted to modernize a 20-year-old monolithic financial compliance application. The application could not scale to meet a growing transaction-processing load, and creating multiple instances wasn’t an option because of data consistency issues. Code releases were painful and lengthy; even though teams followed the Agile Scrum framework, it took months to release a new feature or patch.

Before I came onboard, the team had already concluded they needed to rewrite the application using a microservices architecture – a good decision. In monolithic applications, components are intertwined, meaning that changes in one component can affect others, requiring extensive regression testing that can delay new feature introduction by months.

In microservices-based applications, in contrast, the code for a particular feature is bounded to a specific domain and doesn’t affect other domains. This reduces the scope of regression testing, enabling teams to deliver new features in weeks or days, even hours or minutes. Microservices architectures also support on-demand horizontal scaling – the driver for modernizing the financial compliance application.

The People and Process Elements of Application Modernization

When I joined the project, the team had started the microservices journey but was still struggling to deliver tangible business value. We put the project on track to deliver business value by implementing the other essentials of application modernization the company had overlooked:

  • Autonomous software development teams. The organizational unit for modern applications is an atomic team, or pod. With six to eight members, the pod is fully responsible for a particular microservice, including coding, design, release and educating the operations team. Pods include full-stack, polyglot engineers, a product owner and a product manager.
  • Agile methodology. Unlike waterfall development, which follows a rigid linear sequence, Agile development adapts in response to continuously changing customer desires, business needs and technology. When modernizing the financial compliance application, we kept the focus on the business goal: scaling to accommodate increased transaction processing load. Then we gradually replaced monolithic code components with microservices – a design technique known as the Strangler Pattern.
  • DevOps practices. I’ve seen some teams write great software, only to struggle getting it into production. Others get software into production but find they can’t troubleshoot effectively because of a lack of visibility. DevOps solves both problems. After writing or revising code, the team deploys, tests and releases it to production using an automated and repeatable continuous integration and continuous delivery (CI/CD) Troubleshooting distributed microservices is simplified using monitoring, dashboards and logging with request correlation. When we introduced Agile methodology and DevOps to Severn Trent Water, the application release cycle decreased from three months to four weeks – a 300% improvement. A major European bank reduced time to deploy code from 15 days to 45 seconds. 
  • Infrastructure as code (IaC). Modern applications are expected to be fault-tolerant and scale on demand. IaC tools available in public clouds automate the provisioning and configuring of new application instances (or redirection of traffic to other instances) when an application component begins to fail or is subject to increased load. In Amazon Web Services (AWS), for instance, you can use CloudFormation templates and CloudWatch to watch for events and then take action to make sure the event doesn’t interrupt the user experience.

Focus on the ‘Why,’ Not the ‘What’

Staying flexible in a post-COVID-19 world will require picking up the pace of application modernization. As you go forward, resist getting mired in the “what” (cloud, microservices and DevOps) and focus instead on the “why:” rapidly delivering quality code to meet changing customer desires and business needs. The journey will require adjustments along the way, but keeping your eye on the destination will help you get there more quickly.

See our COVID-19 resources page for additional insights and updates.

Hanadi Salameh

Hanadi Salameh

Hanadi Salameh is an Enterprise Digital Architect at Cognizant, who specializes in enabling digital transformation. Her expertise is creating holistic technical solutions... Read more