Are you new to Cloud Computing? Playing with the possibility of a cloud migration? This post isn’t a complete guide, but I’ll try to cover some of the basic thought process you’ll need to make an intelligent decision, and also some of the practical analysis that needs to be done before you actually take the leap.
Will a cloud migration be right for you?
Moving apps and services to the Cloud is a significant long-term trend, but 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.
While making this decision your thoughts should be totally unbiased, so that you can make right choice. I know it’s not possible to have some predefined set of rules, but let me try to cover some points which may help you to get closer to the decision.
Possible benefits of a cloud migration
There are many scenarios that can take advantage of the benefits of a cloud migration.
- Your application is experiencing increased traffic and you’re finding it difficult to scale resources on the fly to meet the increasing demand.
- You need to reduce operational costs, while increasing IT effectiveness.
- 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.
- You’re finding that keeping up with growing storage needs is becoming a problem.
- 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.
- Setting up a disaster recovery system for an entire data center can sometimes nearly double the cost, and also require complex disaster recovery plans. Cloud DR systems can be implemented much more quickly and simply while allowing far better control over resources.
- Tracking and upgrading underlying server software can consume a lot of time. In some cases, a cloud provider will take care of this automatically. Some Cloud Computing models similarly handle many administration tasks like database backup, software upgrades, and periodic maintenance.
Possible risks of a cloud migration
The possible risks and drawbacks associated with cloud migrations must definitely not be ignored. Consider these points.
- 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 everything is running fine with its existing setup, 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.
- You might lose some transparency and control while debugging performance issues, because hardware is controlled by someone else.
- Noisy “neighbors” can occasionally make themselves “heard” through shared resources.
- You particular application design and architecture might not completely follow distributed cloud architectures, and might therefore require some modifications.
- You (or your clients) might fear unknown challenges.
Of course, you might encounter entirely different issues in your own journey, but these should at least get you thinking.
What kind of cloud do you need?
Now that you’ve decided to try the cloud, you’ll have to choose a cloud computing model. In broad terms, there are three kinds:
- IaaS – Infrastructure as a Service (AWS, Azure, Google Compute Engine).
- PaaS – Platform as a Service (examples: AWS Elastic Beanstalk, Heroku, Google App Engine).
- SaaS – Software as a Service (examples: Google Apps, Salesforce).
Here’s where you’ll have to make an important choice.
Those who would otherwise be fine hosting their applications in third-party datacenters, but would prefer to outsource the care of their physical infrastructure so they can concentrate more completely on developing, deployment, and monitoring, should select an IaaS host.
But 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?
Now, assuming you’ve chosen a cloud model, it’s time to choose the cloud type. These are the three basic options: public (i.e., where your resources are entirely hosted by a cloud provider like Amazon’s AWS), Private (where you create your own private cloud using a platform like OpenStack or VMware’s vCloud), and Hybrid (where 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 serving requests, and when demand drops you should ideally be able to simply drop unneeded resources to save costs. Within a public cloud this is very much possible. But suppose the data your app gathers are highly confidential and just can’t be stored off-premise. This is where a hybrid solution can help by allowing you to choose which components you want to live in the public cloud, and which in your datacenter.
Note Gartner’s prediction that nearly Half of Large Enterprises Will Have Hybrid Cloud Deployments by the End of 2017
Here is a summary of major cloud vendors and their offerings provided by Gartner:
Assessing applications for a cloud migration
Having chosen a cloud model and cloud type, the real struggle is about to begin: you must assess your application for cloud migration-readiness. Here are some things you’ll 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. There are some tools on the market, like PaasLane, that can help you assess your applications’ cloud-readiness.
- Integration complexity
Every application has its integration points, like 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’ll be well served identifying and solving up front.
The most critical (and tedious) task is to identify all 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 every module manually. The task gets complicated if you’re considering migrating hundreds of applications currently running in your datacenter.
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 to identify entire server configurations within a network, along with connectivity details.
Say that you have a datacenter within a network which is hosting around 100 applications, a discovery tool can give you the bird’s eye view of the whole system. It can also provide granular details that can be helpful for a general capacity management assessment.
- The host operating system
Once you have decided on a cloud migration, it’s very 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 that’s not compatible with your cloud provider, then you have to look for a workable substitute OS, a different cloud provider, or simply give up the whole project.
So, 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, sometimes, licenses. You will therefore often prefer to leverage your investment wherever possible. 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. Hence it’s very important to evaluate those services before pushing the Start button.
There are also many third party vendors providing data migration services, like Attunity CloudBeam.
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. For example, AWS’s TCO calculator and Azure’s Pricing Calculator.
POC (Proof of concept)
It’s always a great idea to build a small 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 your cloud migration and the challenges it can 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 blog, but I have tried to address some common issues you should consider before you start the process.
Have you got your own experiences with a cloud migration to share? Comment below.