Product development is continuously evolving and products are constantly enhanced with latest technologies. However much they scale up, the environment in which they are deployed plays a critical role in the reliability and performance of the software.
Today Microsoft’s Azure cloud environment provides a range of services with inexpensive storage capability that enables storing data on the cloud for high availability and disaster recovery (HADR) solutions across geographies.
One such example is Azure’s HADR environment that comprises of Primary and Secondary database servers. The two servers always stay in sync with each other and maintain a hot copy of all transactions across each server. Similarly, applications are also deployed in the primary and secondary servers, and are mapped to their respective databases. Any request from the web application is split up between the servers so that all transactions are executed with its own database server, thereby ensuring a high availability of the application even when users make multiple requests. All these environments are maintained with Azure VMs (Virtual Machines).
In case of a failure in the primary server, the standby (secondary) server takes the transaction workload and start acting as the primary server, ensuring there is no downtime. Once the failed server has recovered and prepared to run again, data sync occurs between the two servers and the recovered server starts acting as the secondary server.
The intake, processing and storage of files (Excel/text/JSON) is very common in large products. In the retirement space we could have many such files for activities such as payroll processing. In a HADR setup, any uploaded files are stored in only one of the two servers. The disadvantage of doing this is that when users try to access these files, the request could be sent to the other server where the file is unavailable.
One of the best ways of addressing this problem is by using Microsoft’s Azure blob storage for maintaining the files, which is common across both the servers.
Azure Blob Storage is Microsoft’s storage solution which can store any unstructured data within its own container. Blob storage requires a storage account, container and blob to hold the data. All the data/files that are stored in blob storage have their own address – which is a combination of account name and storage blob that is created when any data is persisted. The blob can be accessed through the storage account name and a unique access key which ensures security of the data uploaded/downloaded.
The same storage can be used for multiple functionality within an application by creating multiple containers for each function. For example, uploading a file or generating an output file or simply accessing a file or data that is stored within the blob.
Azure blob is quite cost effective currently. It also contains different storage classes for less frequent, more frequent and long-term storage data and high durability.