Top Reasons for Moving to the Cloud
Do a quick online search about companies moving to cloud computing (e.g., “moving to the cloud”), and you’ll see a theme that the shift to cloud computing is happening faster than expected. An impressive number of small to medium companies have gone all cloud, and quite a few large enterprises plan to be all cloud in five years.
From my perspective as a consultant helping many clients with cloud projects, I hear a continuous stream of requests from clients asking for help in moving to the cloud. Clearly they're seeing some benefits in cloud computing. Here's a quick list of benefits based on what I’ve most commonly seen from clients.
Note: if you’re new to cloud computing, you might want to read our Cloud Primer article first.
Can you save money in the cloud? Absolutely, but that totally depends on your situation. Personally, I've worked with a few clients who've moved to Microsoft Azure from on premises, and also to Azure from Amazon Web Services (AWS), with cost being a driving factor. In their cases, signing an Azure Enterprise Agreement with Microsoft brought significant discounts to Azure published pricing, which made it worth the switch.
A colleague worked with a client to move from a third-party hosting provider to Azure, and that client saved more than 40%. That doesn’t bode well for the long-term viability of old school hosting providers, which is why many are scrambling to rebrand themselves as cloud providers. Undoubtedly, the cloud is a disruptive innovation.
Clearly, you can save money in the cloud. It’s important to note, however, that for many of my cloud clients, cost was not a leading factor for moving to the cloud. Sure, they wanted to stay on par with their current costs, if not save some money. But their main reasons for migrating are discussed in subsequent sections.
Agility in the cloud means your development teams can be more productive. It’s all about faster time to value. I’ve been a consultant for many years, and most clients I’ve worked with have a process to follow if you need to procure some infrastructure, whether that’s hardware or software. Need some servers for your dev environment? Then submit a request, wait for approval, wait some weeks/months for the hardware to arrive, wait for the infrastructure team to install and configure it, and there you go.
Even if your server room is highly virtualized, it’s a safe bet that, at best, it will take your infrastructure team a matter of days or weeks to fulfill your request. That’s an example of slow time to value. The important question for you to answer is: How long does it take for you to get new servers deployed? How about an entirely new test environment?
Another example: Your team decides to use a new technology in its technology stack. Everyone’s on board, so how long does it take to get that installed on your dev/test/production environments? For many of my clients, that’s another time-consuming process. Again, that’s slow time to value.
In the cloud, there's little to no waiting whatsoever. You want a new environment? Your developers can go stand it up in a few minutes or hours, depending on complexity. Definitely not weeks or months. For example, I can stand up a new developer Virtual Machine (VM) in the cloud, with development tools installed, in a few minutes.
A new SQL database, or a bunch of storage, or a high-performance caching service? All take just a few minutes. How about something more complex, such as a SharePoint farm or a Hadoop cluster? Depending on the complexity, that could take some time to fill out all the specs, but it should still be less than an hour. And if you want to tear it down, tweak it and redeploy, it will be much faster the next time around.
Even better, you can create a template out of that deployment and then use that template as the basis for automating your deployments to other environments, such as test or staging or production.
On a related note, it’s not only your development teams that benefit; your infrastructure team benefits too. The cloud providers offload a lot of the grunt work your infrastructure team would rather avoid. I’m sure some people love racking and stacking servers, replacing hard drives, running cable, etc., but those aren’t high-value activities for most businesses.
Now that doesn’t mean you’re going be laying off infrastructure staff; rather, it means they can avoid the drudgery of maintaining basic infrastructure and focus on more strategic, high-value priorities.
In sum, cloud agility means the cloud offers much faster time to value than on-premise options do. The cloud provides your development teams with the resources they need, without delay, which increases their productivity and speeds their development efforts. It also frees your infrastructure team to focus on strategic priorities.
Flexibility refers to the overwhelming number of options the major cloud providers offer. So, not only does the cloud provide agility, it also provides incredible flexibility. Need compute? Check out all of the VM options.
As of this writing, AWS offers 40 VM types, Azure offers 68 and Google offers 18 (as well as custom machine types). Some are general purpose and some are specialized, but all offer a huge variety of operating systems to choose from, a variety of regions, etc.
Need storage? Choose from basic storage or high-performance premium storage, or very cheap backup storage. And while you’re at is, also choose from various regions, backup options, etc. You need a database? How about a website? Caching? Analytics?
Many options. Some are Infrastructure as a Service (IaaS) while others are Platform as a Service (PaaS) or Software as a Service (SaaS). The list goes on and on and on, and they’re all ready to use without delay. At the time of this writing, AWS offers 68 services, Azure offers 58 and Google offers 47. Again, it’s pretty overwhelming, but it’s way better than the relatively small tool belt your dev teams have at their disposal.
Another aspect of flexibility is that cloud providers are constantly creating new services, as well as evolving and improving their current offerings. The pace of change within the cloud can be overwhelming, for better or worse. The continuous stream of new offerings is great, and the continuous improvements to cloud services means they become very robust and feature-rich over time. But it can be difficult to keep up with all of the changes.
One very cool thing I’ve experienced working with Microsoft Azure is that the Azure teams actually solicit feedback and use that feedback to prioritize their work. I’ve had more than a few of my requests incorporated into various Azure services, which feels pretty good.
You’ve heard that the cloud offers nearly limitless scale, which is true. If you need massive scale for your cloud solution, that’s totally doable. But what’s more important is that the cloud offers you the right scale when you need it.
The vast majority of clients I’ve worked with have significant variability in the scale their applications need. Some vary by time of day, others by time of year. For example, perhaps you’re a retailer whose website gets incredibly busy from Thanksgiving through the new year. In the cloud, you can scale your apps up when needed and then scale them down when possible to save money.
That means you can avoid the wasted compute so typical of on-premise infrastructure. The ability to scale up and down in the cloud as needed is called elasticity.
Another aspect of scale is the cloud’s worldwide distribution. That allows you to deploy your infrastructure close to your users to minimize latency. So if your customers are across the U.S., you can deploy your app to various data centers across the U.S.
This can help distribute your workload across regions to increase performance and minimize latency. The same applies if your customers are global, especially if they’re in countries with tight data sovereignty laws, such as Germany and China. Presently, Amazon has 13 regions with four in process, Azure has 26 regions with eight in process and Google has four regions with two in process.
One benefit of cloud computing you don’t hear frequently is that it changes the way IT works, allowing IT to accomplish things that were out of reach before. This “cloud-enabled IT” is a result of all of the benefits we’ve discussed so far: cost savings, agility, flexibility and scale.
Through these benefits, cloud-enabled IT teams can leverage a very wide array of tools and services to deploy applications faster, cheaper and at dynamic scale — all things they couldn’t do previously. Here are a few examples:
- I’ve worked with clients who've taken advantage of the cloud’s scale to sell their solution to much larger customers than they could have before.
- Some clients have gained significant cost savings by migrating to the cloud from more expensive hosting providers. In doing so, they also gained the other benefits of agility, flexibility and scale.
- Other clients have taken advantage of the cloud’s “pay per use” model to minimize their risk. They’ve taken small bets by deploying innovative new services to the cloud, hoping they’ll take off and be successful. But they do so knowing that even if a new service fails to meet their goals, they can just tear it down and sigh with relief that their investment was minimal, thanks to the cloud.
- Other clients have been emboldened by the cloud to create strategic applications even though they have no IT staff whatsoever. They’ve leveraged development teams to build and deploy their apps using cloud PaaS services, knowing that PaaS services are easy to monitor and maintain. Thanks to the cloud, they don’t need on-premise infrastructure or a contract with a hosting provider or their own IT staff.
- Still other clients have used the cloud as an inexpensive warm/cold disaster recovery site, or a cheap backup solution.
Reality check: Time and effort required
Now, for full disclosure, it’s important to note that taking advantage of all of the benefits of cloud computing doesn’t happen overnight. It takes some time and effort.
- Depending on your team's familiarity with the cloud, there could be a pretty steep learning curve to climb. You’ll have to learn the various IaaS/PaaS/SaaS services available, how to navigate the cloud portal, how to architect your applications in the cloud, etc.
- If you want to take advantage of standing up and tearing down environments as needed, it’s best to write the automation to make that happen. Fortunately, major cloud providers have pretty good tooling to help with that automation, and there are some very good open-source options as well. Related to this, in Microsoft Azure there’s a very cool service called DevTest Labs, which provides a sort of playground for your development teams. It has built-in guardrails to control spending, and automation to start up and shut down VMs around your working hours.
- Similarly, you can scale up and down manually, but that’s not optimal. The preferred approach is to configure your various services to scale up and down automatically, whether on a schedule or based on usage/performance metrics. There are some pretty good built-in options to auto-scale various cloud services. If you need something more customized than the built-in options, you can write an app to manage scaling, which, not surprisingly, takes more effort.
Cloud computing has provided a valuable new option for how businesses get IT done. By using the cloud, businesses can save money, deliver value more quickly, access a broad range of technologies, scale their computing capacity up and down as needed to meet demand, and shift more of their focus to providing business value. It’s no wonder so many companies are shifting more and more of their workloads to the cloud. Are you in?