Microsoft’s Azure DevOps is used by developer teams to plan software projects, share and work on portions of code, build and create software, and deploy applications. It is based on the philosophy of the DevOps culture and supports those ideas by providing a toolset for project managers to collaborate with programmers and developers.
The whole idea behind Azure DevOps is to allow developer teams to build applications faster than through more traditional application development routes. Indeed, the entire philosophy of DevOps is built around this idea. Since Azure DevOps is built around the dev operations concept, the best way to understand what the Service as a software (SaaS) platform does is to look at the core principles of DevOps, especially as it relates to .Net and C# developers.
What Is DevOps?
The origins of the term and philosophy of DevOps is debatable, but most agree that it began during the 1990s as a possible counterpoint to the philosophy of “top-down” software development adopted by the Telecommunications Information Networking Architecture Consortium (TINA-C). The DevOps approach to software development, created by software engineers, is more of a flexible, “bottom-up” methodology.
In general, DevOps comes from the term Dev – short for software development – and Ops, or IT operations. DevOps combines practices from both of these areas to hasten the application development life cycle. In some regards, DevOps mirrors – or at least borrows from – agile software development concepts. In fact, DevOps and Agile go hand-in-hand in many respects. When we speak of DevOps, we often refer to it as a culture versus a philosophy or ideal.
In essence, DevOps is a way to bridge the gap between the developer team and operations via a set of toolchains that are essentially a project management type of framework designed to help develop and release applications and software.
What Are Toolchains?
Toolchains are a group of tools used in DevOps to shorten the development life cycle for software projects. These tools fall into one of several categories, which include:
Code Management: Tools that allow for coding, code management, code review, and the merging of code.
Building: Building tools use the concept continuous integration – or CI – which is a fancy way of saying that code should be merged into a shared mainline or trunk.
Testing: This toolset uses the concept of continuous testing to automate tests in an effort to analyze business risks tied to software release candidates. This helps minimize the time developers must wait for feedback from operations as well.
Packaging: Tools for pre-deployment staging and managing artifact repositories.
Releasing: Tools for release approvals and automation, as well as, change management.
Configuring: Tools for configuring and managing infrastructure. Also known as infrastructure code tools.
Monitoring: Performance monitoring tools for apps and user experience.
DevOps fundamentals focus around a few core concepts, including Agile planning, Continuous Integration, Continuous Delivery, Infrastructure as Code, Monitoring, and logging, validated learning, and version control.
Agile Planning: Agile development is a programming methodology whereby the development process is completed in small, incremented sprints. Agile planning is not always a fundamental for DevOps, but the two are used frequently together, and so we include it here.
Continuous Delivery and Continuous Integration (CI): Continuous delivery is best described as a rapid approach to the testing, validation, and committing of code. The moment code segments and modules are completed, they are tested, validated, and committed.
Continuous Integration is similar in nature. Builds and testing are automated as soon as code segments are finished and committed. After that, an automated process validates the code and ensures that only tested and valid code gets committed into the main source or trunk. This helps developers spot bugs prior to their code being integrated with the trunk.
Infrastructure as code (IaC): Managing infrastructure such as networks, load balancers, and so forth falls under the domain of IaC. IaC involves the management of this infrastructure, whereby a descriptive model is used, following the same versioning that a DevOps team uses for its source code.
Monitoring and Logging: Monitoring and logging is all about efficiency. Logging is the process of “logging” or gathering errors and changes to software in an effort to make a record of all application events. Monitoring, meanwhile, refers to monitoring the performance of applications. When used together, the ultimate goal is to ensure better efficiency during the software development and application delivery process.
Validated Learning: Validated learning looks at feedback and telemetry data to improve automation and processes and help developers prepare software for deployment more efficiently.
Version Control: Version control is the process of taking snapshots of files and saving versions of them every time there is a change so that developers can go back to previous versions in case there is an issue, or they need to rollback code.
Azure DevOps Features
Now that we know more about DevOps and the concepts of DevOps, we can look at how Azure DevOps helps development and operations teams achieve their goals.
Azure Boards: For starters, Azure DevOps is great for planning. Using Azure boards, project managers and developers can plan their software and track code history for each developer.
Azure Pipeline: Using job agents and templates, Azure Pipeline helps in the Continuous Deployment (CD) and Continuous Integration (CI) portion of DevOps.
Dashboard: Reporting happens in the Azure DevOps dashboard, where you can generate summaries, reports, and create analytical data.
Wiki: Developers and project leads can distribute data and information through the Wiki feature of Azure DevOps. Release notes, sprint documentation, and other software information can be shared and collaborated on through the Wiki.
In addition Azure DevOps has tools for monitor the software development lifecycle, test code, manage releases, and manage packages.
Azure DevOps Services
In addition to the features listed above, Azure DevOps offers these services:
Azure Artifacts: Azure Artifacts are used to manage packages. Developer teams can share packages and integrate them into pipelines.
Azure Boards: Azure Boards are a group of Agile tools that help teams plan and track work, code issues, and more.
Azure Pipelines: Azure Pipelines are used for builds and releases, supporting Continuous Integration and Continuous Delivery of software.
Azure Repos: Azure Repos gives you GIT repositories for source control over your code.
Azure Test Plans: Azure Test Plans is a suite of software and app testing tools.