With public cloud providers such as Amazon, Microsoft and Google regularly adding features to appeal to business...
customers, it's no surprise to find so many options for cloud-based storage. The key to sorting through these options is assessing which features are most important for your particular cloud deployment. Latency, application programming interfaces, integration with on-premises applications and storage systems are significant considerations.
Customer-facing applications and interactive internal applications require low latency. Slow webpages and applications can be costly; users often abandon unresponsive websites within seconds. Internal users can have similar requirements. Managers and analysts studying business intelligence data are limited by the speed of the database and querying tools.
For low-latency requirements, consider solid-state drive (SSD) storage. Major cloud providers offer SSD devices at a premium, along with disk-based storage systems. DigitalOcean, which specializes in supporting software developers, provides only SSD-backed devices. Developers working with small data sets can realize the performance benefits of SSD without it adversely affecting their budgets. The same cannot be said for many on-premises production systems.
Enterprise-scale applications should use SSDs for frequently accessed data. Depending on application requirements, you can configure instances to support the required level of IOPS. To get the optimal performance from provisioned IOPS, use instances that are designed to support provisioned IOPS.
Attached storage, databases and clusters
Not all application data requires SSD performance. Infrequently accessed data can be migrated to disk-based storage. Both SSDs and disk-based storage support standard I/O protocols, so application changes should not be needed when moving an application from on-premises hardware to the cloud.
With directly attached SSD or disk drives, you can use any file system supported by your operating system. One disadvantage of this model is that the data on attached drives is deleted when machine instances are shut down. To preserve data from deleted instances, it must be copied to another storage system, such as object stores in the cloud.
Another disadvantage of attached storage systems is they can be attached only to a single instance. Microsoft Azure, however, has its File Storage system that allows SMB-compliant file shares that can be shared across multiple instances. This is especially useful when migrating applications to the cloud that require conventional file system services or when multiple instances need to access the same data.
In other clouds, data sets may be replicated to additional storage devices, and those devices can be attached to additional instances. This, however, can lead to problems with synchronization and consistency.
When multiple instances are reading and writing the same data, a database may be the best option. Each of the main cloud providers offers relational and nonrelational (NoSQL) databases. Relational databases are often appropriate when data storage requirements are well defined and known at design time. In cases where a database schema is not known in advance or may evolve, a NoSQL database such as Azure Table, AWS DynamoDB or Google Cloud Datastore may be a good choice for a cloud storage system.
About the author:
Dan Sullivan holds a master of science degree and is an author, systems architect and consultant with more than 20 years of IT experience. He has had engagements in advanced analytics, systems architecture, database design, enterprise security and business intelligence. He has worked in a broad range of industries, including financial services, manufacturing, pharmaceuticals, software development, government, retail and education. Dan has written extensively about topics that range from data warehousing, cloud computing and advanced analytics to security management, collaboration and text mining.
Breaking down cloud storage considerations
Which cloud storage option is right for you?
New technology necessary for high performance apps