Category: Uncategorized

Application Modernization – 3 Common Pitfalls to Avoid

First published on DevOps.com – see original article

Application modernization has been a consistent theme for organizations year after year. Businesses today still rely on their legacy applications for a majority of their revenue generation, from mainframes to Java EE. New digital transformation initiatives and mandates have pushed application modernization back to the forefront as a new generation of automation platforms and best practices are helping these organizations avoid the pitfalls of the past and accelerate their journey to cloud native architectures.

Here are the three most common application modernization pitfalls and how to avoid them:

1. Lack of a clear organizational destination

Application modernization journeys need a North Star – a guiding destination that development, infrastructure, and DevOps teams can rally around. In order to establish a clear, unified direction, everyone must share a precise understanding of where it wants to get to. That journey starts by defining a set of business goals you are trying to accomplish (such as cost savings, business agility, resiliency, and/or competitive advantage) that can guide and prioritize the technical decisions.

Next, you need to decide which application modernization technologies, platforms, and infrastructure will help you deliver on those business goals (e.g., Red Hat OpenShift, Kubernetes, Serverless, hybrid or private or public cloud, etc.). Setting common architectural standards will help avoid disparate future stacks and ensure a common shared platform for microservice architectures. For example, if an application starts with Java WebSphere, should the goal be to move to a modern container framework like Spring Boot or a specific microservice Java framework like Quarkus? To avoid analysis paralysis and internal drag, tangible objectives and targets should be set that prescribe how teams are expected to prioritize, select, and modernize these applications and how their progress should be measured, communicated, and shared.

2. Taking shortcuts – don’t fall for the old ‘lift and shift’

The more one modernizes, the more value one gets from the cloud, but not all modernization efforts are created equal. For example, ‘lift and shift’, putting a monolith into a container, and application refactoring into microservices are all called “modernization.” But only refactoring allows enterprises to realize the true benefits of the cloud that include elasticity, regained engineering velocity and cost savings. Don’t fall into the quick and easy modernization temptation with lift and shift or brute force containerization. You will still have a monolith in the end and simply end up paying more and trading one set of monolithic problems for another.

3. Not bringing everyone along with you – no developer left behind

Modernization is never just about technology. Modernization requires that your team’s processes (e.g., agile practices), structure (vertical domain teams as opposed to horizontal teams – e.g., UI team) and skills must adapt. The organizational culture needs to grow to adopt DevOps and cloud native best practices in order to take advantage of the deep development, build, deployment, and operational benefits that are available. Take the time to train and educate so everyone is brought along. Modernizing legacy applications can bring a whole new set of technologists who are responsible for those applications and the supporting infrastructure into the cloud native world.  This is a win-win for everyone.

In other words, the organization needs to have crystal clear answers to the where (destination), why (path) and how (team) to ensure success and avoid the three most common pitfalls of application modernization.

Introducing vFunction: A Relentless Pursuit to Automate Modernization

Three years ago, after we sold our company, WatchDox, to Blackberry,  Amir, Ori, and I gathered  to discuss what we wanted to do next. We knew one thing: we wanted to address a fundamental and significant problem in the IT world. 

vFunction: The Challenge

Our experience showed us that in the pursuit of product-market fit, the problem you end up solving is usually a lot narrower than the one you thought you wanted to solve. It’s just the way these things evolve as you refine your offering and tighten the solution-pain point feedback loop.

When I met Ashmeet Sidana from Engineering Capital, our first investor, and we discussed the trends in cloud computing, specifically the hot Serverless trend, it was clear there was an unsolved problem: while the benefits of Serverless were obvious, it was also evident one needed some basic architectural prerequisites to have applications take advantage of Serverless, mainly microservices and event-driven architecture. 

If you were to build a new app, sure, you can build it in a way that takes advantage of Serverless. It wouldn’t fit every application but you could do it for many. The question was…how can organizations that have hundreds or thousands of existing applications, mostly monolithic, not cloud-native, take advantage of Serverless?

When 81% of the workloads are not cloud-native and with 21 billion predominantly monolithic JVMs in the world, it became clear this was a massive problem. The cloud workloads are either new (greenfield) or low hanging fruit migrations (i.e. the simple ones). This meant we were only in the early innings of the cloud revolution as the industry  hadn’t tackled the difficult part yet.

From talking to enterprise customers, we found out that the disappointment from “lift and shift” migrations was growing. Enterprises were not realizing cost benefits and surely the cloud-native architectural benefits, all the way from elasticity to accelerated engineering velocity, were absent from the monolithic lift-and-shift migrations.

We’ve seen cloud-providers and startups looking to address this challenge with containerization. Well, containerizing a monolithic app does not make it cloud-native because you still do not get the elasticity or the engineering velocity one gets from true microservices. You do get some benefits on the DevOps side, like faster deployment, but that’s hardly enough to justify the migration.

The basic problem of modernization has existed for years and the cloud only accelerated this conversation. Enterprises that have thousands of Java applications developed over the past 20 years are not going to throw them away. A recent study shows “80% of companies will continue to leverage past investments in Java apps”. A 2019 Mckinsey study found out that “75% of the IT budget goes to support and maintain legacy applications while only 25% goes to support innovation”. The net of it is that legacy systems hinder agility while consuming the majority of the IT spend. 

To get the true benefits from the cloud,  unlock innovation in general, and get out of the legacy spend swamp, companies need to transform their monolithic applications into microservices. Unfortunately, there was no easy way of doing that and that’s exactly what we set to address with vFunction.

The vFunction Solution

We are excited to launch vFunction –  the first and only platform for developers and architects that intelligently and automatically transforms complex monolithic Java applications into microservices, restoring engineering velocity and enabling the benefits of the cloud. 

At the core of vFunction is a unique combination of dynamic analysis of actual usage patterns enriched by static analysis of the existing binaries.  This is coupled with extensive data science, deep graph theory and clustering algorithms to automatically identify microservices and the optimal entry points to split them from the monolith. 

From these innovations, vFunction is able to identify vertical business services that reflect specific domains – precisely those that used to take months using traditional, manual domain-driven design exercises. Since vFunction collects a comprehensive set of interdependencies from both within the JVM and external to the JVM, services are identified from the database through the business logic all the way to the user interface.

The platform then enables the architect to interact with and modify the microservices design, to fit any specific target architecture.

Building on the deep analysis capabilities, we added the vFunction automation platform that is able to create those microservices from the original code.

Offering automation was the tipping point that led customers to say things like:

“vFunction enabled us to refactor one of our most complex applications which I thought might never be possible,” – an architect in a large rating agency

“vFunction provides a complete topology map of the application by identifying all the services and functions present. The ability to aggregate microservices via drag & drop is a plus and the ease of extracting the code needed to build the microservice is astounding.” – senior developer at Intesa, Italy’s largest bank.

We started to ask customers to try to quantify the savings and the acceleration associated with using vFunction (we had our thesis there but wanted customers to tell us…) and the numbers were mind-blowing: 15x acceleration and millions of dollars of savings.

The positive impact vFunction made on customers  led us to the next phase of our product evolution…if these are the savings per application, how do we scale this to a factory model? How do we support customer’s hundreds or thousands of applications that need to be modernized within a 18-24 month cloud-migration project? Our latest release of vFunction includes a Modernization Factory Dashboard and Automatic Application Complexity Assessment feature that allow enterprises to prioritize, manage, control, measure, and track their full modernization process start to finish.

 With vFunction, leading companies around the world are already accelerating their journey to cloud-native architecture and gaining a competitive edge. Please join us, and let us help accelerate your journey, too.

The Agility Imperative Sparks a Modernization Moment

The January transition from 2020 into 2021 had us starting with resolutions, but with February here now, we need to move beyond resolution and onto more concrete actions. I’ve recently talked about and blogged on the “Agility Imperative” as an inflection point initiated by everything we’ve experienced in 2020, from COVID crises to business disruptions to failed cloud initiatives. Providing lip service to agility, digital transformation, and business application modernization caught up with many organizations last year when their more agile peers and competitors were better prepared and thus much more able to quickly pivot around a sudden change in how business was now being done.

Digital Transformation Projects Are Stalled

Being aware of the problem is the first step to addressing it, so let’s explore why previous digital transformation attempts have been seeing minimal gains.  A recent McKinsey study stated that:

“Only 14 percent of companies launching digital transformations have seen sustained and material performance improvements.”

The study summarized that four key issues were to blame:

  • Pilot stall: Companies have succeeded in implementing a few greenfield applications on public-cloud platforms, but the value derived from these programs has been limited. 
  • Cloud gridlock: Cloud initiatives become jammed up in long queues because IT cannot build out the automation or reference architectures required to use public- cloud-platform services in a secure, resilient, and compliant fashion.
  • No value from “lift and shift”: The migration of significant portions of the technology environment—largely by replacing on-premises virtual machines with off-premises ones without taking advantage of cloud-optimization levers—has failed to significantly reduce costs or increase flexibility.
  • Cloud chaos: Tech leadership does not have an aligned vision and does not provide the required guidance or management oversight, leaving developers largely to their own devices in configuring cloud services.

Finally, the report notes that multiple McKinsey surveys all indicate that large companies:

“…host 10 to 15 percent of their applications in the cloud but continue to host the core of their technology environment in traditional data centers.”

What are the key takeaways? To avoid the common pitfalls, it’s critical to focus on pilots that have clear business value – mainly your existing business applications that are driving revenue, customer interactions, and backend processing today. Invest in automation that accelerates these programs forward and move on from “lift and shift” shortcuts. Finally, leadership is critical so take the reins and be bold. Let’s dig in on all these a bit more.

Five Steps to Spark Your Own Modernization Moment

With this major Agility inflection point as a target, a series of 2020 “A-ha Eureka!” moments, and the conviction to move forward, it’s time to get started.  Here are five steps to spark a modernization moment in your organization:

1. Get Organized: Automate and Assess

This is not the time to form a blue ribbon, cross-functional committee. It’s not the time for analysis paralysis. To modernize you must use modern tools. Automation is a must, to accelerate, analyze, and thus organize your plan. vFunction automatically assesses the complexity of all your legacy Java apps – either in production or in the lab – detailing dependencies, identifying microservices, and specifying related resources and classes. This is essential to prioritize, plan, and estimate schedules based on real data – to target investments in business functions and domains that have real business impact. Try it for free – vFunction automatically creates complexity assessment reports that get you started with real, concrete data and actionable information.

2. Pick Both a Starting Point and a Destination

It is essential to know both where to start and where you are going. If you haven’t chosen a clear cloud native platform destination that is essential – for everyone in the organization to have a common goal and destination. This could be any of a number or Kubernetes platforms, a hybrid cloud option such as Red Hat OpenShift, and/or a Java microservices platform like SpringBoot. Most organizations have a growing backlog of legacy applications and are choosing Java applications as a starting point, based on their high business impact and value, their natural fit into new microservices platforms, and their refactorability using automation platforms like vFunction.

3. Do it. Lead it.

Agile engineering projects require agile leadership. Oftentimes, the development and IT teams are blamed for project failures due to cultural issues, but cultural change is not just a developer-only or IT-only problem. It is also a leadership problem. Many of these modernization projects stay in neutral because the risk and fear of change is too high for developers to take the leap. Thus leadership and management need to provide the air cover, the incentive, the tools, and the support to make this happen. A clear path, a set of tools to succeed, a shared goal, and the safety net to take risks – these are necessary leadership ingredients for a recipe for success.

4. Think Big

A “Modernization Moment” requires you to think big. It’s not enough to modernize just one application. The real goal is to modernize many if not all your applications, as fast and efficiently as you can! A massive backlog of these legacy applications creates a major drag on everything you do – not only on budgets, licensing costs, and morale, but on business agility, revenue, and value. vFunction is designed for scale, with an automated, self-service platform that can be applied across all your Java applications – to create a modernization factory with monoliths in, microservices out. vFunction provides that spark to move groups of application teams forward using automation and intelligence that creates a repeatable pattern and set of best practices that can be commonly used across your entire organization.

5. Bring Everyone Along

Legacy modernization needs to move to the front of the class as do the teams that are tasked with maintaining and modernizing these applications. As these applications get modernized, so do the teams that are modernizing them. Their skills expand to allow them to contribute to more cloud native projects and thus drive more revenue and impact. Modernization is not only good for the business, it’s good for your team, their morale, and employee retention. DevOps and cloud native surveys have indicated that transformative leadership can drive higher levels of employee engagement where these teams are “2.2 times more likely to recommend their organization to a friend as a great place to work, and 1.8 times more likely to recommend their team to a friend as a great working environment.

It’s time to get started. The agility imperative is here. Spark that modernization moment now for your organization.