Migrating On-Premise servers to the cloud

Are you planning on migrating your On-Premise servers to the cloud and don’t know where to start?
Here are a set of tips and checks based on our experience you should always keep in mind:

1- Are we migrating just the data or also the applications?

This is probably the first thing you need to understand because it will give you the estimated complexity.
If you are just migrating data we can consider it a mid-level complexity migration, because depending on how the databases are architected, how the data is splitted, the database engines and of course the amount of data you will have an interesting challenge.

Some cloud providers offer different tools to easily support your data migration, some of them also have physical devices when we are talking on migrating terabytes, or petabytes, like the AWS Snow Family (https://aws.amazon.com/snow/), where you can literally ask for a truck full of servers that will arrive your location, plugin and once the data is uploaded, bring those servers back to AWS facilities. 

But if we are also migrating applications, then your scenario changes completely. Migrating applications requires a comprehensive understanding of how they operate, including their programming languages, system architecture, integration with databases from the previous step, and the presence of multiple environments, among other considerations
The complexity is quite big.
You should also keep in mind that cloud providers offer different capabilities for making your applications more cost effective, so you might want to consider “transforming while migrating”, and again things are getting more complex.

2- GDPR, PII rules over the data we are migrating. Do we need anything specific?

This is a really important part. The cloud provides us the capabilities to have servers all around the world, but there are different laws and regulations depending on the countries you are operating in.
When talking about data you need to pay special attention to GDPR and PII, otherwise you might be in infraction.
Prevent by asking your legal department what laws or restrictions might apply and take this into consideration while choosing your servers in the cloud.
Keep in mind that in the cloud you might be sharing your servers with many other companies, although everything is under your private VPC, there might be some Data compliance scenarios that will request you for a fully dedicated server, and this will impact on costs.

3- IAC or backups we can use?

Infrastructure as Code (IAC) has been around for a long time but if you are migrating a really old server it might be that there is nothing, or at least, a few backup files somewhere.
While creating the new infrastructure, always think of IAC first. Even though the cloud might tempt you with their user-friendly web clients, avoid creating manual configurations. They are error prone and really difficult to replicate. Infrastructure as code and backups help you achieve migrations and configurations in minutes.

But what happens if you don’t have any backups and you have everything already on the cloud?
This is an ideal time to pause and consider implementing backups. There are many tools that help you export current configurations, and cloud providers often offer support for auto-generated snapshots. Take the time to explore , you might already be storing backups. If not go ahead and create a new one, as a rule of thumb, everytime you are going to modify something, re-create, migrate, it’s safer to have a backup.

4- Networking, Security, VPNs

Networking has always been a little tricky and can be really challenging on the cloud, depending on the things you are trying to achieve, especially if you need to connect with external on-premise servers, maintaining a hybrid approach.

But even if you are just configuring a simple network for a small project, there are special things you should consider, like the public and private components on your VPC. You don’t want everything to be public, make sure that everything is in the right place and you are not exposing critical parts of your system.

Always double check on security, attacks can compromise your server. Even though cloud providers offer many security mechanisms, a misconfiguration can lead to several problems. 

Make sure you are not whitelisting or opening ports to wide ranges of IP addresses.

If your budget allows, consider activating the enhanced security features offered by most cloud providers. They provide a vast subset of services and configurations that can effectively prevent and mitigate risks.

Whenever possible, set up and use VPNs. VPNs encrypt the data your computers and devices send to the Internet by diverting it to a private computer server. This masks your location and hides your IP address from websites. VPNs also reduce the risks of using a public Wi-Fi network by acting as an encrypted intermediary between your device and the Internet router.

5- Budget, deadlines

Budget and deadlines can be a real constraint, especially because every minute on the cloud without the right configurations in place can result in substantial expenses.

If you need to rush because you have a hard deadline, make sure you are setting cost alarms. All cloud providers allow you to create budgets and trigger notifications or set up certain actions when you reach a specific threshold. As a good practice, it is recommended to make sure this is the first thing you do after creating your root user account to avoid surprises later on.

Coming back to the topic of deadlines, it is understandable that sometimes we are pushed to take shortcuts. We’ve all been there, rushing to get things done. However,  make sure you don’t compromise critical aspects, vulnerabilities can be easily exploited and data breaches or even major issues can be waiting around the corner.

6- Metrics

Monitoring and analyzing metrics is key, there are many tools already implemented with most of the different cloud providers to help you with this.

By monitoring and analyzing these metrics, you can ensure that the cloud resources are used efficiently, applications run at peak performance levels, costs are managed effectively, and that they meet regulatory and security requirements.
Metrics provide valuable  insights on various aspects of your cloud infrastructure and help you understand what things you might need to tweak to get the best result.

It’s important to note that some cloud providers might add an extra cost for certain types of metrics, for the amount of logs you are storing or the retention period. You should always keep an eye on this. Yes metrics are good, but you don’t want to be spending too much money on them.

Final thoughts

It’s always a good practice to double check and re iterate through the things you have migrated. There may be some considerations you didn’t take into account. For example you may have chosen a certain instance type and after analyzing the metrics you realize there are some tweaks you can make to save some money or have a better performance.

Depending on the cloud provider you choose you might find some alternatives to accelerate or enhance your current systems.
While the process can be tricky and complex, and there are many variables in place, it is not the end of the worldOur recommendation is to break it down  into small iterations (the classic agile approach) . Migrations are not an easy thing and there are always unplanned scenarios.
Evaluate at each iteration what is the best approach for the upcoming parts to be migrated, and let it roll.