Last week during our Cloud Office hours, we talked about another one of the Pillars of Cloudiness, horizontal scaling. These hangouts have been inspired by the blog series created by Wayne Walls, and I would encourage you to check it out if you are getting started in the cloud. Some of the highlights from the hangout are listed below, and you can also watch the full video on horizontal scaling at the end of the post.
- We talked about the differences between vertical and horizontal scaling. Drew defined vertical scaling as taking a server that you have and increasing the resources on it. This traditional way of scaling is often done by adding more RAM or hard drives to a particular server. Horizontal scaling is like adding more members to your team. Rather than having one server handle the load, you could add in multiple servers to the pool to help do the work.
- There are three different ways that people can scale horizontally. One option is a manual preemptive scaling, where you proactively scale out your configuration in anticipation of a massive amount of traffic for a predefined event. For example, our customer FLO Cycling knows that it better have a beefy configuration to support a product launch or event. This style of scaling works best for businesses that know when major events will occur.
- Another way is manual reactive scaling, and often occurs after an event has occurred, or when your application or site suddenly go viral. This happens when you have a huge surge of traffic and you need to bring on additional resources to help serve up the data, often in reaction to a major event or breaking news. The key to manual reactive scaling is having a run book where you know the exact steps needed when it is time to pull the trigger to scale.
- And finally you have the option that most people get excited about, automatic scaling. With this option the environment scales on-demand as the traffic increases. Having your app scale automatically does require some work inside your application, and you will need to hook into our APIs. Fortunately, you can code with one of our cloud SDKs so your software can actively control the infrastructure.
- There are a couple of considerations that you need to incorporate in your application to help make it scale horizontally. First, you need to have “dumb servers,” or applications that are able to work on each node. Having the ability to deploy your application directly from GitHub, or code repository, helps achieve this. You should also look into data consistency, session persistence, developing in an agile fashion and having a message queue to help grab requests as they come in. We covered a lot, and I would encourage you to watch the entire video to get all the information.
Those are the highlights from the horizontal scaling Office Hours Hangout. Remember, we will be back to host the next show this Thursday at 1:00 p.m. CST on the next Pillar of Cloudiness: Modular Design. We will post more information on the Rackspace Google+ events page. We look forward to seeing at the next Hangout!