In the beginning, when Azure was new and most organizations were just dipping their toes tentatively into the water, it was usual to deploy a single VM here or a blob storage there. There wasn’t a whole lot to manage as there wasn’t a whole lot up there for most. However, now that many have jumped in and found the water to be just fine, larger and more complex solutions are being deployed necessitating a need for a tool to help manage the resources that make up those solutions.
Today when you use Azure, each solution you deploy is likely to be made up of several components – a virtual machine, storage, database, web app, etc. Even though each component is a separate entity they are part of the same solution that needs to be managed together. Azure Resource Manager (ARM) lets you do this by allowing you to define a container called a Resource Group to hold related resources for a solution.
All resources in the group are deployed, updated and removed together. Resources that need to be independent, such as an SQL database can be put into a separate resource group and linked to the resource group or groups that use it.
While Resource Groups is the most visible benefit, there are a number of reasons to take a look and considering using ARM:
- Resource grouping: ARM allows you to deploy, manage and monitor the resources for your solution as a group, instead of working with each component individually.
- Repeatability: It provides you with the ability to deploy your solution over and over again, knowing that each resource will be deployed in the same way each time.
- Dependable repeatability: You can deploy your solution through declarative templates rather than doing it manually or through scripting, making the deployment less prone to errors.
- Template management: Since the templates are JSON files, you can maintain them in the same version control system as the application.
- Dependencies: You can define dependencies to ensure resources are deployed in the correct order.
- Access control: Access control can be applied to an entire resource group through Role-Based Access Control (RBAC).
- Tags: Tags can be used to organize all the resources in your subscription.
- Straight-forward billing. Billing can be clarified by rolling up costs for the group or resources which share the same tag.