There’s always been a level of redundancy built into large Production or even smaller mission critical systems. Scaling out is the answer to both by adding additional compute resources as well as increase the overall uptime reliability of a system. This principle is no different when it comes to the cloud, than it is on-premises. The terms “cloud scale” and “internet scale” are thrown around a lot without really defining what they mean. In this article we’ll discuss what the aforementioned terms mean and how they relate to cloud computing.
What is Scaling Out?
When scaling server-based systems there are 2 primary methods to increase the amount of load that the overall system can handle. The first is to Scale Up, and the second to Scale Out. While both methods add additional resources to support additional load, one offers an increased ability to scale to the level of load that large firms like Google, Microsoft and Facebook handle every day.
Scaling Up is the basic idea that to handle increased server load, all that needs to be done is to increase the CPU power or RAM in the server. Doubling the CPU power or RAM in the server can double the amount of maximum load that can be handled by a server under certain circumstances. While the results of this vary, the one thing that is never changed is the ability to keep the service up if a server fails.
If you only have a single server, then scaling up wont give you added reliability overall. While having two servers, you get a bit of redundancy that if a single server fails your system does stay up and running. However, if you need both servers to handle the amount of load that the system experiences then losing one could affectively cause you to perform a DoS attack of sorts on yourself. A DoS (Denial of Service) attack is when too much load is sent to a specific server causing it to either crash or become unresponsive to new requests. This is definitely something that you never want to have happen to any Production system, especially a mission critical one.
This leads to the key reason why Scaling Out is usually a better option. Scaling Out is performed by adding additional computing power or memory capacity to an overall system by adding additional servers. Adding additional servers offers the benefit of load distribution so that any one server is only responsible for a portion of the load; while simultaneously adding additional CPU power and RAM / Memory to the overall system.
Under certain circumstances it can be better to have 4 smaller servers host the system, instead of having two really big, powerful servers. Adding a fourth server to a system that can handle most load sent to it with 3 smaller or medium servers allows for the system to have the built-in ability for a single server to go down without affecting system uptime. In this scenario, it’s not until you loose 2 servers simultaneously that your system performance really starts to degrade.
Building a server farm based on the Scaling Out principle has many benefits as mentioned previously. However, to implement a system like this in an on-premises environment there can be significant, additional hardware costs. Especially if you need to ensure that when hosting your servers as Virtual Machines (VM) each one is physically located on separate hardware. Speaking of VMs, physical hardware fault tolerance is something that Cloud IaaS (Infrastructure as a Service) solutions like Microsoft Azure have built-in and automatically included in the hosting cost.
What is Cloud Scale?
Cloud Scale and Internet Scale are terms mentioned a lot when talking about cloud computing and hosting. The idea behind them is that if your system is Cloud or Internet Scale that you should be able to handle the load of Microsoft, Facebook, Twitter or Google. While the promise of this kind of scalability sounds exciting, the vast majority of companies don’t need to worry about handling that kind of load. However, the lessons learned by these large companies have been applied to Cloud IaaS (Infrastructure as a Service) and PaaS (Platform as a Service) offerings like Microsoft Azure to allow for anyone using these services to more easily scale their systems to handle any load necessary.
The “Cloud” brings with it some additional system infrastructure and architectural design patterns that have been adopted by very large systems and make them more accessible to the average company. The increased accessibility comes in the form of the platforms (both IaaS and PaaS) having a huge amount of networking features built directly into the hosting platform.
Platform as a Service (PaaS) features of Microsoft Azure have Load Balancing, Data Redundency, Automatic Failover, Fault Tolerance, Data Backup, and many other features built-in. Depending on the PaaS feature (Azure Web App, Cloud Services, etc.) these built-in benefits of the platform are either automatically implemented, or easily configurable within the service portal.
Infrastructure as a Service (IaaS) features of Microsoft Azure also have Load Balancing, Data Redundency, Automatic Failover, Fault Tolerance, Data Backup, and many other features built-in. Depending on the IaaS feature (Virtual Machines, Azure Storage, etc.) these built-in benefits of the platform are either automatically implemented, or easily configurable within the service portal.
The term “Cloud Scale” isn’t just about scaling systems, but also scaling the teams that maintain those systems. Many efficiencies can be gained by utilizing cloud offerings like Microsoft Azure over traditional on-premises data centers and server operating systems (Windows Server and Linux) that don’t have these additional platform features built-in.
The Cloud is Important
The Cloud may sound a bit nebulas, magical or mysterious but it is neither of these three. It offers many great benefits for hosting systems. Another of these benefits, other than those previously mentioned, is that it’s generally cheaper to obtain the level of service these cloud offerings like Microsoft Azure offer than to meet the same standard in an on-premises data center. Because of these MANY benefits (and many more not mentioned here), the Cloud is really the future of the Enterprise Data Center.