General Manager & Partner | Azure MVP
In this video, we talk about Azure Resource Manager and its role in Dev/Test scenarios.
One of the biggest challenges development teams face is to be able to create Dev or Staging or QA environments, over and over again, in an identical manner. They usually spend a lot of time doing this, but with ARM everything becomes much easier, because of the JSON template we are able to specify, and based on which Resource Groups will be created.
“Azure Resource Manager (ARM) is a fundamental technology which is going to be used more and more in a variety of places across the Azure platform, and its main advantage in Dev/Test is the ability to create environments, no matter how complex they are, in a repeated way.”
Before starting, check out the first videos in the series for a short introduction.
- Part I: Discover the core benefits of Dev and Test with Azure
- Part II: How VSTS Integrates with Microsoft Azure in Dev/Test Scenarios
In a nutshell, we see two major advantages in using Dev/Test with Microsoft Azure:
- Optimizing the development process – you have a more optimized development process
- Cost efficiency – you’ll be more efficient in terms of costs.
First, developers won’t have to wait for the infrastructure team to create the development / test / staging environments. They will be able to create them themselves, in a self-service manner.
Secondly, most of the environments aren’t needed all the time, 24/7 year round – they are needed only hours per day, or a few days per week etc. There are mechanisms which allow us to minimize the costs.
Dev/Test with Azure Resource Manager
Going into further details, we’ll try to explain how Azure can help when dealing with more complex solutions. The following image shows how a (short) continuous integration process looks like.
Say you’ve got the source code in VSTS from which you proceed in the next 2 phases: the Build and the Release phase (both explained in the intro video of the series). After you have build your solution and start deploying, first of all you need to create the environment in Azure.
Imagine you’re in the process of developing a solution and you’re using Dev/Test in Azure. At the end of every iteration you need to deploy the solution you’re working on intro a staging environment, for testing purposes. And that staging environment needs to be created before the actual deployment of the solution. Once you have it up and running, you then may proceed and do the solution deployment with all VMs prerequisites.
Next, we’re going to focus on environment creation. Creating an Azure environment is created from Visual Studio Team Services (VSTS). The smart thing about Azure is of being able to create complex environments (load balancers, virtual networks, storage accounts, IPs, VMs, etc).
No matter the complexity you will be able to create the environment, in an automated fashion, repeatedly and identically.
There’s a concept called Azure Resource Groups (Azure Resource Manager). They are nothing else but containers of resources that should and must belong together. Resources should belong together from many perspectives, but the most important one is the development life-cycle.
For example, if some particular resources (a database and a website) are created together, and later, should be stopped / deleted together, they definitely belong into a resource group. Usually, you deploy a solution in an environment which is actually a resource group.
The smart thing about resource groups is that they are based on JSON templates. JSON is a manner to describe how those environments should look like. This mechanism actually allows us to avoid the big complexity around creating big environments with many components.