Brian Seery
Last Updated: November 30, 2023
Do you feel stuck with your legacy system? Is your custom application limiting your business due to its inefficiency or lack of functionality?
We have helped numerous clients take the quantum leap forward with their application and their business by providing either a highly usable modern replacement or by maintaining what they already have and transforming it into the application everyone loves.
In this article, we will discuss the modern replacement application. What are the keys to a successful implementation?
We want the data from the legacy system, and we’ll need it up to the last minute of that application’s life. The data in the legacy system is the foundation of the new system. It defines the system functionality. A plan to keep the old system working while you build the new system requires a reliable process to keep the two systems in sync during development.
If you are building a new system, create a repeatable process of extracting the data from the old system and store it in a fresh new data model of a new database. A scripted repeatable process allows you to create a target database from the most recent version of the legacy database and run it as often as needed to allow working with the most up to date data while building the new application. It also gives you confidence you have all historical data when the day comes to go live with the new system and the old system is permanently shut down.
Our target new database is often SQL Server, and we have converted from databases ranging from FileMaker to Oracle and anything in between.
Every solution has its unique needs, however most of our solutions fall into the category of enterprise web applications. When building an enterprise web application, you will need to build front-end and back-end software modules and deploy the resulting application to a server.
The front-end and back-end architecture must be developed with maintainability in mind, and you must ensure the resulting system is reliable, scalable and supportable. A few years back, we started designing applications using the ASP.NET Core Clean Architecture while following the guidelines of the Vertical Slice Architecture. This architecture allows you to break down the work into smaller manageable chunks. You can focus on a single piece of the system that works on its own. For our customers, this allows us to continuously deliver useful features, efficiently and with immediate value. It also paves a clear direction for developers new to the project to contribute or maintain.
There is a lot that can be said about Clean Architecture and Vertical Slicing. If you want to read more, you can search and find many articles online and can also check out the presentation on Clean Architecture by Jason Taylor here and the presentation on Vertical Slice by Jimmy Bogard here.
Once the architecture is setup, it’s time to create your DevSecOps environment with Source Control Management, Servers and a Deployment Process.
The Source Control Management Project is created to track a history of the code changes and to streamline the development process for the team. A single cloud server instance can accommodate a good size enterprise web application and more cloud infrastructure can be used where necessary. A security group will secure the server enabling only a specific list of IP addresses that can access it remotely. Lastly, create a deployment process that will securely and consistently deploy the application to testing and production environments so new features and updates can be deployed at any time.
As the saying goes, a picture is worth a thousand words and so is a mocked-up wireframe detailing your intentions on how users will interact with the application for a given feature. You can visualize an application feature before coding begins.
The mock-up can be simple, or it can be interactive showing the navigation along with the actions that can be performed on the page and their results. The wireframe is a great conversation piece to review the new solution. It will often solidify the design idea, provide valuable feedback and have everyone enthusiastically anticipating the beautiful new application. The conversation around the mock-up may also lead to discussions for how other business inefficiencies may be solved with software.
A large application can be broken into modules that will allow going live with a new application that has only replaced a portion of the legacy application. This allows starting with the most demanding area to be improved, going live with that area, without having to wait for the entire application to be fully replaced.
Tackling Key #1 with the repeatable data import process and Key #2 with an architecture such as Vertical Slice will nurture this possibility. The business will also benefit by bringing just a portion of their total users onboard at a single time.
Nobody wants a sluggish application where every click follows a painful wait. The mock-ups mentioned in Key #3 cultivate an attractive and functional user interface design, however it is just as important to have that design be fast and performant. Every millisecond counts and it starts with efficiently performing database queries.
Efficiently performing database queries on a well-designed data model minimize resource usage and response times. Be sure to index where needed, avoid queries that will not use an ideal performance plan, and employ caching data outside the operational data when appropriate.
Choosing an architecture like the clean vertical slice architecture mentioned in Key #2, paves the way for a scalable, high performing, modular application that will stand the test of time and allow for new functionality to be added when the next business challenge presents itself.
Get unstuck! Start building your new application today so your business can scale, and do not be held back from the legacy system that got your where you are, but will not take you to where you need to go 🛫. Contact us today for free advice on your legacy system.