Manual deployment and auto deployment in Azure
Good day everyone!
In this article, I want to tell you about the difference in the approaches of manual deployment and automation deployment in Azure. When it is better to use manual deployment, and when it is better to automate it.
First of all, I would like to focus on the tasks in which it is better to choose a manual approach. For example, you need to deploy a lab, the configuration of which for some reason is not completely clear (some software will be delivered to the virtual machine (VM)\virtual machines (VMs)) or you need to deploy the lab once and never touch it again. Also, it is not excluded the option of a complex deployment, which is impossible or very difficult to automate. Or you want to use the lab in a hybrid version: some of the resources you have are local, some in the Cloud of Azure (in fact, in this case, you can create a hybrid runbook and automate the Azure part).
In all these cases it is better to choose the approach of manual deployment. Why? Because manual deployment has a number of advantages:
- Good documentation (Azure documentation);
- High speed of the first deployment of the lab;
- No need for testing.
The advantages of automated deployment are known to everyone:
- High productivity.
If we talk about the automation of deployment to the Cloud (virtualization), then the number of benefits is increased. If you do not need VMs, you can turn them off (or delete) and not pay for them. Your system administrator will no longer have to wonder how many disks to buy for the existing lab, what old hardware needs replacement and how to integrate new hardware with the existing one, whether or not there are problems with data center communication and other factors like extensibility of the lab, backup copying, cooling of racks, fire danger - all these problems will immediately go away.
Automation and virtualization work better together. When you try to automate without virtualization, you miss the benefits of very flexible resource management. Virtualization without automation leads to the fact that developers accumulate their VMs the same way as physical machines, which leads to a simple replacement of your existing server with the growing number of VMs on the Cloud.
The problem with manual deployment is that in case of working within testing environment, you almost never deal with one or two VMs. Most of the time these are huge laboratories with complex infrastructure and connections between the elements of the environment. As testing becomes more complex, and teams grow, more and more resources, which sometimes have to be reallocated, are required.
The manual deployment of the lab is not cost-efficient takes a long time. At this point, automation comes to the rescue.
If you decided to automate your deployment, here are a few advices that you can follow in the process:
- Deployment using scripts, in which all stages of deployment are performed by scripts.
- All configuration files must be in the central repository.
- Keep all parameter on an external configuration file.
- Automounts execution: provides secure access to several computers in the process of automatic deployment.
It must also be remembered that automating something is not a fast process. The more complex the laboratory and deployment that you want to automate, the more time it takes to automate and the entire process becomes more difficult.
Similarly, the automation of the deployment is the development of software. And any software development requires testing. If you have conducted a full cycle of testing and development, you are still not immune to bugs or incorrect behavior of the deployment process or the system itself.
There are several ways to avoid such major problems:
- Draw a full scheme of deployment with all the small details.
- Analyze the virtualization platform, whether or not it is suitable for your purposes.
- Understand, whether or not you need a redevelopment process.
- Take care of hiring a professional staff with the experience in automation of the deployment in advance.
- Consider looking for an outsourcing company that is able to perform previously mentioned points.
If you choose Azure as a platform for virtualization, it is highly recommended to use ARM Templates for automation. ARM Templates is a technology that provides to you automate a lab deployment in a few hours. The template is a just file in JSON format in which you provide the description of your lab. It’s very easy and very powerful.
The templates in fact became the standard for automation of the lab deployment in Azure. As a bonus, there is an awesome community in Azure ARM Templates. There is a number of tools available for working with ARM Templates:
- Azure PowerShell;
- Azure CLI v2;
- Azure Portal;
- Azure Resource Manager API;
- SDK (.NET, Python, Java);
- Visual Studio Team Services and others.
Overall, virtualization combined with automation allows you to get what you need to lead the process of deploying your organization and upgrade from fragile, cumbersome and long-term to reliable, secure and fast.