Storing your data into the cloud is nowadays a no-brainer. For many businesses, Azure offers a wide range of features for a small price. Let’s find out how to easily take advantage of the benefits of Azure Storage.
In this article:
Long gone are the days in which you had to add disks to your virtual machines, set backup procedures, or implement interfaces for distributed access. Cloud came to the rescue by offering better and better storage solutions for your data.
Due to the fact that the subject may become intimidating large, I’m going to restrict it to the persistence of files in Azure cloud. In my experience, the most frequent types are pdfs, images, and documents. Microsoft offers a nice flowchart for picking up the proper data store.
According to it, the two candidates are Blob Storage (BS) and Azure Files (AF). BS is the default storage location, with better flexibility on performance and a lower cost. We are using it for new implementations. AF is aimed towards file structures and brings support for SMB protocol. This means you can attach it to a VM and it behaves as a drive. It supports the usual disk operations and it benefits from the cloud features. In my experience, I’ve found it useful for “lift-and-shift” scenarios.
Let’s go further into the top features you should know about.
1. Reliability
Simplicity is the prerequisite for reliability. – Edsger Dijkstra
Azure storage makes things as simple as they can be. The last thing you want to end up with is losing your customer data. Add the risk of high unavailability and accidental deletion and you have a recipe for putting the business in danger. Azure Storage handles all of the concerns with minimal configuration.
Redundancy
You are more likely to be struck by lightning than lose your data.
Hardware failures, network or power outages, and massive natural disasters are events that can happen. Azure offers three main options that increase the durability of your data:
- Locally-Redundant Storage (LRS) – you have three copies within a single region.
- Zone-redundant storage (ZRS) – the three copies are distributed across separate availability zones within a single region.
- Geo-redundant storage (GRS) – it means six copies total, including three in the primary region and three in the secondary region.
Availability goes hand in hand with redundancy. In this regard, the guaranteed SLA is 99.9%, meaning 8.76 h/year. It may look like a lot, but I’ve experienced almost no storage unavailability so far.
Backup
Hope for the best, prepare for the worst.
We are humans and humans do mistakes, be it directly such as accidental deletion or indirectly by introducing bugs that alternate the behavior. It’s useful to know BS is more advanced than AF when it comes to the options it provides:
- Versioning means that a new version of a blob is stored each time that blob is modified or deleted;
- Soft deletion is like versioning with a retention period;
- Snapshots are point in time copies of the blob.
At the moment, AF supports neither versioning nor soft deletion. The way to go is a combination of snapshots and Recovery Service Vault. RSV automates the management of the snapshots according to a configurable schedule. MS offers an overview of this solution and a step-by-step guide of the setup.
2. Data Security
Prepare the umbrella before it rains. Malay Proverb
Before any sensitive files reach storage, engineers consider the following:
- Communication is done via secure channels.
By default, the flag “Require Secure Transfer” is enabled, which means that all of the requests to the storage account must be made over HTTPS. - Data follows the compliance requirements of your organization.
Azure Storage is encrypted and decrypted transparently using 256-bit AES encryption, similar to BitLocker encryption on Windows. It even supports customer-managed keys.
- Access is controlled.
– Every request must be authorized and there are plenty of options to achieve it. The easiest and most frequent way is by providing a Shared Key in the Authorization header.
– One may also want to support anonymous access to some of your resources, such as public images. This is supported only for Blob Storage and it can be as granular as necessary, from containers to blobs.
– The ultimate access control is by generating a shared access signature (SAS). It supports expiration date, whitelisted IPs, different permissions and it can be used in the URL for blobs.
3. Limits
Cloud is the limit.
In the old days, when you were running out of space, you had to install a bigger disk, and then migrate the data. After a while, it usually happened to do the upgrade again. This operation was time consuming and redundant. In the cloud, you can adjust the available storage space by just moving a slider. The limitations of the Azure storage don’t affect the majority of the use cases. Although the cloud boundaries expand over time, it’s better to be aware of the current state before choosing between BS and AF. They are within the limits of the storage account, which got even higher within v2.
Blob Storage* | Azure Files** | |
Max blob/file size | 4.75 TB | 4 TB |
Max capacity | 5 PB | 100 TB |
Max IOPS | 50K | 100K |
Max ingress/egress | Up to 50 Gbps / 50 Gbps *** | Up to 4 Gbps / 6 Gbps |
* Limits may be less due to the type of data, configuration, and region. Please check the detailed documents if you expect to hit the boundaries.
** Premium file storage scales with the provisioned share size.
*** Not strictly specified, capped by account.
When it comes to latency, also referred to as response time, the numbers vary depending on conditions. Usually, the premium tiers offer superior performance due to SSDs. Excluding network transfer, we are recording in our projects averages under 10ms in both BS and AF, with fewer spikes for premium AF.
Documentation with all of its details and exceptions may look intimidating. Numbers vary in real life depending on multiple factors. However, we’ve always found them good enough for our scenarios. There were times we couldn’t rely on the promise, so we ended up putting cloud storage to the test… and it passed.
4. Integration
Talk is cheap. Show me the code. Linus Torvalds
The integration is easy, as you’d expect. There are plenty of examples of how to manage your Azure storage resources using your favorite programming language.
Here is a .NET code snippet that downloads an image from BS and retrieves it as an action result.
public async Task<FileStreamResult> OnGet() { var accountName = "***username***"; var accountKey = "***key***"; var blobUri = "***blobUrl***"; var blobClient = new BlobClient( new Uri(blobUri), new StorageSharedKeyCredential(accountName, accountKey)); BlobDownloadInfo blob = await blobClient.DownloadAsync(); return new FileStreamResult(blob.Content, blob.ContentType); }
Although it’s straightforward, let me explain a bit the steps. First of all, install the Azure.Storage.Blob NuGet package. Get the access key from the Azure portal and pass them to the BlobClient instance along with the Url to the blob. Finally, call the DownloadAsync for the Content and ContentType.
You may find useful to keep in mind the following BS object model.
Azure Files supports SMB protocol, which means that a file share can be mounted to a VM. Afterwards, it works as any local file system. You can even restore a previous file version from a shared snapshot.
5. Pricing
All things are worth their price. German proverb
The cost is mostly influenced by three metrics:
- stored data volume;
- quantity and type of operations performed;
- redundancy and backup options.
Azure Files is usually pricier than Blob Storage for non-Premium tier. Standard performance tiers can optimize costs by choosing one of the access tier levels: archive, cool, and hot. Use archive tier if you plan to access the files rarely; this way, the cost for the data volume is lower but the operations become pricier. For the hot access tier, it is the other way around. For example, storing 1TB in BS can cost between a few under 10 euros for Standard performance, Archive access, LRS redundancy, and a bit more than 220 euros for Premium performance, ZRS redundancy.
By knowing your data, its usage, and the redundancy requirements, you will be able to choose the optimum solution in relation to the costs. Azure offers a calculator so that you can simulate an upcoming setup. The configuration doesn’t have to be perfect upfront because most of the settings can be adjusted live, based on the actual production insights.
Summary
Azure Storage proved to be a reliable, secure, and cost-efficient solution for us. It offers a lot of features by default and many more with minimal configuration. The Azure team is working hard to make it even better. Although one may be intimidated by the number of options it provides, you don’t have to be. Give it a try, start small, and learn as you go.
About Ciprian Moroșanu
Ciprian has over 10 years of experience in developing .NET applications. During this period, he has acquired extensive business knowledge in the domains of payments, healthcare and insurance, and has also taken the role of Scrum Master in his team for the past 5 years, making sure that Scrum is enacted in the team so that they deliver the best results with the available resources.