There’s a lot of buzz about the “Cloud” as a result of the rapid growth and adoption of cloud-based services like Microsoft Azure of the last 5 years or so. However, the “Cloud” is still a bit mysterious to some, and many others aren’t clear on the best way to design systems to run best in the cloud. While migrating on-premises solutions to run in the Cloud can be simple, there are many differences between Cloud and On-Premises data center and hosting environments. This article explores many of those differences, what they mean, and how to better design systems to run better in the cloud.
What is the Cloud?
There are many definitions of what the Cloud is. There are simple definitions like, “The Cloud is just someone else’s computer.” As well as more mysterious definitions like, “The Cloud is online services sold by companies on a subscription basis.” No matter what simple definition you are familiar with, there are many people who don’t understand really what the “Cloud” is. This seems like a good place to start.
The many “Cloud” based services are sold on a subscription basis, it’s still much more complex than simply “someone else’s computer.” Online hosting providers have rented out shared and dedicated servers since the early days of the internet. These services do meet the simplest definitions of the “Cloud”, but just offering “rent-a-server” services doesn’t make a company a Cloud Service Provider.
Cloud Service Providers will provide many more services that to simply rent a server. They will additionally offer renting server resources that are called “Managed”. A Managed server is one where some form or combination of Operating System, Updates, Networking, Storage and Backup are automatically “Managed” behind the scenes are part of the subscription service. These “Managed” features can greatly simplify the management of server resources by the customer so they can spend more of their time building and maintaining their applications and related data. These “Managed” server resources are referred to as Infrastructure as a Service, or IaaS. These IaaS services of Microsoft Azure include networking, virtual machines, IP address, among many more.
in addition to IaaS services, many Cloud Service Providers like Microsoft Azure provide additional Managed or automated Platform features that virtually or completely abstract away the underlying infrastructure. These Managed Platform services are referred to as Platform as a Service, or PaaS. An example of a PaaS service in Microsoft Azure is the App Services Web Apps feature where the infrastructure, virtual machine, and operating system are abstracted away so developers and administrators only need to worry about the application being deployed and hosted. Another PaaS service example is Azure SQL databases where customers only need to be concerned with their data and tables, all while the server, networking, storage, backup, etc. are fully Managed and abstracted away behind the scenes.
Further down the “automatic rabbit hole” of Cloud platforms is the realm of Software as a Service, or SaaS. These are services that abstract everything from the infrastructure (IaaS) to platform (PaaS) away to solely exposing the software application to customers. A very large example of a SaaS services from Microsoft is Office 365. Other examples would be Microsoft Power Apps, Visual Studio Online, or even using the Azure App Service Web Apps to host a WordPress site.
The “Cloud” includes various IaaS, PaaS and SaaS services. While many of the old traditional hosting providers offer infrastructure services (share or dedicated servers), the Cloud Service Providers like Microsoft Azure offer MANY more features making them much more than simply “someone else’s computer.”
On-Premises Data Centers
On-premises data centers are a lot of work to build and maintain. It’s necessary to maintain all the hardware and software when hosting an on-premises data center. There are also many reason why you may need an on-premises data center, or at least “think” you “need” an on-premises data center.
Other than needing servers to host software/services, here are a few reasons given to why on-premises data center are “needed” for organizations:
- Security – Some organizations think their data is more secure if hosted locally.
- Reliability – Some organizations think their on-premises data center will be more reliable than hosting somewhere else.
- Accessibility – Some organizations think their on-premises data center resources are more accessible than if they were hosted elsewhere; mostly due to the physical hardware being accessible.
- Uptime – Some organizations think their on-premises data center can provide greater overall uptime. This is mostly due to the Reliability and Accessibility reasons/ideas.
There a many other reasons organizations give for why they “need” an on-premises data center to host all or some of their data, applications, services, etc. The reasons listed above are the most common answers of “Why?” However, these reasons are all myths that stem out of the era before the Cloud; the era of on-premises data centers in their prime.
Myths of On-Premises
Many stated benefits of On-Premises data centers had their legitimacy at one time. Since the rise of the “Cloud”, and services like Microsoft Azure, these so called benefits of on-premises data centers are mostly no longer true.
What once were accepted as truths of on-premises data centers are now really just myths that many IT Pros, Developers, Business Users and many others just don’t want to let go. The truth is the “Cloud” is far superior to On-Premises for hosting most applications, data and services.
Here are some explanations to help bust these myths, and show why the “Cloud” can be far superior to On-Premises data center for most organizations:
Security is a major concern for any datacenter, whether it’s in the Cloud or On-Premises. Security includes both physical and virtual security. The implications are not just Operating System, Database, SLL/TLS, or other “virtual” encryption and security methods. The physical security of a data center is a crucial attack vector to protect. Cloud data centers, like those hosted by Microsoft for Azure, contain many security features built into all aspects to the physical and virtual features of their Cloud platform offering. In addition to the “virtual” security offered through encryption and other software security measures, Microsoft Azure data centers also include industry standard and best practices for physical security measures. Theses include meeting industry accepted security certifications using many security measures that also include biometrics access controls of physical assets, servers, buildings and overall data centers.
Overall reliability is a major concern with any production system. The basic premise is, “Will the system be available when I need it?” To a large degree, most computer hardware is just as prone to failure as any other hardware. Extra things like fire suppression, redundant data and power systems can become extremely expensive. Also, adding the ability to fail over to a colocated data center can add some serious cost to overall system hosting.
Some companies with existing data centers have the idea that their own data center is either better or just as good as any cloud provider, like Microsoft Azure. The fact is that unless the company has spent millions of dollars ($) on building and maintaining their infrastructure, then it is highly unlikely they can compete with the world class hosting of Microsoft Azure.
An added bonus of getting all these features as part of the Microsoft Azure service offering, the administrators of the company don’t even have to think about them; not even once. These are all automatic features.
A common argument about On-premises data centers is that the physical servers are more accessible than if they were hosted somewhere else. Sure, cloud servers in Microsoft Azure aren’t physically accessible by customers, but would you expect Microsoft to allow all customers to walk in and mess around with stuff? Of course not!
It’s been a long time since the early days of the Internet and Remote Desktop technologies. Gone are the days of needing to occasionally press the power button on the machine; especially since all servers hosted within the cloud are all Virtual Machines (VMs) that are easily managed from the web.
In fact, cloud servers could be considered more accessible since you don’t even have to get up from your desk to manage them, and it’s impossible to forget your access credentials at home.
Server uptime is really one of the biggest concerns for any data center. If the system goes down that could cost the company thousands or even millions of dollars. The 100% uptime myth has been debunked as impossible, even if just for the fact that updates need to be installed on servers periodically. So, the industry has settled on 99.x% with a different number of 9’s after it depending on the cost associated with that specific uptime.
Many on-premises systems appear to have virtually 100% uptime since they are “always” up. However, it can be difficult to calculate true uptime of on-premises systems, so the actual uptime can be imprecise depending on the method of tracking.
Most cloud services within Microsoft Azure come with a 99.95% SLA guarantee which is much higher than most on-premises data centers can hope to offer.
The overall stability of the Cloud versus On-Premises seems like an even comparison for the most part. However, the way that the Cloud is built is quite a bit different than On-premises. Yes, they are basically just a bunch of servers, but that’s pretty much where the similarity stops.
The architecture of the Cloud is built on the premise that hardware will fail at some point. For this very reason there are a number of features built into Microsoft Azure.
- 3 redundant copies of data at all times, with 1 copy being in a separate data center in case of regional disaster like a hurricane or earthquake
- Automatic fail over to backup server to minimize downtime
- Hosting applications on at minimum 2 server instances to minimize downtime when hardware failure occurs
Microsoft Azure has built-in redundancy, failover, backup and many other features that allow for systems hosted in the Cloud to be far more stable at lower cost than the vast majority of on-premises data centers could hope to achieve.
Hopefully this article has helped clear some things up if you’ve had some doubts about migrating existing systems or just building new ones in the Cloud. There is far more that could be talked about on this topic. This is a pretty long post as it is.
If you have any questions, please feel free to post a comment.