Upgrading legacy systems iteratively – the process-driven approach
Head of Technology, Software Consulting
Anyone who has been involved in running a business with custom digital solutions has probably run into problems when that solution gets outdated. It becomes expensive or sometimes practically impossible to develop new features or integrate new services to your system. Fixing problems and handling incidents becomes slower and slower and it’s an unpleasant chore for the developers. You may also become overly dependent on certain developers or third party services.
With all these challenges, it may feel tempting to start from scratch and get rid of the legacy system completely. However, this approach often brings a new set of problems. The rewriting process will most probably be an extensive, long and expensive undertaking. Often, you’ll get stuck trying to implement the last, most difficult parts of your legacy system. Furthermore, you won’t get any benefits from your new system before it’s finished. The project may take so long that once it’s finished, even your new system is outdated!
Here, I’m going to explain how process-driven development can be a great help in upgrading your system iteratively. The idea behind it is that business processes are separated into their own layer, which controls the implementation of the business logic, whether it’s in legacy code, a new system, or a third party service.
The benefit of this approach is that we can concentrate on improving those parts of the system that will yield the biggest benefits with the least amount of work. Additionally, once the processes have been modelled, we have tools which give you better visibility over your digitized business. This will make it easier, for example, to handle incidents and gather business intelligence.
The process-driven approach in practice
We start from a situation where the whole process is executed within our legacy system (Fig. 1). The first thing we need to do is define some key tasks this process is implementing. For example, in an order process, these tasks could be billing a customer, sending the order, and notifying the customer. Next, we can model this process, run it in a process engine and integrate the process with the legacy system. Now, we have taken the control of the business process out of the legacy system and into our process engine (Fig. 2).
“Instead of having bursts of huge rewriting projects every few years, you can always be developing the part of your business which yields the best results.”
Depending on the structure and quality of the legacy code, the integration may prove to be difficult. But in all likelihood, it’s a smaller and more predictable project than completely rewriting the whole system. Even though implementation of the tasks is still in the legacy system, we already have better visibility of the business process, which can help with business analysis and problem solving.
Now that we have the process control separated from the legacy code, we can start implementing the tasks in new ways. We may want to build a new system, use microservice architecture, or try to find a service that implements the feature that we need (Fig. 3). Whatever we choose, the whole process is controlled by the process engine. It’ll also be easier to change the implementation in the future, if you find a better solution.
Develop the parts of your business which yield the best results
One important aspect of this method of working is that we can concentrate on the parts of the process which give us the best results. In the order process example, we could start modelling and improving the billing of the customer and leave the logistics to be handled in the legacy system. This way, we don’t need to deal with every part of the legacy system before we get to the benefits. In fact, we may not even need to rewrite the most difficult parts of the code, since they may become obsolete before we really need to deal with them.
Process-driven development makes it easier to continuously develop your digital business. Instead of having bursts of huge rewriting projects every few years, you can always be developing the part of your business which yields the best results. This makes it easier to maintain a consistent development budget and analyse the ROI of the improvements. It’s also much faster to react to any changes in the business. The same benefits apply even when the new systems you’ve built or the new services you’re using become obsolete.
Aleksi is a full stack developer and software architect with 12+ years of experience working with both public and private sectors, telco, ecommerce and culture. What drives Aleksi is the desire to create technological solutions that enable better and easier life for people.
If you want to have a chat with us, please book a meeting with Aleksi via Calendly:
Gutly Foods is building an automated business from the start
Gutly Foods is creating a business where all processes are digital and can be automated. We’re helping to design an architecture that scales with their business plan.
Drop us a message to discuss your project
We’ll get back to you as soon as possible.