In this video, Jeff Winesett describes what makes the cloud elastic. Learn how the ability to use horizontal scaling avoids waste and drives cloud benefits.
- [Narrator] The word elastic brings to mind things that are stretchy. Something that can expand and contract when it needs to. Referring to the cloud as elastic has the same meaning. Just as the elastic waistband on a pair of pants helps both before and after a large meal, the elastic nature of the cloud refers to its ability to accommodate changes in load and demand of the system. Compare this to a nonelastic hosting environment where there is fixed capacity. If changes in the capacity are needed, much planning, time, and money are also needed to make these changes.
To demonstrate, here is a graph showing capacity along the y-axis versus time on the x-axis. Think of the capacity as the number of web servers available in the system. When launching a new application, the development team will need to configure a production environment to support this new application. Through much planning and estimation, the team predicts five web servers will be needed. So, five web servers are provisioned, racked, and configured, and this is where the capacity starts.
The product launches, and the web servers are monitored as customers start using the application. At first, actual demand is less than the estimated capacity. So, there is excess capacity. That's this area between the allocated capacity and actual usage. This is wasted money, because our allocated capacity at times far outweighs demand. Now, imagine the marketing team starts advertising, which results in a traffic and usage spike.
This spike actually exceeds the allocated capacity, and now customers trying to access the application are being denied. The application is down, the team must do more planning and predicting and make another upfront investment to purchase more web servers. The team decides to get five more servers in place. The application is scaled out by five servers. Now, the capacity is at 10 and can handle the marketing spikes, but there are dips in demand that cause considerable waste.
Sometimes, even much more waste than before. This cycle continues as demand fluctuates. There's got to be a better way. Enter the cloud. The same application deployed on the cloud would be able to take advantage of its elastic nature. In the cloud scenario, the applications starts at the same place. There is still some planning involved, and a starting capacity for launch has to be decided. The predictions are the same as before, so the team still decides to start with five servers.
While monitoring actual usage, it may be determined that five servers were too many. No problem. With AWS's auto scaling service, the web server tier can easily be scaled in from five servers to four servers, thereby reducing the waste and saving money. Monitoring continues, and when the marketing team starts to have their success, the four servers start approaching full utilization. Again, no problem. The auto scaling service can once again be used to scale out to accommodate.
This can continue to be leveraged in a manner to always stay one step ahead and outpace the demand. Server metrics such as CPU utilization can be monitored. When the utilization rises above a certain threshold, the application can scale out and keep customers happy. And, if levels again dip below certain thresholds, the application can scale in and keep the accounting department happy without impacting customer satisfaction. Elasticity is one of the fundamental properties of the cloud.
This power to quickly scale computing resources in, out, up, and down will ultimately drive a lot of the benefits of using the cloud.
- Benefits of cloud services
- Making architectures scalable
- Examining cloud constraints
- Virtual servers, EC2, and Elastic IP
- Using the Amazon machine image
- Elastic load balancing
- Using CloudWatch for monitoring
- Security Models
- Elastic block storage
- S3, CloudFront, and Elastic Beanstalk
- Handling queues, workflows, and notifications
- Caching options and services
- Identity and access management
- Creating a custom server image
- Application deployment strategies
- Serverless architectures