Contents1. Why does IT infrastructure modernization matter? 2. How to check if you need legacy app modernization? 3. What to start application modernization with? 4. Why is software architecture a #1 thing to check? 5. Why is application infrastructure the next one to audit? 6. What are the DevOps benefits for app infrastructure? 7. Billy.dk case study: Modernization of SaaS accounting solution 8. Pro.con application modernization case study: Migrating to AWS cloud 9. Let's sum it up!
Why does IT infrastructure modernization matter?
Owning a legacy system is like driving a twenty-year-old car. With constant maintenance it still can take you from point A to point B. However, there are several limitations:
- Cost and time efficiency: it takes way more fuel and time than a new car to complete this journey.
- Reliability and future planning: you can’t rely on it in case of an emergency, and shouldn’t plan anything important on the day of your trip, as the vehicle may just break down any time.
- Scalability: it was a nice car for a single person, but now a family with three kids and two dogs can barely squeeze in.
- Convenience: the comfort may be somewhat limited, e.g. by having to roll down the windows instead of turning air conditioning or climate control on. And yeah, you do get that feeling of being a lucky guy when you are able to roll the windows back up, for often it’s not the case.
- Maintainability: with each passing year it's harder and harder to find a good mechanic who is well familiar with that car model and can repair it. The spare parts are also becoming more rare and difficult to get. This results in more time spent on maintenance and its growing cost. At the same time, the reliability of the vehicle decreases.
Legacy apps users face very similar challenges. Issues with software performance, scalability and support are some of their most frequent concerns. And just like with the old car, the problems won’t magically get resolved by themselves. It’s necessary to consider either the software upgrade or a more substantial IT infrastructure modernization to improve the system’s efficiency, performance, and overall user experience.
How to check if you need legacy app modernization?
After you have been using particular software for some time, you may think that it is ok as it still works just the way it has always used to, and no application modernization services are needed. However, even when no obvious dysfunctions are spotted, the business needs and requirements are likely to grow out of the primary functionality.
The changing processes and business growth may require more software capabilities. Thus, sticking to the outdated automation tools holds you back from reaching your goals and outperforming your competitors.
That’s why, when it comes to legacy apps modernization, it’s important to
- Define the up-to-date functional requirements.
- Check if the software satisfies those requirements. Assess the app’s condition regarding its
- tech stack
- code quality, etc.
- Assess the app usability. Try to answer the questions:
- Does the main functionality cover your business needs completely or are there any processes that still need to be automated?
- Do the users face any difficulties while interacting with the app?
- Are there any redundant features that are never used?
- Define the expected number of users and estimate its possible growth over time.
- Having done all of the above, define the priorities of what should get modernized first.
What to start application modernization with?
Usually, the most obvious reason for legacy app modernization is the need for new functionality. However, before getting down to its development, it’s necessary to make sure that software architecture and IT infrastructure are intact to support all the required features.
Just like in the case with the old car: there’s no point in investing into a new audio system when the car engine is broken down and some other details are falling apart.
Why is software architecture a #1 thing to check?
Software architecture is the foundation of any application which defines its structure and, hence, the main principles of its operation. It must be selected before app development, and is seldom a subject to change during legacy system modernization, for that would lead to a substantial app rebuild. However, there are cases when such a software overhaul is much needed.
Monolithic and microservices are the two software architecture types. The first one has tightly interconnected components, which means that adding new functionality may influence the already existing features. There’s no risk of doing it with proper QA support. Monolithic approach is perfect for simpler solutions. It provides straightforward logic along with ease of testing and deployment.
Migration to microservices should be considered when your application experiences significant branching and growth. Unlike monolithic architecture, microservices offer modular app structure, providing more independence for different app features. For example, it allows using separate databases for app modules, eliminating the problem of data segmentation.
Besides, adding new functionality becomes much easier, as it’s no longer a single codebase for the whole application. Moreover, there are nearly no tech stack restrictions as long as you can find a way to enable the necessary “communication” between the modules.
Why is application infrastructure the next one to audit?
Application infrastructure is the backbone of your software. It consists of all the components that enable the app functioning, including the computational resources, code, databases, etc.
It’s necessary to have it properly configured and optimized to
- have the right number of computation capacity to ensure excellent performance, scalability, and prevent paying more than needed
- timely spot any (potential) issues so that they can be resolved as soon as possible
- ensure fast recovery from app downtimes if they occur.
Regardless if your computation resources are located on premises or in the cloud, IT infrastructure audit should be carried out regularly. Just within 1-3 hours it will provide you with the information about the infrastructure performance, its daily cost, app traffic and peak server loads, log of errors, security, and more. It’s the first and a very important step for optimizing legacy IT infrastructure, so it becomes a reliable and efficient foundation for your application.
What are the DevOps benefits for app infrastructure?
Implementation of DevOps practices is a great way to modernize the legacy IT infrastructure, achieve and maintain its good performance, reliability and scalability. Moreover, it makes it way easier to extend the app’s functionality whenever needed.
DevOps approach consists in establishing uninterruptible and smooth software development mostly by essential automation of all of its stages and transitions between them. To make it possible, DevOps engineers
- Design and implement cloud IT infrastructure (unless there are business-specific restrictions when a part of or whole infrastructure must be located on premises). Cloud environment, e.g. AWS Cloud, provides high flexibility, numerous tools for automation, support of a large and active community, security, cost efficiency, and more.
- Create and configure the development, testing and staging environments. AWS allows doing it with a standardized set of tools depending on the app requirements, and helps to achieve predictable and reliable software development.
- Set up CI/CD pipelines. Continuous integration and deployment provide automatic testing to each new piece of code and ensure its integration with the app. This time-saving approach improves software quality while decreasing the cost and effort.
- Implement application containerization, e.g. with Kubernetes. It provides great flexibility and ease of application management, including deployment and roll-back processes, relocating app on different clouds, traffic distribution for stable operation, and much more.
In general, the DevOps services are aimed at creating and maintaining a secure and robust IT infrastructure. In case the legacy system is based on premises, often it makes sense to migrate it to cloud to make the most of the above-mentioned DevOps benefits. It’s absolutely necessary when one plans to migrate the traditional app to SaaS.
Billy.dk case study: Modernization of SaaS accounting solution
Today Billy.dk is the third largest and one of the most popular accounting platforms in Denmark. However, when Billy’s team reached out to Apiko, their software was not among their users’ favorites. The web platform most often was used just before the deadline for submission of some financial reports and documents. As a rule, paperwork is not exciting, and doing it at the last minute only adds stress.
Initially built to be a user-friendly solution, Billy mobile app was supposed to give an opportunity to complete those reports on the go. Doing it one step at a time could have resolved the issue. However, wrong app architecture choice, questionable code quality, lack of intuitiveness were some of the things that prevented it from happening.
As Billy is a SaaS accounting solution, we rebuilt the app from scratch and changed its architecture from monolith to microservices. This allowed to
- easily add new features
- achieve high flexibility
- make the solution highly customizable for the customers.
Cloud infrastructure enabled implementation of an AI module. It uses text and image recognition to scrape necessary data from the uploaded photos of banking receipts. It significantly improved the user experience and solved the issue with data accuracy as there was no more need to enter these data manually.
Billy is constantly evolving, so switching to microservice architecture was the right choice for implementing new features and adding more integrations. It allowed the team to automate accounting as much as possible, making it an easy and user-friendly experience.
Pro.con application modernization case study: Migrating to AWS cloud
Our client, pro.con company, specializes in mobile communications and has successfully been on market for over 25 years. They reached out to Apiko to get help with new features development for the pro.con B2B sales management software. It was a legacy system with increasing downtimes whose maintenance was time-consuming and costly.
Its infrastructure was located completely on premises and fixing it required getting familiar with its numerous peculiarities. Besides, the code needed optimization and debugging. Our first software modernization steps were
- Legacy code refactoring
- Database migration from MySQL to MongoDB
- Tech stack update by adding React.
We proceeded to the development of new features, but there were constant challenges with maintenance of the on-premises IT infrastructure. Migrating to the cloud seemed a too complicated process to our client, but eventually he decided to give it a try.
Although it is an elaborate task, it’s completely risk-free when you do a thorough preparation. That’s why we came up with a detailed cloud migration plan. Implementing it step by step included
- preparing app architecture, infrastructure and code so that they support AWS cloud services
- developing PoC solution to make sure the application performs well in the cloud environment
- migrating the app data and the app itself to the cloud
- setting up app monitoring and performing the app tests to detect any possible issues and prevent application downtimes.
Migrating to AWS cloud resolved numerous issues.
- Performance and scalability: distributed workloads make the application highly available, so its performance is not affected at peak loads. The app can be scaled within a few minutes without having to purchase new on-premises servers and dealing with their integration into the system.
- Maintenance: introduction of any changes to the app infrastructure, as well as joint cooperation on it are made easy with Infrastructure as a Code (IaaC) approach.
- Reliability and security: app testing, monitoring and alerting are automated, ensuring timely detecting and fast resolving of any potential or current issues. AWS offers a high level of security preventing data breaches and protecting from malware attacks.
- Extending the functionality: DevOps practices like CI/CD and app containerization streamline the deployment of new features. Cloud environment also makes the integration of third-party software much easier.
- Data processing: AWS allows processing and exchange of large data sets, which, for example, enables implementation of the AI-based features.
Let’s sum it up!
Legacy application modernization is a worthy investment. When done right, it will surely pay back bringing large business value improving both app performance and user experience. As some of the core legacy issues may be not obvious, IT infrastructure audit is a good way to make sure you have not skipped them.
Migrating to microservice architecture or to a cloud environment, described in the case studies, are complex procedures that require thorough planning and professional diligence. It’s crucial to make sure that the app logic and all data remain intact and well organized.
In case your team has no related experience, it’s better to delegate legacy migration to professionals. Feel free to reach out to Apiko team. We are glad to share our experience and offer assistance at any stage of your project: from legacy system assessment to application modernization.Case Studies