Introduction
In traditional server approach we mostly store the images with the project package or in a file location in server and every time we publish those we ship our images also in all the servers.
In the world of cloud we store all files (images, logo etc.) in a common location, so that all the instances of your application can access the data from centralized location. From the maintenance point of view it is very helpful as we have to only maintain in one location, we don’t need to visit all the servers to update the files. In azure we store files in Azure Storage.
Moreover with the help of CDN the availability of the files will increase.
In this article, I will explain the basics of Azure Storage and in the coming series I will cover each service’s description, implementation and best practices. Hope you will enjoy.
To get more grip on the topic let’s begin with an example, you have created an application and you choose to deploy the application to Azure’s Cloud Service or Web app (Other services Azure provides). Here my server location will not be fixed as every deployment will spin up a new VM in case of cloud service, so it will be difficult to identify the remote web server location. In these circumstances we mostly use Azure storage to store our files. We can use CDN also to get the files from the nearest available server and this will help to increase performance.
Types of Storage services
Azure storage is a secure way to store files on cloud, we can restrict the access of a storage account using Shared Access Signature (SAS) you will see more about SAS in later section. Azure Storage provides 4 types of storage services:
- Blob
- Queue
- Table
- File Service
Types of Storage Account
Azure is a pay as you go service, so we should always keep in mind about the cost factor. We can differentiate the storage account in two types:
Cost Factors
As we were talking about the cost factor related to azure we need to see some of the cost factors which will affect your azure subscription bill.
- Storage Capacity – Capacity you use for your data.
- Replications scheme– We can replicate our storage to multiple geo location for two major reasons; firstly, risk factor server crashing and other one will be the performance as application can access the nearest location.
- Storage transaction – No of transaction (read write operation) made on the storage account. We can access <> transaction per month free after that it will cost you subscription.
- Data Egress – Amount of egress data out or accessed by application in other region.
Note: I took this information from the azure documentation available in Storage documentation,
For more and updated details on pricing you can refer the Microsoft pricing.
Create a storage account
Steps to create a new storage account from the new preview portal is as follows:
- Login to Azure Portal with your credentials.
- Click New, Data + Storage, then Storage Account,
- New Blade will open for Azure Storage Account. You can check the latest pricing tiers. It has two deployment models:
- Classic – This is our old traditional way of creating storage using management portal.
- Resource Manager – This is a nice way to manage the resource and can correlate the resources if required. It give a whole lot of options to create the stuffs.
- For now we will select Classic and click create then a new blade will open. In this blade you have to provide the following details:
- The storage name of the storage account.
- The pricing tier for the storage.
- Resource group – We can think it as a logical grouping\collection of storage.
- Subscription: On which subscription you want to create the storage.
- Last two options are the location (datacenter on which storage will create) and the diagnostic option available.
- Once you enter all the details hit create then in dashboard you will find a new tile as in the following:
- Once storage is created you can click on the tile and can do the changes in setting or can browse options.
Storage account endpoints
We can access our storage using Storage account endpoints. Every storage object has a URLs to access which is a combination of azure storage account name as sub domain and domain name as the services together they form a unique URL for a storage object.
http://<storage account name>.<service name>.core.windows.net
For example, if your storage account name is testStorage, then the default endpoints for your storage services are as follows:
- Blob service: http://testStorage.blob.core.windows.net
- Table service: http://testStorage.table.core.windows.net
- Queue service: http://testStorage.queue.core.windows.net
- File service: http://testStorage.file.core.windows.net
Storage access keys & connection string
When you create azure storage, you will get an access key, as we saw in the Create Storage section. These storage keys are encrypted unique values which you will use to access your storage. Once you click on the tile you will find all the details in the settings blade. Click on keys that will give you all the key details.
Regeneration of key effect
Suppose if your storage key is leaked. You don’t need to worry about you can regenerate a new key for the storage. In the manage keys blade check the regenerate buttons present at the top of the blade.
When we regenerate a new key it effects the currently deployed version of your application or the Virtual Machine where old key was updated. So you need to redeploy your stuff. The following are some points when you regenerate a new key.
Some important concepts required going forward
The following are few topics which will require going forward in the journey of Azure. So I believe that we should know these topics.
Geo Replication
By name you might have guessed it properly, it basically means that we are replicating the content to multiple geo location mostly in different data centers. This is a wise choice because it helps our application to get protected from the failure, crash or nature’s chaos (earthquake, storms). Keeping the data in multiple location will provide a high availability, risk of data loss, fail over recovery, etc. Although this will add additional cost to our wallet.
SAS
SAS (Shred Access Security) is the security mechanism which comes out of box with storage. Azure services are mostly accessed using APIs which are wrapped with an access provides which allows a resource access request if you have the access token these makes the things pretty secure. We use SAS not only in Azure storage but also in Azure Service Bus. We will look into its working and options in coming articles of this series.
Data Egress
This mean the amount of data going out of azure data center. Most of the costing related to the azure storage depend on this unit that is why we should understand this point.
Affinity group
Affinity are group of locations or we can say the hard disk space in the data center. Let’s take an example and try to understand the need of affinity group. In the world of cloud we never get to know the server where our application will be hosted and the files in storage. Keeping the application, data, etc. in same affinity group tells the azure to keep them in the nearest possible location so that we can get a higher performance. It can be in different racks nearby or can be in the hard disk next to each other we cannot predict. So this is also a nice idea to keep the application in the same affinity group.
Service co-location with an affinity group
Helpful tools
For azure storage you can use azure storage emulator and get the same sort of advantage as the cloud will provide but offline.
Please download it from the link, storage emulator is part of Azure SDK package.
Next will be a storage explorer which will help you to access the storage account. You will find lot of products available in market and you can pick any one of those I use is Neudesic Azure storage explorer. You can download it from the following link.
We will discuss about all the services related to Azure storage in the coming sessions.