By Kyle Prawel, Cloud and DevOps Architect, Logicworks
“The secret to getting ahead, is getting started.” – Mark Twain
DevOps teams often waste time evaluating CI/CD toolsets instead of remaining focused on delivering value to stakeholders and customers, as I discuss here. We spend too much time arguing about what tools “winners” use, instead of remaining focused on winning ourselves.
One solution to this time-suck is to choose a turn-key off-the-shelf (OTS) product and only add more tool integrations with quantitative justification. In this article, I’d like to discuss why OTS tools are so effective, and why a tool like Azure DevOps can act as your entire CI/CD suite.
Why Choose an Off-the-Shelf (OTS) DevOps Tool?
The first and most important benefit of an OTS tool is that your team can immediately demonstrate value to stakeholders and customers while avoiding the productivity loss of choice paralysis. The benefits of getting started and avoiding common pitfalls outweighs the license costs and minor feature limitations of using a pre-integrated OTS solution by several orders of magnitude. Leveraging a DevOps suite that can integrate with other clouds can prevent lock-in – but the velocity advantage by simply getting started will put a team ahead of the competition.
Further, by raising the bar of what is required to distract the team, an important cultural statement is made to teammates: unless there’s a really good reason, we’re not going to spend time arguing about tools. We’re going to get stuff done.
What is Azure DevOps?
Don’t let the name fool you, Azure DevOps works with all major cloud platforms and most on-premise systems out-of-the-box. With Azure DevOps, teams get a comprehensive integrated turn-key solution answering 90% of use cases, while still maintaining the capability to easily integrate additional toolsets as necessary. As a hosted solution, the time needed to start building with the product is minutes, and the costs are very reasonable as well, with developers on Visual Studio Enterprise already licensed to get started.
Let’s dive in a bit more. Azure DevOps is a suite, consisting of Azure Boards, Azure Pipelines, Azure Repos, Azure Test Plans, and Azure Artifacts — providing teams with the feature parity of Jenkins, CircleCI, Octopus Deploy, GitLab, and many others. Given that Azure DevOps also integrates with many providers, 3rd party tools and services, ready out-of-the-box, teams can use all those services or use just what they need to complement existing established toolsets.
Although Azure DevOps was announced in September 2018, the building blocks for Azure DevOps have been around for quite a while. When you take a look at the product, you may think ‘this is a lot like Visual Studio Team Services (VSTS)’– that’s because it is. Azure DevOps was formerly VSTS, rebranded and hosted as a SaaS solution from Microsoft.
Like many cloud hosted services, Azure DevOps is licensed by seat and consumption. Seats come in ‘Basic’ and ‘Basic + Testing’ packages. Basic users get access to the Boards, Pipelines, Repos, and Artifacts modules, and the testing package adds the Testing suite to the platform. As mentioned above, Visual Studio Enterprise users already receive licensing for Basic + Testing, and any organization can have up to 5 basic users for free. As you use the Artifacts and Pipelines modules, you will be billed on a consumption model after the included quotas are exceeded. (See all pricing info here.)
Let’s break down what each module in the service is and what they are used for.
Azure Boards is a sprint planning tool and project tracker. It works with Kanban boards, and teams can use it to manage backlogs, track work in progress, and view the commit, QA, build, and release of tasks. It can be configured with Agile, Scrum, Kanban, and CMMI project management systems, per project. Common 3rd party alternatives include Jira, Asana, Monday.com, Trello, and Clarizen.
You can also see reporting and metrics on the Azure Boards dashboard:
Of course, the coolest part about Azure Boards — as with the rest of the Azure DevOps services — is that it automatically integrates with the other Azure DevOps modules. So rather than having to manually input tasks and stories, it can pull data from the other services. Any issues can be linked to and remedied in the same portal.
Azure Repos is just what it sounds like — a repository for your code. Compatible to connect or serve Git, Bitbucket, or TFVC standards, it has threaded conversations, supports all popular IDEs and Git clients, and tracks commits over time. With Microsoft’s acquisition of GIT, it’s no surprise there is extensive support for the standard.
Azure Pipelines helps you automate CI/CD pipelines with vulnerability scanning, integration, testing, and deploying code from a repository (Git, Azure Repos, etc.) to all major platforms, including Kubernetes, VMs, or any cloud. It’s a simple drag-and-drop workflow that lets you go from zero to fully-functional pipeline in under 20 minutes. If you want a less GUI mode, all pipelines are controllable by YAML, providing teams the ability to include the pipelines themselves in the version control system. Further, you can run build jobs using a variety of hosted agents, or integrate your own on-premise or cloud agents.
Once you complete a build, then you can automate testing tasks, acceptance gates, and orchestrate a deployment and release– all across multiple dev, QA, staging, and Prod environments. There are hundreds of build and release tasks that are available in the Azure Marketplace out-of-the-box as you need extensibility. You can also create any custom task in Powershell, meaning that anything you can do in the command line, you can do in Azure Pipelines. You can even add approvers to every stage of your pipeline. And because it can be integrated with your cloud user directory, there’s no need to build new credentials for your teammates.
Once you’ve released a build, you can track progress and see errors in a simple dashboard:
The great thing about Azure Pipeline is that it’s simple enough for a developer to understand and manage, and yet flexible enough — especially with additional Marketplace tasks — that you can create a custom solution that suits your needs.
Azure Artifacts allows you to share code by storing Maven, npm, NuGet, and Python packages together, rather than storing binaries in Git. It integrates natively with Azure Pipelines, so that you can easily access all your artifacts in builds and deployments.
One of the most important features of Azure Artifacts, is that it allows you to get a single feed of both packages you produce and packages you consume. Once you’ve enabled an upstream source, any user can install a package from the remote feed, allowing you to put guardrails on the trusted libraries your developers should pull from, enabling shift-left security practices.
Azure Test Plans
Azure Test Plans provides comprehensive test tracking that integrates seamlessly into your Azure Pipeline. This includes:
- Planned manual testing
- User acceptance testing
- Integration testing
- Exploratory testing (i.e., for UX teams and product owners)
- Stakeholder feedback (i.e. for marketing or leadership team)
Test Plans allows you to create manual test cases, group them in “test suites”, and assign test suites to individual testers. They can then mark each test as “Passed” or “Failed”, and track testing progress over time.
Integrate or Replace?
Using the Azure DevOps modules above, you can build, test, and automate the release of almost any type of workload, for any deployment target. All the tools needed to effectively operate a DevOps project are integrated with each other, turn-key, providing a team the ability to get started delivering value immediately. That’s a very appealing idea for many DevOps teams, exhausted by years (or decades) of using dozens of tools to fill the same functions, and fixing the integrations and duct-tape holding them all together.
So the question for DevOps teams is: Is it worth ditching some/all our existing tools, or should we just carry on with the status quo? Or perhaps pick and choose?
The best way to answer this question is to have members of your team test out Azure DevOps. Have them follow this tutorial, build a test pipeline, and see for themselves how it works. Then have an honest conversation about the pros and cons of replacing your existing tools. Here are some we have discussed in this article:
- Fast CI/CD pipeline stand-up = fast value delivery
- Simplify team toolset and mindshare
- Azure DevOps (hosted) service is automatically maintained
- Reduce effort to maintain links/bridges between tools
- Stop arguing about tools, get back to value delivery
- Upfront work of rebuilding pipeline in Azure DevOps
- Some features may be missing for specific use cases
- Arguably more expensive than home-grown OSS alternatives
Summary & My Take
Overall, I’ve been very impressed with how robust and well-designed Azure DevOps is. Normally off-the-shelf products require decent compromise in flexibility and functionality to gain expedited project cadence. This is not the case here — most feature parity is already available, with minimal compromise. Add that Azure DevOps is cheaper than the labor it would take to setup a free OTS alternative, and have it maintained for your organization… what’s not to love?
Perhaps it’s no wonder why Google searches for Azure DevOps have gone up 2700% in the last month.
If you’re interested in learning more about Azure DevOps, check out the Azure tutorials. And if you want help migrating to Azure or figuring out the Azure DevOps tools, our team of Azure Certified Engineers can help.