Cloud computing is becoming the norm for software development, but legacy applications are still a problem in many cases.
After spending a lot of time in the fog, we’ve finally reached a stage where our thinking is more cloud-oriented. This is great, especially when we start developing software from the ground up or from the ground up, where “everything is easier and the sky’s the limit.”
However, as we well know, software development is not a bed of roses, and for the vast majority of the time we are dealing with legacy software. Then some questions usually arise:
- Should this legacy system be moved to the cloud?
- If the system is transferred to the cloud, how will it work afterwards?
- Is the cloud so magical? Will my software (which has never scaled) become ultra-scalable when it comes?
The answers to these questions are related to the next steps than the migration to the cloud itself. Let’s better understand how to make it as less traumatic as possible!
Pattern for the choke
One of the most common things we do when we do a lift and change is to upload our app to the cloud and leave it there without any changes.
At first, it may feel like a job well done. But over time—when the bill comes at the end of each month and the promise of scalability and elasticity isn’t fulfilled—doubts begin to creep in: was moving the legacy system to the cloud the right decision?
Don’t worry if this is your current reality, it’s more common than you think! Let’s see how to solve this problem.
There is a pattern created by the legendary Martin Fowler, a big name in software architecture, called StranglerFigApplication (available here).
It just says that you only have an outdated system at first. But it is possible to gradually choke out the legacy functionality until the legacy as a whole becomes modern software, as the image below shows.
How to strangle my legacy and upgrade in the cloud
Every time we do a lift and shift, we use the IaaS model as a foundation – since we usually put our legacy software in VMs (virtual machines) first. To better understand cloud service models, see our article.
After that initial step, however, things get more interesting. In order to use all the computing power that the cloud has to offer, we first need to map our legacy features that we can “easily” migrate to PaaS or SaaS models in the cloud.
Let’s move on to some examples:
Imagine you have an application that uses a store of unstructured data (images, video files, text, etc.).
In the long run, this feature can compromise your app’s storage. But the worst part is that it makes it impossible to have an exclusive scope of file access.
Let’s say you find that your application takes longer to access these files because it needs more computing power to scale. In this case, you will need to increase the processing power of the entire virtual machine (called vertical scalability), since all the files are on the same virtual machine.
The first step to using the best that the cloud has to offer would be to move these files to cloud storage (S3 on AWS and Azure Storage on Azure).
With this you:
- separate files from your application;
- configure access to these files in the best possible way;
- uses their redundancy, changing files with the least access to cooler layers;
- paying less for file storage as a result.
In this simple example, in addition to starting to decouple your application, you will also probably start saving a good amount of money.
Another example: Let’s say your application has a job (a recurring process) that runs every day at a certain time. Most likely you are using a service in the database or something in the application to execute.
However, this service is tied to your application and can easily be moved to a standalone service in your cloud using a serverless architecture as a solution (Lambda on AWS and Azure Functions on Azure).
Both AWS and Microsoft Azure provide 1 million free launches per month. In other words, if your work does not exceed this number of executions per month, you will not have zero labor costs. Another clear indication that changing your legacy can produce great results in the cloud.
As we’ve seen in this post, changing your legacy is the key to taking advantage of all the benefits the cloud has to offer, allowing your application to become more scalable, more dynamic, more secure – and most importantly, more cost-effective.
To learn how Venturus can help you transform your cloud legacy, contact one of our experts.