If you’re like most businesses, you already have at least one workload running in the cloud. However, that doesn’t mean that cloud migration is right for everyone. While cloud environments are generally scalable, reliable, and highly available, those won’t be the only considerations driving your decision.
For companies considering their first cloud migration, there are a lot of factors that you’ll want to take into account, from the benefits and the risks, to the cloud service model and type that is right for your business. In this post, we’ll look at the high-level elements that you should consider as you contemplate a move to the cloud.
Potential Benefits of Cloud Migration
There are many problems that moving to the cloud can solve. Here are some typical scenarios that will benefit from cloud migration.
- Your application is experiencing increased traffic and it’s becoming difficult to scale resources on the fly to meet the increasing demand.
- You need to reduce operational costs, while increasing the effectiveness of IT processes.
- Your clients require fast application implementation and deployment, and thus want to focus more on development while reducing infrastructure overhead.
- Your clients want to expand their business geographically, but you suspect that setting up a multi-region infrastructure – with all the associated maintenance, time, human, and error control effort – is going to be a challenge.
- It’s becoming more difficult and expensive to keep up with your growing storage needs.
- You’d like to build a widely distributed development team. Cloud computing environments allow remotely located employees to access applications and work via the Internet.
- You need to establish a disaster recovery system but setting it up for an entire data center could double the cost. It would also require a complex disaster recovery plan. Cloud disaster recovery systems can be implemented much more quickly and give you much better control over your resources.
- Tracking and upgrading underlying server software is a time consuming, yet essential process that requires periodic and sometimes immediate upgrades. In some cases, a cloud provider will take care of this automatically. Some cloud computing models similarly handle many administration tasks such as database backup, software upgrades, and periodic maintenance.
- Capex to Opex: Cloud computing shifts IT expenditure to a pay-as-you-go model, which is an attractive benefit, especially for startups.
Potential Risks of Cloud Migration
While your specific environment will determine the risks that apply to you, there are some general drawbacks associated with cloud migrations that you will want to consider.
- If your application stores and retrieves very sensitive data, you might not be able to maintain it in the cloud. Similarly, compliance requirements could also limit your choices.
- If your existing setup is meeting your needs, doesn’t demand much maintenance, scaling, and availability, and your customers are all happy, why mess with it?
- If some of the technology you currently rely on is proprietary, you may not be legally able to deploy it to the cloud.
- Some operations might suffer from added latency when using cloud applications over the internet.
- If your hardware is controlled by someone else, you might lose some transparency and control when debugging performance issues.
- Noisy “neighbors” can occasionally make themselves “heard” through shared resources.
- Your particular application design and architecture might not completely follow distributed cloud architectures, and therefore may require some amount of modification before moving them to the cloud
- Cloud platform or vendor lock-in: Once in it might be difficult to leave or move between platforms.
What Cloud Service Model Do You Need?
Now that you’ve decided to try the cloud, you’ll have to choose the cloud computing service model that you would like to deploy it in. These are the most common service models:
Here’s where you’ll have to make an important choice.
IaaS is best for companies that don’t mind hosting their applications in third-party data centers, but would prefer to outsource the care of their physical infrastructure to concentrate more completely on developing, deployment, and monitoring.
However, if you prefer your applications to be portable, you might want to simply drop your code onto a robust PaaS platform that provides a full (and invisible) infrastructure environment. SaaS is a delivery model through which centrally hosted productivity software is licensed on a subscription basis.
|IaaS takes care of||PaaS takes care of||SaaS takes care of|
Public, Private, or Hybrid?
Assuming you’ve chosen a cloud model, it’s time to choose the cloud type. There are three basic options:
Public: Your resources are entirely hosted by a cloud provider like Amazon Web Services (AWS).
Private: You create your own private cloud using a platform like OpenStack or VMware’s vCloud.
Hybrid: Your resources are spread over both private and public platforms.
With its healthy mix of on-demand reliability, high availability, security, and reduced operations costs, hybrid cloud implementations can be attractive. Going hybrid can sometimes give you the best of both worlds.I’ll illustrate how hybrid can work through a hypothetical scenario.
Let’s imagine that your web app is quickly gaining popularity and users. In order to keep up with the growing demand, you need the underlying resource to scale up dynamically. During peak usage, you should be able to deploy maximum resources to serve requests, and when demand drops, you should ideally be able to simply drop unneeded resources to save costs. This is possible within a public cloud. But suppose the data your app gathers is highly confidential and can’t just be stored off-premise. This is where a hybrid solution can help. In this case, you can choose which components you want to live in the public cloud, and which will remain in your data center.
RightScale reported that enterprises are increasingly adopting a multi-cloud strategy (85%), and 58% plan to use hybrid clouds.
Assessing Applications for a Cloud Migration
Having chosen a cloud model and cloud type, the real struggle is about to begin. Now, it’s time to see if your applications are cloud-ready. Here are some factors that you will need to consider:
• Application design complexity: Some traditional applications are so complicated and tightly coupled that customers might not be willing to rework it. However, the foremost requirement for any successful migration is that the app should follow a distributed architecture and should be scalable by design. Tools like PaaSLane and Cloudamize can help you assess your applications’ cloud-readiness. AWS’s Migration Hub service is a one-stop shop for everything you might need tool-wise to discover and assess your application’s readiness for cloud migration.
• Integration complexity: Every application has its integration points, such as payment gateways, SMTP servers, web services, external storage, and third party vendors. It’s very important to analyze the impact your cloud migration will have on those dependencies. Sometimes you will experience unexpected connectivity or authentication challenges that you should identify and solve up front.
The most critical (and tedious) task is to identify all of those integration points. Since older applications might be poorly documented and the developers familiar with the end-to-end functional and non-functional details may no longer be available, you might have to go through each module manually. The task gets complicated if you’re considering migrating hundreds of applications currently running in your data center.
Many of these issues can be addressed through a combination of the familiarity your team has with the apps and an asset discovery tool (either open source or commercial). An asset discovery tool can help you identify entire server configurations within a network, along with connectivity details.
For example, say that you have a data center within a network that is hosting around 100 applications. A discovery tool can give you the bird’s eye view of the entire system. It can also provide granular details that can be helpful for a general capacity management assessment.
Some of the better-known asset discovery tools include BMC Atrium and HP DDMA. Cloudamize provides a tool that can perform automated discovery of applications and machines, and additionally perform automated application dependency mapping to discover dependencies between applications.
• The host operating system: Once you have decided on a cloud migration, it’s important to know whether you will be able to deploy your applications on the same OS. Your applications may only run on a specific OS (or OS release). If it’s not compatible with your cloud provider, then you need to find a workable substitute OS, a different cloud provider, or simply give up the whole project.
For instance, most cloud providers don’t provide 32-bit OS options and others might have unexpected subscription requirements. It’s best to do your research in advance.
• The application database: A database is obviously a critical part of any application. Customers invest a great deal on database servers and, often, licenses. Moreover, given the complexity and sensitivity of your data, you just might not want to move it right now: migrating petabytes of data is no trivial undertaking.
In either case, you should make sure that the migration methods you use are highly reliable and come with the possibility of roll backs to deal with any unexpected chaos. Most cloud providers offer their own migration services. Therefore, it’s very important to evaluate those services before pushing the “start” button. For example AWS provides their Migration Hub service – which in their own words “simplifies and accelerates discovery and migration from your data centers to the AWS Cloud”.
There are also many third party vendors providing data migration services, like Attunity CloudBeam, ATADATA ATAmotion, CloudEndure Live Migration, and Racemi DynaCenter
• Network: Most cloud environments don’t support multicasting, so if your application relies on multicast, then I would say “think twice.”
Many cloud providers have pricing calculators that can help you to estimate the real costs you’ll face after a cloud migration vs. your current costs. AWS TCO (Total Cost of Ownership) calculator and Azure Pricing Calculator are two options. Cloudamize allows you to compare TCO across AWS, Azure, and Google Cloud Platform (GCP), so you can decide which option is the best fit based on your current application workload profiles.
Proof of Concept
It’s always a great idea to build a small proof of concept (POC) before you actually migrate your workload to the cloud. I know such models won’t anticipate all possible issues, but it will give you greater clarity and understanding about the challenges you may face. Some of the things you should look for during your POC include:
• Performance comparisons with your existing application
• Complexity levels involved in migrating the application
• Network challenges that need to be worked out
• Cloud provider support evaluation
Addressing all the real-time challenges of a cloud migration cannot be captured in one post, but I have tried to address some common issues you should consider before you start the process. Share your cloud migration experiences with us in the comments below or take a tour of how we can help with your migration strategy on our Migration solution page.