Part 1: Microsoft Azure
Cloud is the new go-to place for everyone willing to improve their business – from small coffee shops to huge corporations. It takes off a lot of risk and maintenance from users’ hands and gives scalability and security in return, which otherwise would have cost a small fortune to have and maintain privately. But if you are reading this, I’m sure the decision to go for a Cloud solution has already been made, and there is another question hanging now – ‘Which is the best place to store data and files for me?’ There are quite a lot of choices to be made – from choosing a provider and a payment plan to choosing the correct storage and the process can get complicated and confusing. Unfortunately, this article will not help you with the provider and payment plan choices, but it will reveal the different storage options that the most popular providers have and hopefully will help you make the correct storage choice.
Vasko Viktorov is part of ROITI’s Cloud Software Engineering Team and in a sequel of three articles, he will peek into each of the three most popular cloud providers – Azure, AWS and Google and check what storage options they offer, what use cases they are best suited for and look into some why’s and how’s. There is a large ground to cover so let’s roll up our sleeves and start with the first one – Microsoft Azure.
The company has been operating in the Cloud market since 2010 and it is well-known as one of the biggest ones. As per the latest data from Q3 2022, Microsoft Azure holds the second biggest market share (21%) for cloud services. A company with that much experience, as expected, offers storage options that are well thought out and optimized for all common scenarios. Each of those storage options can be accessed easily via the Azure website or the desktop application ‘Azure Storage Explorer’.
Of course, there are also ready-to-use developer packages for different programming languages such as .NET, Java, Python, Node.js, C++, Ruby, PHP, Go, Android, and iOS, which makes the storage implementation, configuration and use in a project quite an easy task, because there’s no need to learn a new language or find someone special for it.
But enough free advertisement, let’s check what storage options Azure has to offer:
Azure Files provides a fully managed cloud-based file share, that is accessible via SMB and NFS protocols or REST API. It can be used concurrently on cloud and on-premises machines. It’s perfect for the replacement of on-premises file servers and for storing application-shared settings and configurations. It is also a good place for dumping logs, metrics, and diagnostics.
Azure Blob is a cloud storage for unstructured data. It functions as a key/value database where a key is a combination of the folder name and file name and the value is the content of the file (blob). The size limit of each blob can be specified, and metadata (key/value pairs) can be added for easier identification.
It is good to know that some precise identifiers must be included in the keys (file names) or the metadata because the content of the files cannot be searched directly, otherwise, each file will have to be downloaded and read separately.
There are three different types of blobs – block, append and page blobs. The type is specified upon creation of the file and cannot be changed afterwards.
- Block blobs are optimized for uploading/downloading big amounts of data. Each block is limited to 4.2GB of data and a block blob can hold up to 50 000 blocks, which is in total 210 TB. The main use case for block blobs is for files that need to be read from the beginning to the end like images and binary media files and documents.
- Append blobs are optimized for append operations. Each append block is limited to 4.2MB, up to 50 000 append blocks – a total of 210 GB. The main use case for append blocks is logging data from services, applications, virtual machines, etc.
- Page blobs are optimized for frequent read/write operations. Each page block is limited to 4.2MB, it has no limit to the number of page blocks, but the total size cannot surpass 8.8 GB. Its main use case is storing index-based and sparse data structures like OS and data disks for Virtual Machines and Databases.
Azure Queue is a message storage that can hold millions of messages, depending on the storage total limit. A queue message can be up to 64 KB. It is great for communication between decoupled components of an application, or for storing the backlog of a company’s work actions.
Azure Table is a key/value database and it looks exactly like a classic database table. Each Azure table has one column, called entity, which is the key and one or many columns, called properties which are the value. Keep in mind that not all entities in a table have to share the same columns.
There are also limitations in the Azure table usage – different Azure tables cannot be linked to each other, search by value is slow, and the tables don’t allow complex joins or queries. But the big advantage that they have is that they are cheaper and more scalable than relational databases.
Azure tables are best used for storing user data, configurations, settings, or other types of information which is not big or complex enough to be put in their database.
Azure Managed Discs are solid-state drives or hard discs that are managed by Azure and available via Virtual Machines. The Azure-managed discs are the perfect solution for migrating an application from on-premise to the cloud. They could be used as virtual storage for files, but overall, this is not optimal cost-wise and use-wise.
It is also important to mention that Azure storage can be set with a specific tier of data usage – hot, cool, or archived. Hot is optimized for frequent usage, cool is for infrequent usage and archived is for rare usage. Setting the correct tier of usage can reduce your cost and improve your processes.
This concludes the common storage options that are available in Azure. If you didn’t find what you were looking for and you need more specialized storage, you can also check the database options that Azure offers for:
- Relational databases: SQL, PostgreSQL, MySQL, Oracle, SQLite
- Non-relational databases: CosmosDB, CassandraDB, MongoDB, RavenDB, CouchDB, HBase
In the second article of the sequel, we will look into the common storage options provided by AWS.