What is Azure DevOps?
DevOps is a set of practices (a methodology) that automates the processes between software development and IT teams so they can build, test, and release software faster and more reliably. Azure DevOps is a Microsoft service that allows teams to manage the development of projects using these practices.
There are many benefits for teams delivering fixes and new features to their software, such as:
- Boards to track tasks/back log items,
- Repositories to store code and track changes,
- Pipelines for build and release procedures,
- Test Plans for testing,
- Artefacts for sharing packages.
There are also a few key components to Azure DevOps that every team should be using regardless of whether they work with the DevOps management methodology and these are: Repos, Pipelines and Artefacts.
While working with C# web projects, traditionally developers use a git repository of their choice to track code changes. While deploying features, a developer publishes the site to a local folder and then copy and pastes that to the server. This manual deployment approach can cause problems for developers and project stakeholders primarily because of human error e.g. developers not copying all the correct files or not being aware which files should not be overwritten.
How does Azure DevOps eliminate some of these issues?
All teams who are working on a project will be using a repository to track code changes. Azure DevOps provides a “Repos” service where you can set up multiple repositories per project.
Although Microsoft’s solution is not vastly different to BitBucket or GitHub, it is excellent at ensuring code quality is maintained. With DevOps you can set up branch policies, so that code isn't pushed to your main branches such as “master” or “staging” and if your code needs to go to any of your main branches you would send a Pull Request (PR). To ensure that the team is following robust code quality standards you can then also set up review policies for Pull Requests.
With “Pipelines” your team can set up a build process which would create an artefact of the build. This artefact can be used to deploy to your Web Application on Azure.
Once your pull request has been merged into one of the main branches it is time to do a deployment. This is where Azure DevOps can save a lot of time and eliminate human error. With “Pipelines” your team can set up a build process to create an artefact of the build. This artefact can be used to deploy to your Web Application on Azure.
Removing the complexity of creating builds away from the developer ensures that a build does not get released with broken functionality.
Once a build has completed successfully, a release pipeline trigger can be set up to automatically deploy the build to your environment. This is called Continuous Development (CD) and apart from saving time, it can also prevent human error caused by manually deploying. Releases will no longer need to be scheduled well in advance and any developer who has access to the Pipeline can trigger a build and a release. This reduces reliance on a single developer and improves release times.
The process described in this article ensures code quality and reduces human error. This coupled with a cloud infrastructure provider such as Azure can save organisations time and money. Ensuring better code is applied to your repository and removing the reliance of manual deployments will always provide some (if not major) benefits to your company.
Azure App Services
Connecting a Release Pipeline from Azure DevOps to an Azure App Service is very simple, especially if using the same account. If you need to connect Azure DevOps to an external Azure account, then a service principal will need to be set up just for deployments, that can be added to Azure DevOps via a key and secret provided by the administrator of the Azure account.
As the builds and release are done on the Azure DevOps site using an agent, a machine dedicated for doing builds, releases and other tasks; the typical down-time for a deployment is minimal. The App Service will only be unavailable while the files are being copied over by the Azure DevOps agent and while the application restarts.
Down-time can be mitigated with Azure Web Application Scaling. Azure Web Applications can be scaled out to provide more instances for your site while the other(s) are being updated.
Due to Azure only charging for what you use, there is a lot of potential for organisations to save money. However, this is not always the case; especially if you have a high traffic website. For example, if you see hosting prices rise after moving to Azure, do not assume that it must mean this is the more expensive option. Resources might have previously been set up incorrectly or the site might be setup with higher specification resources giving your users a better experience.
In conclusion, Azure services can provide many benefits to developers and clients alike. The Azure DevOps service reduces human error by providing automated processes that can be modified to certain preferences. Furthermore, the services Azure provide can be scaled up/down out/in to potentially save money and provide a better overall solution that is optimised to the usage of your website.
The advantages of using Azure DevOps with Azure over traditional manual processes are clear. Because of this, we actively encourage the use of Azure DevOps and Azure for every single one of our projects.