If your company is thinking about migrating to Amazon Web Services (AWS), you may feel a bit… overwhelmed. Switching to the cloud is always a challenge. But we have good news: you don’t have to learn from your own mistakes anymore!
After completing numerous migration projects at fireup.pro, we can share experiences and give you some guidelines to make your life this much easier. What you’ll see below comes from someone who took part in migrating to AWS from other hosting service providers. The principles apply to any instance of switching to AWS, from another cloud, or local solutions.
Start from the Business Perspective, Then Move to Technical
1. Proceed step by step
First of all, think about what your organization wants to gain, really, and if a full-on change is a way to go. Probably not. That’s why it usually pays to take the path of small victories. A one-time revolution can backfire horribly, considering all the factors you have to control at all times. It’s going to make you less focused, and it WILL lower the quality of your migration.
You should take an Agile approach. Research your goals, and work toward them by the way of small improvements. Your organization will get the best ROI on your infrastructure if you focus on catching up with needs immediate attention. We’d advise training all the participants, and making sure they understand what this migration is about. Aim at frequent and immediately beneficial gains that can be improved in future iterations. Kanban, for example, fits well here, where you can use specialized and dedicated teams, so-called “Task Forces“.
By this logic, you can consider lifting and moving most applications before trying to change the platform or the re-architecture strategy. This way you can quickly go outside your local environment and score some quick wins, such as reducing your costs. You do the heavy lifting first and get ready to focus on the important and delicate part of your work later.
2. Build a solid foundation
You now know how you want to approach your migration. It’s time to lay the groundwork. I’d say you should consider implementing as much as you can using the Infrastructure as Code approach (IaC). This way you’ll be able to re-implement corrupted assets, track changes, and control the source versions. Not to mention that the implementation will be super fast.
Take a closer look at the Kubernetes service, managed by AWS. Its orchestrator will probably become the industry standard. You’re going to have to design and configure a network to connect your cloud with the local environment, so go for a wide addressing scheme (16 rather than 24). And leave some space for the future. Active Directory Federation with SAML and role-based access will simplify user permission management in AWS. Use IAM roles for EC2 permissions for user access and secret keys whenever possible.
The good news is that you can automate a lot of stuff. Compiling, testing, implementing – this can be handled within the stream of constant integration / delivery (CI/CD).
If all of this is still new to you, try to launch it on Docker containers first, and use their scalability and affordable calculations.
3. Choose what to migrate
It depends on the size of your organization. You can migrate dozens or hundreds of apps. Migrating your entire portfolio may take months or even years. But in reality, you don’t have to migrate everything, at least not immediately. Some old systems may actually cause trouble when migrated. And even if you want to migrate them, do you want to simply lift-and-shift, or do some modifications and introduce new architecture and functions native to the cloud?
All of the above will have an effect on your wallet. That’s why you should determine the business and technical context of every app. Establish the stakeholders, analyze the current state of the app, and all the potential risks and gains of the migration.
The other thing is to choose which apps are worthy of their own engineering cycles. It’s the question of maxing out their capabilities versus putting the minimal effort (and cost). Anyway, every app should have an assigned part in the grand scheme of things.
4. Discover your dependencies
The big challenge of migrating local apps to a new environment is their configuration. Usually, the people who created an old app are no longer with the organization. And the documentation might be outdated, or even not exist at all.
So, server utilization data and dependency mapping are important early first steps in the migration process. Your biggest ally is a solution to collect data from the local system to analyze their current state – AWS Application Discovery Service (ADS). It identifies network dependencies and collects the following static configuration data: Server hostnames, IP addresses, MAC addresses, disk resource allocations. Additionally, it collects the utilization data for each VM and computes average and peak utilization for metrics such as CPU, RAM, and Disk I/O.
5. Mind the hurdles
There’s nothing simple about cloud migration, and you will run into some problems. Here’s a couple of examples, and how you can deal with them.
Moving huge amounts of data
Problem: You have terabytes of data and gigabytes of daily changes, and you’d like to migrate it to AWS. How do you even start?
Solution: Consider the AWS Import/Export service. With AWS Import/Export Service, you load your data on USB 2.0 or eSATA storage devices and ship them via a carrier to AWS. AWS then uploads the data into your designated buckets in Amazon S3.
Problem: How do you migrate databases to AWS quickly and securely?
Solution: Use AWS Database Migration Service. The source database remains fully operational during the migration, minimizing downtime to applications that rely on the database.
Making the app available at all times
Problem: How do you preserve the state of the application when the machine instances are always changing? And how do you make the connections with your app nice and stable?
Solution: Use the Amazon IPSec tunnels and AWS Direct Connect to maintain a connection between your network and the VPC. Combined with replication, or service for managing availability, it’s an effective solution.
Knowing if it’s really worth it
Problem: How do you measure the performance of your migration, and determine if it’s profitable or just a money sink? And how do you react to quick changes in the cloud environment that forces you to include new services or scale your apps?
Solution: Well, that’s what we’ve been talking about a couple of paragraphs above. You have to make a business case for your migration. Determine the place of every app in your strategy. Design an economic model. The AWS calculator might be just the thing you need.
Adjusting the security solutions
Problem: You move your apps to the cloud and suddenly, their security solutions and strategies don’t work anymore.
Solution: You need to establish the security requirements for every app that you migrate. There’s a high chance that AWS already has tools and services that will provide everything you need to successfully replace your local technologies. Then, it’s a matter of creating a plan of deployment and making sure that every single app is prepared for the migration.
Moving On-Premise Data & Managing Storage on AWS Challenge
Problem: How do you move your data smoothly from your current on-premise location to the cloud? Maintaining user experience—higher latency and insufficient bandwidth can have an unfavorable impact on the performance of your application. How about maintaining resiliency and high availability for data volumes on the cloud?
Solution: Enterprises should consider solutions such as AWS Direct Connect, which can help them achieve highly resilient, dedicated connections between their Virtual Private Cloud (VPC) and on-premise infrastructure. This can also help synchronize your operations and create a centralized point of visibility. You can also use Amazon CloudWatch to reduce the impact of migration on user experience. CloudWatch can help identify performance issues in real-time and address the root cause before users are affected.
Wow, migration sounds like quite a hassle
If you get this impression, you are absolutely correct. Migrating to the cloud is hard. But it can bring incredible benefits to the users of your products, and to your company. Cloud isn’t the future. It’s the very present. And with people experienced in conducting migrations sharing their insights, you can make it through with as few problems as possible. Good luck!
fireup.pro is an official Amazon Web Services Partner in the area of implementation of cloud computing. As an official partner, fireup.pro has the necessary knowledge, know-how, and AWS certifications, to provide services of the highest quality. Read about how we became the AWS Partner.
The presented content was written by our experts and is based on our company's experiences.