Azure Storage
Overview
Azure Storage is a suite of cloud storage services provided by Microsoft Azure to store blobs (files), tables, queues, disks, and more — with high availability, durability, scalability, and security.
It’s the foundation for many Azure services, and it's designed to support both unstructured data (files, images, logs) and structured/semi-structured data (key-value, messages).
Main Azure Storage Types
Storage Type | Description |
---|---|
Blob Storage | Stores large binary objects (images, videos, backups, logs, etc.) |
File Storage | Fully managed SMB file shares (lift-and-shift workloads) |
Queue Storage | Simple messaging for decoupled services |
Table Storage | NoSQL key-attribute store for structured data |
Disk Storage | Persistent virtual disks for Azure VMs |
Blob Storage (Most commonly used)
- Stores unstructured data (files, media, documents, backups)
- Optimized for massive scale and durability (up to exabytes)
- Supports tiers:
- Hot: Frequent access
- Cool: Infrequent access
- Archive: Long-term storage (cold)
Typical Use Cases
- Upload user files (images, documents)
- Store backups and logs
- Serve static content for websites
- Stream videos
- Persist large datasets for ML or analytics
Example (C# Upload)
BlobServiceClient service = new BlobServiceClient("<connection_string>");
BlobContainerClient container = service.GetBlobContainerClient("my-container");
BlobClient blob = container.GetBlobClient("photo.jpg");
await blob.UploadAsync("photo.jpg", overwrite: true);
Queue Storage
- Simple message queueing between app components
- Message size: up to 64 KB
- Max retention: 7 days (unless renewed)
Use Cases
- Decouple background processing (e.g., image resize, email send)
- Buffer work for worker roles or Azure Functions
- Retry and dead-letter messaging patterns
Example (C# Send Message)
QueueClient queue = new QueueClient("<connection_string>", "tasks");
await queue.CreateIfNotExistsAsync();
await queue.SendMessageAsync("process-order-123");
Table Storage
- NoSQL key-attribute store
- Scalable, partitioned, schemaless
- Replaced in many use cases by Cosmos DB Table API
Use Cases
- App configuration, user preferences
- Lightweight audit logs
- Large volumes of structured but simple data
File Storage
- Azure-hosted SMB 3.0 file shares
- Mountable from Windows, Linux, or macOS
- Supports identity-based authentication (Azure AD, AD DS)
Use Cases
- Lift-and-shift legacy apps using file shares
- Shared drives for VMs or container workloads
- Backup or content distribution across machines
Disk Storage
- Virtual hard disks for Azure VMs
- Managed and zonally redundant options
- High IOPS and throughput tiers (Premium SSD, Ultra Disk)
Security Features
- Encryption at rest (enabled by default with AES-256)
- Private endpoints to restrict access to VNet
- SAS tokens for time-limited access
- RBAC and ACLs for granular access control
- Soft delete for blob and file recovery
Monitoring & Diagnostics
- Azure Monitor integration: metrics like transactions, latency, errors
- Logging: request logs, access logs, billing info
- Storage analytics (for advanced data logging)
Conceptual Model
Think of Azure Storage as a toolkit of storage types, each tuned for different patterns:
- Blob = “object storage” (like Amazon S3)
- Queue = “basic messaging”
- Table = “simple structured data”
- File = “network shared folders”
- Disk = “persistent volumes for VMs”
You pay per GB stored + operations performed, with tiering and redundancy options depending on your cost/durability needs.
Redundancy Options
Redundancy Level | Description |
---|---|
LRS (Locally Redundant) | 3 copies within same data centre |
GRS (Geo-Redundant) | LRS + copy to paired region (read-access optional) |
ZRS (Zone-Redundant) | Copies across 3 availability zones in one region |
Tools and SDKs
- Azure Portal – Manual upload/download, config
- Azure CLI / PowerShell – Scripting
- Azure Storage Explorer – GUI tool for managing storage
- .NET SDK (Azure.Storage.Blobs, etc.) – Programmatic access