Scalability in cloud computing can get make your team’s infrastructure more reliable and affordable. By starting with adopting virtualization, you can setup the environment for your company to thrive and grow at an unprecedented scale. First we’ll discuss how to look at virtualization, optimizing idle computing time and how that can lead to scalability in cloud computing.
Virtualization and efficiency in cloud computing
Virtualization is a way to harness the unused bandwidth in your systems to support one another. Just as humans only use around 10% of our brains, computing power is mostly idle. In the last 15 years, systems have gotten so fast that it’s increasingly hard to keep them busy all the time. Processing thousands of requests per second leaves huge gaps of idle time between each request. Memory is built out for that one huge dataset that is processed periodically and is idle the rest of the time.
Virtualization is adding a layer of abstraction between a software system and the underlying hardware. VMware, Citrix, Microsoft, and others insert a hypervisor between separate virtual machines (VMs) on the same hardware, arbitrating access and making each virtual system think it’s running on its own hardware.
Virtualization has been in networking for decades with VLANs, making a single physical switch act like several to provide security, and now expanding into more advanced concepts such as Software Defined Networking (SDN).
What used to be high-level technology is now available at the commodity level. This is a cost saver as the more efficiently their physical resources are used, the less physical resources are necessary. This saves money. When using virtualization—efficiency goes up and investment goes down.
Setting up a system like this takes planning however. The main issue in virtualization are hot spots. This is when two systems ask for the same piece of free computing bandwidth at the same time. This is why we make sure to explain that Proper planning and performance analysis is required to make the best use of a virtualized system—but the payoff is worth it.
How virtualization makes way for scalability in cloud computing
Once you have your system setup to optimized unused computing capacity, physical servers can be traded in for virtual machines. This makes the scalability options endless once the cloud is involved.
Here’s what happens when physical servers are converted to virtual machines:
- You gain portability — Virtual machines are portable. Since the hypervisor abstracts the OS from the underlying hardware, a VM can be moved from one machine to another without any impact. This has a lot of benefits, whether you’re scaling up, scaling out, or planning for redundancy and disaster recovery.
- Scaling your deployment becomes easier — As discussed in Scalability 101: Up And Out, scaling up can be difficult if your application can’t take full advantage of the additional CPU and memory resources. In a virtualized environment, you can deploy additional clones of a virtual machine on the same physical hardware, using those idle resources. Additionally, you can deploy small virtual machines today and expand their CPU allocations as needed, and shift them from server to server without rebuilding.
- Costs decrease — If you’re scaling out, the abstraction from hardware lets you deploy servers from any vendor without worrying about fine tuning your application to different adapters, configurations, and underlying storage. Older, less-efficient hardware can be heavily consolidated. For instance, a dozen older 1000W servers might be consolidated to a single modern 750W server, saving on power, connectivity, and hardware maintenance. Given the rapid rise in core counts and 1U servers running in excess of 20 cores, the savings can be dramatic.
- You gain flexibility — Additionally, virtualized servers can even have multiple identities where it makes sense. For example, a development environment can be turned off and a QA and integration environment turned on—all on the same hardware. This can be extremely useful for short-lived, temporary, or mutually-exclusive environments. Rather than buying physical servers for every task (or reconfiguring and reloading them constantly), changing from one role to another is as simple as shutting down one OS and starting up another.
- You become primed to scale into off-site virtual machines, AKA the cloud — So far we’ve discussed how virtualization increases efficiency, flexibility, and portability. This can help when scaling your environment, but once it’s virtualized and abstracted, there’s nothing saying it has to stay on premise. This is where the Cloud comes in.
Virtualization and cloud services go hand-in-hand, as the basis for cloud architecture is the benefits of virtualization: effective use of resources, simplified deployment, portability, and scalability.
While it’s an oversimplification in some ways, a cloud instance is essentially a virtual machine hosted on offsite infrastructure, with all of the supporting hardware and services baked into a convenient billable package. Virtualizing your environment makes it much easier to migrate into the cloud or use cloud resources to extend your physical footprint.
As you place more and more resources in the cloud, you’ll need to make sure you maintain service quality and don’t encounter “hot spots” or “noisy neighbors,” which happens when one customer on the same hardware starves others for resources.
Consistent and predictable performance is critical for service reliability and planning for the future, so make sure you know exactly what you’re getting and how far your provider can scale with you.
Scalability in cloud computing makes possibilities endless
With proper planning and application architecture, you can design highly scalable environments that grow from a small initial rollout to thousands and millions of users.
As you scale up and out, making best use of those resources is critical to managing costs. Virtualization helps with consolidation and deploying new servers/services, setting the stage for adding in cloud resources.