A popular question these days is this: what exactly are the benefits of a cloud computing environment? The question of Cloud versus On-Premises can be looked at through a myriad of lenses. Does it pit convenience versus control? Simple vs. complex? Paper or plastic??? A decision may derive from an organization’s availability of resources and skill sets. If the organization has the expertise to maintain an application that is bought and paid for, surely this is more prudent than migrating to a cloud solution that charges in units of users and months, right? Or does it make sense to spend time on core competencies that benefit the organization and its customers? How is this more effective than spending cycles patching email servers or rolling out application upgrades? This piece will specifically examine one of the benefits of a cloud computing environment - uptime.
The Benefits of a Cloud Computing Environment - An Ongoing Discussion
The advantages of moving an application to the cloud have been covered in great detail throughout this blog with articles such as Cloud Security Challenges - Pros & Cons of Cloud Computing and Advantages of Cloud Computing | Is it Worth it?. They enumerate considerations such as:
- Hardware reduction and “automatic” hardware upgrades
- Less or complete elimination of operating system maintenance
- Implicit security best practices and hardening of services
- Monetary savings attributable to removal of direct OS & software licensing costs, personnel reduction, or having someone else pay for the electricity charges
- High availability and redundancy
- Automatic backups
However, let’s specifically examine uptime and availability as key factors in the benefits of a cloud computing
environment, as well as the forces that align against it. We’ll look at the topic from the following perspectives
- Hardware failure
- Operating System maintenance
- Back-end system upgrades
- Application upgrades
- Application bug
Starting with the most dire case, a hardware failure for an on-premises application inevitably results in some downtime. For hard-drives, you can avoid this is if you have redundancy via RAID, but otherwise you pray that your backups were being done properly. Either way, you will find out soon after the failure occurs. What if the CPU or memory is the problem? You can’t virtualize away a problematic component. How about if the port or your entire network switch goes bad? All of these issues can be resolved through redundancy but that gets VERY expensive, very quickly. One of the benefits of a cloud computing environment is that cloud services are built from the ground up to be resilient to underlying hardware failures. It is computer engineering at its finest and the costs are mitigated by being spread evenly across all customers of the service.
Operating System Maintenance
Operating system maintenance is probably the most persistent thorn in the side of uptime. If you’re on Windows, “Patch Tuesday” happens every month and frequently requires the OS to be rebooted for the changes to take effect. *If* you have multiple servers running behind a load balancer, you can perform “rolling updates” and users will never realize the system has been bounced - for on-premises solutions, this bumps up your costs significantly. Another one of the benefits of a cloud computing environment is that this feature is implicit within cloud services. This process can never be completely automated so it still requires oversight by one or more people, regardless of your solution type - something that should always be considered. Are your employees being paid overtime to perform this work during off-hours - or does it make more sense to let a cloud provider take care of that?
Back-end System Upgrades
With today’s focus on system isolation and multi-tiered architectures, the application in question has a realistic shot of utilizing a middle tier or back-end database server. These systems have their own maintenance windows that need to be scheduled and overseen as well. IT has the proverbial “thread” that must be pulled, however reluctantly. You also need to determine whether you will be upgrading all systems at once - potentially resulting in a longer, more complex downtime or coordinating more employees - or performing the upgrades on a system-by-system basis - resulting in more, yet shorter impacts. Can you say “project manager”?
The application itself has its own codebase that needs its own patching. Some organizations don’t have the time or resources to perform upgrades as frequently as needed - lets say on a quarterly basis - but this puts them at risk of potential vulnerabilities and results in lost opportunities to utilize new features. Thankfully, one one of the benefits of a cloud computing environment is that this patching is taking care of by the service provider. Often, many organizations will ask how often software is updated when evaluating potential products so they can ensure that they are able to accommodate and fit it into their own internal processes. Into which camp do you fall?
The last category for downtime considerations could be application bugs or misconfigurations. The benefits of a cloud computing environment include the fact that cloud services have robust internal testing procedures and strong validation of configuration changes to prevent issues like these from occurring. Of course, cloud services are far from immune to breakage of this sort and there will always be cases where you shoot yourself in the foot regardless of whether you’re in the cloud or on premises. There isn’t enough differentiation on this topic to declare a clear winner so we’ll consider it a “push” while you mull over making that latest configuration change.
Sure, uptime considerations may be one of the benefits of a cloud computing environment, but a “paper or plastic” choice is still dependent on each the requirements and goals of each individual organization. The convenience, simplicity and automaticity of cloud-based solutions are often counter-balanced by the direct subscription costs so be sure to fully understand everything in your cart before you get to the checkout line.