General Manager & Partner | Azure MVP
Today, almost all software development companies face a number of challenges when it comes to ensuring coherent environments and infrastructures for test, demo, staging, pre-production scenarios and so on.
With modern development, more than ever both applications and environments require frequent changes. However, setting up or modifying dev and test environments often requires a significant effort and long delays.
With the advent of cloud services, we’re presented with new possibilities for creating temporary environments, particularly because some key attributes of the Cloud.
In this video you will see how Microsoft Azure responds to the most common challenges companies face (for instance the need of temporary infrastructures, available on demand, for Development / Test / Staging environments).
“The main objectives of a Dev/Test strategy with Azure are enhancing the software development process and minimizing costs.”
What is actually Dev/Test?
Dev/Test is everything related to development and testing, continuous integration and continuous deployment, as well as what you need in order to setup staging environments, testing environments for the application or solution you’re developing. It’s usually part of the DevOps set of tasks a software company needs to perform.
Let’s see the Dev/Test challenges today – without the Cloud, using our own local infrastructure. The biggest challenge today any software company experiences is the major disconnection between development and infrastructure teams. This disconnection leads to a long, complicated, and inefficient development process. It also raises the question of who is in charge of the temporary infrastructure (the infrastructures that are needed for testing/staging that have a temporary nature).
Over the time, we identified some common situations software companies are facing. For instance: the development team asks for a staging environment (with a specific setup of a couple of virtual machines), for a proper functional and integration testing. This is usually done by sending a ticket to the infrastructure team. The relevant person in charge sets up the needed environments and then notifies the development team of the availability of the staging environment. However, sometimes the VMs are not configured exactly how the development team requested, so the process is delayed by submitting another ticket to the infrastructure team. In the end, the environment is configured and testing can begin. Once the testing is over, the development team sometimes forgets to notify the infrastructure team to remove the staging environment, which leads to cost issues.
And we’ve seen approx. 15-20% of the staging VM are not being used. Besides, being stating/testing environments, you need them on a really narrow schedule (only between working hours, not during nights etc.). This can lower the costs up to 40% in some cases. Just by stopping the VMs when you don’t need them and turn them on when testing is being done.
Lack of skills – the development teams don’t have the infrastructure skills they need to create a staging/testing environment. On the other hand, the infrastructure teams don’t understand all the time the requirements coming their way.
Why and how Microsoft Azure can help?
Azure has been designed from the beginning to be a self-service set of features. A developer or anybody with no IT skills whatsoever can create very complex environments in Azure, as long as a template has been designed for them.
Azure provides you a lot of features to be able to scale up or down, depending on the needs, and it all happens in a matter of minutes.
Provisioning of VMs takes only minutes to complete. It’s much faster than on-premises provisioning. For instance, it takes less than 10 minutes to create a VM, and also less than 10 minutes to create 100 VMs – and this is all because of Azure’s scaling up feature.
It’s cost effective
Cost control get even better and waste can be minimized by using quotas, access policies, automatic shutdowns. These budget savings end up being very important to the infrastructure teams.
Azure Resource Manager (ARM) is one of the great things about Azure – it allows you to create an environment and then to use it as a template. You can export it as a template (JSON format) being easily further used by development teams to create new identical environments, based on the same template.
It integrates with existing tool-chain
Azure integrates really well with the existing tool-chain: Visual Studio., git, Puppet, Chef, Eclipse etc.
Continuous Integration Tools
If we’re talking about Dev/Test, we can’t skip continuous integration tools from Microsoft because they integrate extremely well with Azure. These tools could be either Team Foundation Server (TFS) or Visual Studio Team System (VSTS) – the online version of TFS.
A very simplified process of Dev/Test in Azure
Let’s say you are using Azure to deploy your solution into the Cloud. This means that you have previously created there the needed environments, and that’s where you deploy your solution. This also means that you are able to use the resources from Azure to actually perform the build and perform the release.
You can forget about the concept of “build server”, which you may still have in your organisation. You don’t need that anymore. In Azure, you literally don’t need any kind of infrastructure (besides work-stations for your developers) to build, test, and deploy your solution.
This is the end of episode #1 of the Dev/Test in Microsoft Azure series. Now you know a little more on how you can enhance your software development processes and optimize your business with Azure.
We hope you enjoyed it and check out the other episodes!
View the entire Dev/Test in Microsoft Azure series
- Part I: Discover the core benefits of Dev and Test with Azure
- Part II: How VSTS Integrates with Microsoft Azure in Dev/Test Scenarios
- Part III: Dev/Test with Azure Resource Manager
- Part IV: Why Use PowerShell DSC in Dev/Test Scenarios with Azure