An introduction to Azure Storage
Azure Storage is a highly-available and massively-scalable cloud storage platform that is designed to help you build internet scale applications. It is designed to store huge amounts of geo-redundant data with very fast performance. The platform exposes different abstractions of storage services to target different scenarios. This book will cover four service abstractions of storage, which are blobs, tables, queues, and file storage.
These services, like many other services from Azure, are exposed and accessed via REST APIs. Microsoft also provides a set of client libraries built on top of the REST APIs for different platforms like .NET, Android, and Node.js. These libraries facilitate interaction with the storage services, and add additional advanced capabilities like retry logic and asynchronous programming.
Azure Storage enables new scenarios for applications that require scalable and highly available data storage. These include applications such as social networks, video and image serving apps, gaming, medical records, and much more. Consumers will only pay for what they use based on traffic and capacity. Some of the Azure Storage key design features are described in the next sections.
High availability and durability
Azure Storage allows you to store petabytes of data, which will always be replicated to multiple locations. Microsoft guarantees 99.9 percent availability of the data when requested through SLAs, a topic we will discuss later. The periodic replication across geographically dispersed locations also ensures data recovery protection against disasters like earthquakes, fire, and so on.
Strong consistency
The service is designed to support a strong consistency model, which means that updates on the data are directly reflected to all replication locations where data is distributed. That is opposed to eventual consistency models that propagate changes eventually and not directly. The ability of Azure Storage to be highly available, strongly consistent and distributed is due to the advanced layering system and the design implemented in the storage platform.
Scalability
The major goal for the service is to enable the storing of massive amounts of data. For this, the service implements a global namespace, which makes access to the data consistent for consumers from any location in the world. You can scale to arbitrary amounts of data over time without worrying about where this data is stored and how it should be accessed.
Note
Other abstractions of the platform are Azure Disks and the Premium Storage service, which both deliver disk support for Azure Virtual Machines. In this book we will not use these services; our main focus will be the services that are needed by apps.