10 Ingredients for DevOps Transformation with Mark Andersen
At Capital One, DevOps is about delivering high quality, working software, faster. This means software that is reliable, secure, usable, and perfor...Learn More
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.
There are many problems that moving to the cloud can solve. Here are some typical scenarios that will benefit from 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.
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|
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.
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:
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.
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.
Once you have decided on 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.
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 rollbacks 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
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.
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.
AWS's WaitCondition can be used with CloudFormation templates to ensure required resources are running.As you may already be aware, AWS CloudFormation is used for infrastructure automation by allowing you to write JSON templates to automatically install, configure, and bootstrap your ...
As companies increasingly shift workloads to the public cloud, cloud computing has moved from a nice-to-have to a core competency in the enterprise. This shift requires a new set of skills to design, deploy, and manage applications in cloud computing.As the market leader and most ma...
The announcements at re:Invent just keep on coming! Let’s look at what benefits these two new EC2 instance types offer and how these two new instances could be of benefit to you. If you're not too familiar with Amazon EC2, you might want to familiarize yourself by creating your first Am...
Google Cloud Platform (GCP) has evolved from being a niche player to a serious competitor to Amazon Web Services and Microsoft Azure. In 2018, research firm Gartner placed Google in the Leaders quadrant in its Magic Quadrant for Cloud Infrastructure as a Service for the first time. In t...
In order to understand AWS VPC egress filtering methods, you first need to understand that security on AWS is governed by a shared responsibility model where both vendor and subscriber have various operational responsibilities. AWS assumes responsibility for the underlying infrastructur...
Is it possible to create an S3 FTP file backup/transfer solution, minimizing associated file storage and capacity planning administration headache?FTP (File Transfer Protocol) is a fast and convenient way to transfer large files over the Internet. You might, at some point, have conf...
Microservices are a way of breaking large software projects into loosely coupled modules, which communicate with each other through simple Application Programming Interfaces (APIs).Microservices have become increasingly popular over the past few years. The modular architectural style,...
There are many use cases for tags, but what are the best practices for tagging AWS resources? In order for your organization to effectively manage resources (and your monthly AWS bill), you need to implement and adopt a thoughtful tagging strategy that makes sense for your business. The...
Amazon S3 is the most common storage options for many organizations, being object storage it is used for a wide variety of data types, from the smallest objects to huge datasets. All in all, Amazon S3 is a great service to store a wide scope of data types in a highly available and resil...
One of the main promises of cloud computing is access to nearly endless capacity. However, it doesn’t come cheap. With the introduction of Spot Instances for Amazon Web Services’ Elastic Compute Cloud (AWS EC2) in 2009, spot instances have been a way for major cloud providers to sell sp...
A Comparison of Machine Learning Services on AWS, Azure, and Google CloudArtificial intelligence and machine learning are steadily making their way into enterprise applications in areas such as customer support, fraud detection, and business intelligence. There is every reason to beli...
The AWS Command Line Interface (CLI) is for managing your AWS services from a terminal session on your own client, allowing you to control and configure multiple AWS services.So you’ve been using AWS for awhile and finally feel comfortable clicking your way through all the services....