Introduction
There has been a low-level discontent with Amazon’s Elastic Block Storage (EBS) for years, swelling to a crescendo following their U.S. east outage in April. The most common EBS complaints include the lack of reliability, performance, and elasticity. If you have struggled with “stuck” volumes, “lost” volumes, or highly variable I/O, you likely can empathize.
But in spite of its much-maligned reputation, EBS provides Amazon its most substantial competitive advantage. Without EBS, there is no credible solution for tiered storage management in the cloud. Without tiered storage, entire classes of business applications could not exist in the cloud.
Tiered Storage
Tiering has been an essential strategy in our physical software architectures for decades, allowing us to leverage different mixes of storage price, performance, and capabilities within our applications. Some common capabilities we look for in our physical storage include accessibility, addressability, capacity, energy consumption, mutability, performance, and volatility. Some common technologies we use include direct-attached storage (DAS), network attached storage (NAS), storage area networks (SAN), and tapes.
The ability to have heterogeneous storage provides essential architectural flexibility. For example, if you are delivering a streaming video service, you might look to apply the following tiers to your data:
- Mission critical or tier 1 - Data that would result in a significant business risk if lost, e.g. customer data residing in your database.
- Business critical or tier 2 - Data that is important but not essential to business operations, e.g. primary online content farms containing the videos.
- Low critical or tier 3 - Data that represents minimal risk to your business, e.g. static web server content or log files.
- Offline or tier 4 - Data that needs to be preserved long term with minimal cost and accessibility, e.g. backups of tier 1 or 2 data.
To fulfill these varying needs in the physical world, you can leverage a rich assortment of hardware and software, allowing you to meet specific price, performance and capability needs. Unfortunately the options available for tiered storage narrow dramatically when you go to the cloud.
Storage in the Cloud
Most cloud vendors provide only two types of storage:
- Local storage - This storage is typically attached to compute, providing high performance, low durability, and no expandability. Two common examples include the ephemeral storage attached to Amazon EC2 compute or Rackspace Cloud Server instances.
- Long term storage - This storage usually provides low performance with high durability, often independent of compute and with proprietary APIs. Amazon Simple Storage Service (S3) and Rackspace Cloud Files are two common examples.
Unfortunately the local and long term cloud storage available from most vendors do not provide the capabilities for a tiered storage strategy.
Tiering With Elastic Block Storage
EBS, when combined with ephemeral and S3, provides the storage equivalent of a Swiss army knife for tiered storage. You can design EBS to meet different needs for price, durability, expandability and performance. If you want higher performance with lower fault tolerance, you can stripe volumes together; if you want to trade off performance for higher durability, you can mirror the volumes; if you want expandability, combine multiple volumes with an LVM to create expandable disks.
Only Game in Town
The fact Amazon has struggled with EBS, and the fact that it is the only provider of a similar service, is not a coincidence. Providing a distributed, replicated data store that delivers consistence performance is a hard problem. Delivering it well, at scale and with global availability, is an even harder problem.
But if other public cloud vendors want to compete with Amazon, they will need to deliver EBS-like solutions. In the mean time, Amazon will continue to differentiate its cloud with its flexible support for cloud storage. So we may keep complaining about EBS - but in the mean time, we'll also keep using it.
Related Posts: Ten Commandments of the Cloud