This post was co-written by Liza Ng and Robert Gallagher.
Application modernization is a critical step for many organizations looking to keep up with the rapidly changing needs of the modern business world. However, it's not always easy to know where to start, especially when it comes to dealing with legacy systems that have been in place for years and are understood by only a few key individuals.
In this article, we describe how VMware Tanzu Labs (formerly Pivotal Labs) worked with a government agency in Singapore to take on this challenge using a technique known as the Swift Method.
An elephant in the room: the legacy system
Everyone knows legacy systems need to be addressed, but nobody really wants to take them on… These systems are large, complex, and business-critical, and so they're intimidating to work with. There is often a sense of denial that any changes can even be made!
Legacy systems are successful because they are able to meet the critical daily needs and requirements of the business. However, as technology evolves, these systems may become outdated and unable to keep up with changing needs. Michael Feathers defines legacy code as code without tests, and this can be a major problem when it comes to making changes to legacy systems.
The government agency in this case study faced a similar issue with a legacy system that supported critical business processes, integrated with other business-critical applications, and was developed and maintained by third-party vendors. Over time, the codebase had become highly coupled within different business domains and contexts, making it difficult for developers to work on. This situation led to product development squads being slowed down by dependencies on the support team for this legacy system. The development squads also lacked confidence to make changes to this system themselves—given the low automated test coverage—and faced uncertainty about what they would be able to deliver for their own work streams independently.
A stopgap solution was the use of widgets, or micro front ends, to incrementally replace parts of just the user interface within the legacy system. This at least allowed teams to move forward with new business processes and requirements without heavily impacting the core functionality of the legacy system. However, this effort was still costly and did not progress towards fully modernizing the system by breaking it down into independent, modular components that can be developed and maintained separately.
From both a business and IT perspective, the ultimate goals were to be able to add new application features quickly and easily, without major impact on existing systems or processes, and also to innovate with newer technologies and processes rather than being constrained by legacy technologies. In our experience, these kinds of initiatives involve a great deal of trade-offs and decision making, with impacts on both business and IT. Therefore, in order to achieve those goals, it would be important for stakeholders from both groups to shorten feedback loops in communication and decision-making by collaborating closely, and adopting a lean and incremental approach that could provide data and feedback in order to more easily make those important decisions.
The Swift Method
To address these challenges, the government agency and Tanzu Labs together turned to the Swift Method. This is a set of activities that involves understanding how a monolithic legacy system supports existing business flows, designing a notional architecture to restructure the system in a way that can meet business requirements and be flexible to change, and make a plan to incrementally get there with buy-in from the business.
To understand the current state, the first step involved cross-functional stakeholders in an event storming activity in which we modeled existing business processes, incorporating both business and technical perspectives. This highlighted business domains around which we could design the future state.
Now that we had the big picture set, we needed to focus on the smaller aspects, so we identified and prioritized candidates for independent services and components, along with a thin slice of functionality that we could get started on. In a Boris activity, we modeled how these services might interact to enable that functionality, so that we could put together an actionable backlog of work. From there, the agency would be able to take a pragmatic approach, immediately implementing, evaluating, and iterating to refine the design and apply patterns to incrementally modernize the system.
Tanzu Labs have evolved this method through years of modernization experience working with businesses across a wide range of industries who all face similar challenges with legacy systems. Consequently, we were able to support the government agency in applying the Swift Method to their legacy system, resulting in a plan for a more flexible and responsive system that would be able to better meet the changing needs of the business.
This case study of one of our engagements with the Singapore government serves as a great example of how application modernization can be tackled effectively, even in the face of intimidating legacy systems. For a more detailed description, watch this presentation from VMware Explore Asia 2022.