In almost every Project we work, we provision some time like 1-2 weeks’ time for environment (Dev/Test) provisioning where we plan our Project with low Productivity, we buy software licenses if any needed or upgrade existing to new versions, upgrade machine configurations to get ready for another mission. So far this has been acceptable solution and considered to be pre-requisite step no matter how critical is the project from business point of view, this waste, we were allowed to doJ.
Few companies tried to tackle this problem with solutions available in the market such as CloudShare, a Cloud computing company providing ready to use development and testing Labs. However, adoption was not so quite high due to non-alignment of primary IT strategy with their Cloud Computing platform. For e.g. if your Active Directory is not in sync with Dev Labs in CloudShare, you will have to create entire dummy replica of it to mimic it, which is not practical most of the time.
Recently more mature solution have been devised by Microsoft – Azure DevTest Labs, a feature which enables companies to quickly provision development and test environments. This makes more promising solution due to its market adoption where customers are already having major of workload in Microsoft Azure Cloud platform, building Dev, Test, and Prod in same Cloud makes more sense as it just becomes your on premise extended network.
So in a nutshell, we are no more allowed to waste 1-2 weeks’ time, ultimately you are that much close to your market and end customers helping win the business.
So lets us start understanding some basics about the Azure DevTest Labs –
- “Lab” creation is the first activity, basically “Lab” is outer container or boundary for collection of Virtual machines for development of testing purpose
- A Lab provides secure boundary so a machine from one lab cannot see other machines in different lab, same way user permissions are organized
- In real life, a lab could be a Project name of a sub-Project name
- You can automate lab creation, including custom settings, by creating a Resource Manager template and using it to create identical labs again and again.
- A lab owner has the access to any resources within the lab. Therefore, they can modify policies, read and write any VMs, change the virtual network, and so on.
- An Entire Lab can be auto shut downed to save the resource cost when not in use
- Once you create a Lab, you create multiple “Virtual machines” in it.
- Each Virtual machine will have a O.S image attached to it.
- You can limit the number of Virtual machines in a Lab, and also number of Virtual machines per user
- To save the cost, each machine can be auto started and auto shut downed at specific time of day/week
- You can use out-of-the-box VM images available or you can create and upload your own Custom VM image
- A Lab user who uses the VMs, however, he is not allowed to modify any settings
- Each Virtual machine can have “artifacts”, an artifacts is some configuration or tool which you want to install during VM provisioning so you’re VM will have it ready before first logon.
- An example of artifacts could be 7-Zip utility, notepad++ software or some specific browser for testing purpose. Picture below shows few samples of artifacts, however, there is long available –
- Sometimes if you have more than one artifacts to be added, you may decide order in which they should be added
Along with above core features, there are very attractive use cases which can be used by companies such as –
- Training setups: You don’t have to work with your training vendor to rent a Lab for training purpose which may have some high end configured machines. Organizations outsource entire training programs due to hardware requirement, as they cannot afford to procure such hardware just of the training purpose due capital and operation expenditure involved.
With Azure DevTest Labs, this wait time or costly affairs are not more required, you can easily configure required training environment in minutes, use it wisely, save the cost and complete your training. Once training is over, delete the environment. That’s it!
- VM image snapshot: We all have faced situations wherein, some piece of code or functionality works fine in Dev environment but fails in Test, or works somewhere and fails on some specific machine. Sometimes testers had tough time in reproducing the issues as meanwhile somebody changed some VM settings making it hard to find the root cause.
With Azure DevTest Labs, you can take snapshot of VM image, preserve it for later use for reproducing defects which are environment specific. An ability to create same environment with few clicks improves the DEV-TEST team communication and collaboration.
- No more follow ups to IT Support guys for adding small features on VMs, with power in your hand, you can select artifacts from the available set, add them and test them. No dependency on other stakeholders, a Lab owner user can perform all such operations and installation happens automatically without manual intervention.
To summarize, Azure DevTest Labs is a great addition to platform, this makes sense whether or not start allowing DevOps culture within your organization. Essentially this feature enables each organization save cost and time achieving their business objectives.