Executives at established companies know the challenge. To remain relevant and competitive in today’s digital world, it’s essential to modernize their companies’ aging technology. Part of the challenge is knowing where to start and how to go about it without disrupting day-to-day business operations.
At Thoughtworks, our approach to building competitive digital platforms promotes the continuous integration of digital capabilities with existing systems. We embrace dependency management and containment (rather than maintenance and replacement) of legacy systems. Our approach starts by focusing on your customers:
Chart your course: Identify two or three key customer service goals for your digital platform
Establish your foothold: Guard the continuous delivery of these experiences against systemic and organizational threats
Forge a new frontier: Add new capabilities and microservices that turn the platform into an indispensable business building block
This phased approach makes for a smooth migration from aging core IT systems to a business-critical digital platform. It also enables CIOs to transform the company into a powerful digital player while mitigating the operational risks that commonly haunt large-scale IT transformation projects. But this isn’t a one-off exercise, after each iteration we suggest starting again, looking for further improvements, strengthening building out your digital capabilities
Chart your course
Mature companies have spent years investing in new business capabilities, integrating acquisitions, and updating technology stacks to deliver best-of-breed products and services. Understandably, to protect their investments (and to sidestep organizational politics), they struggle to find ways to patch over the shortcomings of their IT systems. While this is ok in the short term, over time, these workarounds become either unsustainable or too resistant to change. As Buckminster Fuller put it: "You never change things by fighting the existing reality. To change something, build a new model that makes the existing model obsolete."
Our approach encourages IT organizations to quickly iterate, launch customer-facing applications while minimizing changes to slower back-end systems. Instead of looking to improve those systems, we advise our clients to focus their digital eﬀorts on delivering compelling customer experiences that will drive top-line revenue: Prioritize two or three differentiating customer experiences; identify what capabilities your digital platform needs to deliver those experiences (as well any dependencies on legacy systems); and then facilitate a fast-track environment in which a dedicated team with digital skills can quickly build and bring those experiences to market.
Technically speaking, these initial digital eﬀorts are supported via digital technologies (such as facades, gateways, or adapters) that act as a 'shock absorber' between two systems running at different speeds. This ensures that neither system compromises the other’s speed and performance.
We used this approach with a client in the telecommunications industry, to enable it to enhance its customer offerings for new handset and services bundles. These bundles were the cornerstone of its new customer experiences, and deployed on a new digital platform, using digital facades — a lightweight API wrapper, deployed on the digital platform with minimal orchestration or translation — to integrate with its back-end legacy fulfillment systems. This approach enabled our client to respond quickly to consumer demand and reduce call center costs while allowing the business end to operate as usual.
But this was just the first phase. Our client still only had the bare bones of a digital platform: if it had stopped there, it would have essentially only added complexity through the API facade. For companies to reach the next level of digital maturity, they need to push on further to deliver changes to core capabilities.
Using our phased approach to modernizing IT results in a digital platform that delivers value early and gradually evolves into a business-critical building block
Establish your foothold
Of course, running a traditional production environment, managed for scalability and reliability, alongside API facades, is a challenge. At the organizational level, you’re effectively managing two 'businesses' separated by a wall of seemingly incompatible methods and objectives. On one side, a team immersed in an agile environment and encouraged to experiment and iterate (fail, fix, and move on), works on daily or weekly release cycles; on the other, a seasoned IT team operates at a more moderate pace to keep the business running.
For the digital platform team to evolve, it’s essential to protect and reinforce the API facades, so that you have a foundation in place. Here are four key areas to consider when running dual systems:
Protect against technical limitations and constraints. The interface between your new digital services and legacy back-end is a potential weak spot. For instance, there may be a mismatch in the number of requests each system can handle; you may also face corruption of business logic or data models if changes to backend systems cannot be avoided. Techniques such as throttling and circuit breaking can make your facades more robust, and while adapters and gateways can act as anti-corruption layers.
Protect the platform’s rapid release cycles. The digital platform supports release cycles that are likely to be far shorter than those of legacy systems. But you can’t let legacy drag you down. Instead, techniques such as feature toggles and contract testing can support continuous delivery while running legacy systems.
Protect the platform’s value proposition. On the organizational level, before you can expand the digital platform with new capabilities, you need to incrementally build trust within the wider organization. You can achieve this by reinforcing the platform’s value proposition through a series of quick wins — keep adding services to make the platform more robust and avoid challenging organizations responsible for back-end fulfillment systems until the digital platform is trusted.
Once the digital platform is decoupled from legacy release cycles and protected from legacy business logic and principles, you’ve secured its value. Now, you can safely take on the larger battle to consolidate and re-platform costly legacy systems, without accruing any technical or architectural debt.
In some organizations, a well-enforced barrier between a digital platform and legacy systems may be a good solution for several years. The digital platform can be used for ongoing experimentation, to support new user experiences and enable new channels, while the enterprise continues to adapt to the changes.
In some cases, organizations stop at this point: they have new robust digital capabilities, and are happy to avoid the perceived complexity of phasing out legacy systems. But if you’re committed to differentiating your organization on your core capabilities — and not just superficial user experiences — further effort is needed. Strategic change is fundamentally based on changing what you do and how you do it organizationally.
Forge a new frontier
With a firm boundary between the digital platform and traditional production systems in place, you can start implementing microservices with distributed data management capabilities of their own. Here are a few integration guidelines to consider during this final phase of your digital transformation efforts:
Apply the “open/closed” principle. Extend the capabilities of the digital platform such that “software classes, modules, functions, etc. should be “open for extension” and mark the existing system as, “closed to modiﬁcation.” From here on out, all enhanced and net-new business capabilities should be created only on the digital platform, as extensions to legacy systems.
Transition from the system of record to a system of eventual consistency. With a microservices architecture in place on the digital platform, the existing ‘system of record’ can be transitioned to a system of eventual consistency. At that point, the digital platform increasingly takes on responsibilities traditionally captured by the aging back-end systems, but information is still flowing to those systems 'behind the scenes' until they can be contained or replaced. This enables true decoupling of dependencies.
Expose events or messages from existing systems. To support the two previous efforts, you may need to open existing systems so that their data is exposed. Or you may need to ensure you have a consistent view of data, where fragments may be stored in different systems. Rich integration patterns can be achieved by exploring noninvasive ways to expose events from legacy systems. For example, many COTS and SaaS systems support notiﬁcations, and many custom-developed systems rely on databases that can push messages or notiﬁcations. If these changes are considered via an open/closed approach, external systems can eventually be completely decoupled from the digital platform.
The success of your digital transformation eﬀorts hinges on your ability to identify and manage the digital platform’s dependencies on legacy systems. If you’re not careful, you risk compromising the delivery speed of the digital platform and, depending on the circumstances, even see it fail. Often modernization and transformation initiatives only succeed after multiple attempts — and when attempts are initiated and then abandoned, the capabilities envisioned for the modernized platform are added to the backlog of, or re-implemented in the legacy systems that they were intended to "strangle."
Understanding and managing legacy dependencies also provide opportunities for new value chains and decisions (such as modernization or replacement); first, however, you must establish and reinforce both the platform’s capabilities and organizational trust.
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.