What is the difference between Azure Classic and Azure Resource Manager (ARM)? –
Several options for deploying applications on Azure on cloud (private, public or hybrid) include multiple services and features, which one should you select. Why do we need Azure Resource Manager is like asking why do we need to upgrade? Even around February 2020 just 10% of IaaS Virtual Machines were using Azure Classic.
History of the deployment models:
Azure Classic deployment model has no way to group the related resources hence you need to handle it as independently existing resource. Foremost successful way to use this model you to define an approach that lets you track resources efficiently. Deployment in classic model requires you to create resources independently or script it for deploying them in a particular order.
Azure Resource Manager (ARM), after its introduction in 2014 we rarely see the classic model being used except for Virtual Machines. With automatic deployment the excellent part is you can deploy using ARM templates, Powershell, Azure DevOps to implement CI/CD (continuous integration/continuous development) of infrastructure. It allows us to deploy, manage and even monitor Azure resources as a group. Use a JSON file to define the infrastructure for the solution. Applying control to the whole group eases the job. It is a container for resources that lets it share a joint lifecycle.
Understand support for the models:
- Support for is available for all Azure services except the cloud services in Azure Resource Manager (ARM).
- The Virtual Machines, its storage and virtual networks having resources created using classic deployment model or Azure Resource Manager needs to be operated in same model.
- Powershell command if run on ARM just shows the Virtual Machines deployed through resource manager.
- Powershell command if run on classic shows all the Virtual Machines deployed through any model plus its resource details such as id, type, name, location, and group id.
- ARM templates support Keyvaults, but lacks support for marketplace resources like SendGrid.
- No preview available for the result of ARM template
- You cannot delete specific resource mentioned in template as it is deployed in different resource groups. Currently you can delete mode deployment as a whole.
Migrate from Azure Classic to Azure Resource Manager:
Things you should know about RM when you plan to migrate from classic to ARM as standard documentation may not be sufficient to guide you through the migration process.
- Subscribe and signup for migration, without registration you cannot begin migration
- Use new or existing virtual network
- User image created using classic model doesn’t allow you to create VM using Resource Manager
- Complexity of architecture affects the planning and execution of migration
- You can set up sample environments or have automated scripts to deploy the infrastructure and applications
- There is character limitation to rename the VM
- In Resource Manager you have to work directly with JSON which doesn’t export few resources automatically
- Automation and scripts created under Azure Service Management can be used after updating them creating same resources through RM mode
- Using Availability Sets in deployment lets you extract maximum benefit from Service Level Agreement of Azure
- Affinity Groups are actually designed to group resources in the datacenter
- Integration of Azure Resource Manager (ARM) is possible with Docker, Ruby, Terraform, & Kubernetes
- Existing services or applications running on Virtual Machines (IaaS) receives support till 1st Mar 2023, after this date any active VMs will be deallocated
- Downtime during the migration depends on the number of resources you are migrating, usually it takes an hour except for largescale deployments
- Rollback option is not available after successful migration of resources but you can abort when resources are in the prepared state
- Using existing ExpressRoute circuits for migration is enabled
- Role based access control policies needs to be defined after migration
- Once migrated to Resource Manager the backups of classic VMs taken prior to migration will not be available in RM
- Be clear on the need for migrating corresponding storage and network information of a Virtual Machine
- The platform supports the resources capable of migration
- When you face issues like quota error during migration you should abort the migration
- To receive continuous updates, you should download Azure PowerShell or Web Platform Installer to receive monthly updates
- If your storage account has no VM data or associated disks you can directly validate account and start migration
What are differences between Azure Classic and Azure Resource Manager (ARM)?
What are the changes for compute, network, and storage?
|Comparison Criteria||Azure Classic||Azure Resource Manager|
|Configure||To create and configure older Azure resources that only Azure Classic supports||To create and configure newer Azure resources that both Azure Classic & ARM supports|
|Deployment||Management all assets and resources independently||Manage all assets and resources as a group|
|Cloud Services||As a container required to hold VMs||Not needed in creating a VM in this model|
|Load Balancing||Automatically balanced across Virtual Machines as these machines are members of Azure Cloud||Need to create Azure Load Balancer across multiple Virtual Machines. Load balancers can be internal or external.|
|Manage||Each resource is separate and treated as single management unit||Multiple resources as single managing resource|
|Templates||Independently deploy resources, template creation doesn’t exist||Create templates of resources to be deployed as part of cloud solution. Use ARM template to automate infrastructure in Azure Cloud. Only challenge is identifying properties available for a resource. ARM template provides flexibility to perform feature testing in exactly same environment as that of production. You can also create container in ARM template.|
|Dependencies||Cannot define dependencies among the resources||Define the dependencies among the resources for sequential and correct order|
|Compute||You require a cloud service to act as a container for hosting VMs||It supports instances of Virtual Machines|
|Tags||Cannot attach tags to label resources||Tag to label the resources for programming ease and organize logically. It has value to identify the resources with the properties as defined by user.|
|Delete Solution||Delete each resource individually||Delete the resource as a group|
|Tracking||Manually track each resource||Track the resource group|
|Access||Access control policy needs to be applied for each resource||Access control policy once applied for a group resource automatically gets applied even to the newly added resources|
|Virtual Networks||Optionally you can have a virtual network for your virtual machine but you won’t be able to deploy it in RM||Virtual network for the VM is required for deployment through resource manager. The Virtual Machines automatically migrate with the virtual network.|
|Storage Accounts||Virtual Machines need storage accounts to store the virtual hard disk, operating system, and data disks||Virtual Machines requires storage account to store its disks in blob storage to access it via HTTP/HTTPS from anywhere. A storage account can contain number of containers and each container can store number of blobs.|
|Virtual IP Address||As a VM is added to the cloud service it gets a default virtual IP address. Associate Public IP addresses directly to a Virtual Machine. A reserved IP Address in Azure to ally with the cloud service.||Public IP address can be static, secured using security groups and can be assigned to a load balancer. Creating IP address in static mode is equivalent to a reserved IP address.|
|DNS Name||Saves you from remembering the numeric or alphanumeric IP address, name it using any name of your choice on cloudapp.||Azure lets you specify DNS Names on Public IP Address|
|Affinity Groups||Affinity Groups were needed to create virtual networks prior to availability of Regional Virtual Networks||APIs exposed by Azure Resource Manager don’t need Affinity Groups|
|Network Interface Card||Its properties are defined as network configuration of a virtual machine||Lifecycle of network interface is tangled to a virtual machine, requires an IP address but it being in network security group is optional. Resources with name are retained during migration from classic model. In few cases where new resources are created you cannot control the names during migration.|
|Availability Sets||Place at the most 2 VMs in an availability set.||Place not more than 3 VMs in an availability set. You can convert an availability set to use the managed disk by its name.|
How useful do people find Azure Resource Manager (ARM)?
- Solve automation issues and improve infrastructure management
- Optimize resource groups in Development, Testing and Production environments
- API calling in automation task setup
- Autoscaling of infrastructure allowing us to increase or decrease computational resources
- Automation to build Azure cloud infrastructure
- Create active directory of Virtual Machines
- Provisioning the Virtual Machines with required resources
- Scaling automation with faster deployment
- API functions & App services
Alternatives to Azure Resource Manager (ARM) is Terraform, AWS CloudFormation, Chef, Kubernetes but ARM is certainly the future of cloud. Microsoft Azure has feedback forums where in you can satisfy your quest for particular query or leave feedback to improve Azure Resource Manager (ARM).
We recommend using latest API versions, testing the components before you deploy, tighten your security and permissions. You can try all sorts of things for CI/CD.