Large software projects present serious challenges for development and deployment. A complex product involves multiple areas of specialization. There are front-end and back-end people. Security, database management, and user interface design can all be significant concerns.
Online software products raise additional concerns. The software needs to run without significant interruptions. Downtime is expensive. Security issues need rapid fixes. In the traditional development model, the software team goes through a series of releases and the administrators have to configure and deploy each one. This is slow and clumsy when it’s necessary to run smoothly all the time.
These needs have led to widespread adoption of the DevOps model. Its basic concept is treating development and deployment as a single process rather than a handoff to a separate group. It emphasizes incremental change over big releases. It replaces manual processes with automated tools. It stresses agility instead of a methodical, stepwise approach. Developers and administrators work in close coordination.
How Azure DevOps helps
Many tools are available for DevOps teams. Microsoft’s offering, Azure DevOps, takes a cloud-based approach. This makes it especially suitable for large teams whose members aren’t always in close proximity. Its tools support a highly agile development, configuration, testing, and deployment process. Developers and operations people act as one team, even if they aren’t in the same location.
Using cloud-based tools overcomes distance. On-premises DevOps tools work well if everyone is at the same facility. When people from different places combine forces on a project, it’s a huge benefit that people can access the tools from wherever they are. Access to common resources and tools for coordination overcome distance, time zones, and languages.
Azure DevOps consists of five major tools, which can be used as a suite or separately. Teams who prefer other software tools for parts of the process can combine them with the Azure services. The components are:
- Azure Repos. Any software project which is bigger than an afternoon’s work should use a source code repository. Teams who want to keep all their work in the same cloud can put their source code in Azure Repos.
- Azure Pipelines. The CI/CD approach requires tools to manage the flow of software from new or changed code through deployment. Pipelines provides the capabilities for doing this.
- Azure Artifacts. A large project involves generating and coordinating many units of code. The Artifacts tool is an important aid in tracking and coordinating them.
- Azure Test Plans. Automated testing is at the heart of DevOps. The Test Plans tool lets developers and testers manage the many tests which are necessary.
- Azure Boards. When many people work together on a component, especially when they aren’t all in the same office, they need a way to track its progress. Azure Boards lets everyone see and update the progress through an action.
DevOps automates large parts of the software cycle to produce smoother progress and fewer mistakes. Manual handoffs take more time, and miscommunication is possible. People working under pressure may want to take shortcuts. Replacing manual interactions with automated processes produces more consistent results and eases coordination among groups of people.
Testing is an important part of this process. When developers submit new or changed code to the repository, it should go through automated tests at the unit and component levels. Otherwise, bugs will inevitably find their way into the code base, causing problems that will be caught only later. A testing tool such as Azure Test Plans will make sure that tests are run with every change. Code won’t get into the system until it passes these checks. They can’t guarantee that the code is right in every respect, but they will eliminate most of the errors from careless coding and mistakes in typing.
Automation can enforce any necessary sign-offs on code. If part of the process is that a supervisor has to approve the activation of a new feature, this requirement can be built into the process.
Many DevOps operations embrace the concepts of continuous integration (CI) and continuous delivery (CD). It’s never really “continuous,” of course; there’s a range in how small and frequent the changes should be. But the basic idea is to eliminate the idea of versions in favor of allowing change at any time.
CI and CD use a pipeline process, where each change goes through a series of steps from code to delivery under automated control. At each step, it has to pass tests, get approvals, or both. Azure Pipelines supplies a supporting structure for this process, letting different parts of the team handle each step.
DevOps and CI/CD generally favor breaking projects up into services and libraries rather than keeping an application as one huge piece of code. It’s hard to stay agile when all the sources feed into a single build. The build process entails constructing, configuring, and deploying many units of code.
Azure Artifacts helps in this process. It provides support for code sharing, pipelines, and maintaining a store of artifacts which is separate from source control. It can deal with Maven, Python, NuGet, and npm packages, storing them all in a common wrapper format.
Azure DevOps favors Git or TFVC repositories. Teams can use Azure Repos for tight integration with the other tools, or they can use repositories such as GitHub, GitLab, or a private repository. Azure’s packaging of Git adds features such as protected branches and repository forking.
While the distributed Git model is very popular, some teams prefer a centralized repository. Repos lets them use Team Foundation Version Control (TFVC), which takes a centralized approach. It supports file-level granular permissions and change sets, giving a large team the ability to divide up responsibility and track who has changed what.
Keeping the whole team coordinated
There are many advantages to DevOps for creating and maintaining software in a fast-moving world. The larger the team, the greater the benefits, but the challenges grow as well. Developers and administrators need to think in new ways. They need tools to coordinate their efforts while working on different pieces in different locations.
Azure DevOps offers many features to let distributed teams work on large-scale projects while staying agile. Its cloud-based approach helps to overcome distances and keep everyone in sync. We can help you to get Azure DevOps working in your development organization. Contact us for a consultation.