AWS gives us three different storage services – EBS, EFS and S3. Each has its own strength and purpose. Here are the key features and architectural benefits of each one:
Every server needs a drive. Amazon Elastic Block Storage (EBS), is essentially cloud-based storage for the drives of your virtual machines – just like a D drive or an E drive (in case of Linux, its //Data/ etc). The core principle of EBS is that it stores data as blocks of the same size and organizes them through the hierarchy, similar to a traditional file system.
Amazon EBS is designed to store data in blocks (volumes of a provisioned size) attached to an Amazon EC2 instance, similar to a local disk drive on your physical machine. In a physical environment this volume might be coming from storage or a server. The key difference is that EBS is elastic (easily scalable and extensible) compared to a local disk which has finite capacity.
There are four types of volumes in Amazon EBS. To understand the difference, you need to know what IOPS is. ‘IOPS’ stands for input/output operations per second or, put simply, the maximum amount of read/write operations you’re able to perform per second. To choose the right Amazon EBS volume type you need to consider a number of parameters such as:
- IOPS and through put requirements for your application
- Read and write ratio
- Data type (random or sequential)
- Chunk size of data (to align EBS volume to your application)
At some point, it became clear that EBS may be good for setting up a drive for virtual machines, but what if you want to run an application with high workloads that needs scalable storage and relatively fast output? Amazon Elastic File System (EFS) was created to cater for these needs.
Amazon EFS is automatically scalable – this means that your running applications won't have any problems if the workload suddenly becomes higher – as the storage will scale itself automatically. If the workload decreases, the storage will scale down, so you won't pay anything for the storage you don't use.
You can mount EFS to various AWS services and access it from various virtual machines. Amazon EFS is especially helpful for running servers, shared volumes (like NAS devices), big data analysis and any scalable workload.
Amazon S3 stores data as objects in a flat environment (without a hierarchy). Each object (file) in the storage contains a header with an associated sequence of bytes from 0 bytes to 5 TB. Objects in Amazon S3 are associated with a unique identifier (key), so access to them can be obtained through web requests from anywhere.
Amazon S3 also allows the hosting of static website content. It’s a highly scalable storage service with famous ‘eleven nines’ data durability (99.999999999%).