The Internet has transformed the world and its industries, from shopping and entertainment to banking and finance. One of the most significant developments is in software. Software no longer merely supports a business; rather it has become an integral component.
Indeed, companies are now interacting with their customers through software delivered as online services or applications and on all sorts of devices. They are also leveraging software to increase operational efficiencies by improving every part of the value chain, such as logistics, communications, and operations.
Today, because of how critical it has become, companies have changed how they build and deliver software. In engineering practice, we follow a reliable, secure, and maintainable solution for our software systems. These traits make the software system robust and deliver value to the customers.
Back in the day, operation modules were handled by an SRE or maintenance team who would carry out 24/7 monitoring, operation, and deployment. These processes were labor-intensive, cost-inefficient, error-prone, and not adhering to the latest software methodology such as lean processes. Skipping ahead to the present, modern businesses are now leveraging on the latest tool and technologies for these operation modules. This process is gradually being achieved by DevOps tools.
Why Does DevOps Matter?
With a DevOps tool, some of these practices are now automated and require less manual intervention. Delegating these tools to perform automation tasks and system testing allows us to focus on other aspects of the software domain, and produce a robust and less error-prone software system. As quoted from Gartner:
“DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture), and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology — especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective.”
DevOps is essentially a culture for seamlessly integrating the process of software development with IT operations. More importantly, the meaning of DevOps has broadened to become an umbrella term for the processes, culture, and mindset used to shorten the software development life cycle, using fast feedback loops to deliver features, fixes, and updates more frequently.
There are many tools in the market that support the DevOps cycle. Many tech giants have so much to offer in the realm of DevOps like Microsoft, Google, Amazon, and IBM, so how can we pick the best one for our teams?
Much like software in general, there are multiple variables. But after discovering the wide variety of solutions offered by Microsoft Azure, I believe they have a competitive edge. In this article, I will delve into its various services and benefits, as well as explain why Microsoft Azure is my ideal choice for orchestrating a DevOps toolchain.
What is Azure DevOps?
Azure DevOps is a Software as a service (SaaS) all-in-one platform from Microsoft that provides an end-to-end DevOps toolchain for developing and deploying software and integrates with most of the leading tools in the market. It provides features to build web, mobile, or desktop applications and deploy to any cloud platform or on-premises. As an Application Lifecycle Management (ALM) system, it helps the entire project team with:
- Capturing requirements
- Planning agile and traditional projects
- Managing work items
- Version control
- Building, deploying, delivering, and testing
Despite being launched in October 2018, Azure DevOps is not the new kid on the DevOps block. Azure DevOps is the evolution of Visual Studio Team System (VSTS) which was launched back in 2006. This is a mature product with a rich feature-set that has over 80,000 internal users at Microsoft. Furthermore, in the open-source community, people use Visual Studio as a development environment that integrates seamlessly with Azure DevOps.
The Five Key Services
Azure Board
A tool for Agile planning, portfolio management, and processes, Azure Board provides the entire team with more visibility of project progress. It helps to:
- Integrate the business requirement from epics to delivery of business goals
- Plan, manage, and track work across your entire team
- Track sprint backlog, user stories, Kanban board, and related work items
- Increase team collaboration by facilitating discussions
- Create dashboards and track the status and trends of accomplished work
- Set and send instant notification alerts when an issue is created, change or modified
Azure Repo
Azure Repo is a cloud-hosted private Git repository service and serves as a tool for version control of codebases like GitHub and GitLab. It has features to:
- Create branches and pull requests
- See commit history, tags, and discussion
- Support any Git client
- Integrate webhooks and API
- Automate with built-in CI/CD
Azure Pipeline
Azure Pipelines is a cloud service deployment system that connects to any Git repository, automatically-built set, and test code project, making it available to other users. It combines continuous integration (CI) and continuous delivery (CD) to constantly and consistently test and build your code, and ship it to any target which could be Azure cloud or any other cloud provider. You are also able to:
- Build on any platform or on any language code which increases deployment speed
- Leverage a wide range of community-generated builds, tests, and deployment tasks
- Link hundreds of extensions ranging from Slack to SonarCloud
Azure Test Plans
Azure Test Plans is a manual test management tool that provides solutions for test planning, execution, and capturing data about defects. It is equipped with:
- End-to-end traceability because tests and defects are automatically linked to the requirements and the build being tested, which also helps you track the quality of the requirements.
- Three main types of test management artifacts: test plans, test suites, and test cases
- A browser-based test management solution for exploratory, planned manual, and user acceptance testing
Azure Artifacts
Azure Artifacts is a fully integrated package management service for continuous integration/continuous delivery (CI/CD) pipelines, where a project can create and share Maven, npm, NuGet, and Python package feeds from public and private sources with teams of any size. It is also a hosting facility for universal packages that seamlessly integrate with the CI/CD pipeline.
Extensible, Flexible & Distributed
Each of these Azure DevOps services is open and extensible and can be used with all varieties of applications, regardless of the framework, platform, or cloud. Built-in cloud-hosted agents are provided for Windows, Mac OS, and Linux, and workflows are enabled for native container support and Kubernetes deployment options, virtual machines, and serverless environments. Moreover, you have the flexibility of adding customized agents depending on the project.
You can also take advantage of an integrated suite that provides end-to-end DevOps functionalities. Since they are broken up into separate components, Azure DevOps gives users the flexibility to choose the specific services they want to employ without the need for the full suite. For example, Kubernetes has a standard interface and runs the same way on all cloud providers. Azure Pipelines can be used for deploying to Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS), or clusters from any other cloud provider without requiring the other Azure DevOps components.
Developers and teams using Azure DevOps are able to work securely from anywhere, in any format, and truly embrace open-source technology. It also addresses the vendor lock-in problem from its earlier version by providing extensive integration with industry and community tools. Furthermore, with the many integrations available, users can log in using SSO tools like Azure AD or communicate with their team via Slack integration while accessing both cloud and on-premises resources such as Atom, CPython, Visual Studio Code, and TypeScript.
How Azure DevOps Can Benefit Your Team
- Planning — Team members can easily manage work with full visibility across products and projects. You can also define, track, and layout work with Kanban boards, backlogs, custom dashboards, and reporting capabilities using Azure Boards. This helps to keep development efforts transparent and on schedule.
- Developing — Team members can share code and collaborate more effectively with Visual Studio Code. With Azure Pipelines, you can create automatic workflows for automated testing and continuous integration in the cloud.
- Delivery — Team members can deploy applications to any Azure service automatically and with full control. You can define and spin up multiple cloud environments with Azure Resource Manager or HashiCorp Terraform, and then implement continuous delivery pipelines into these environments using Azure Pipelines or tools such as Jenkins and Spinnaker.
- Operations — Team members can implement full-stack monitoring, get actionable alerts, and gain insights from logs and telemetry using Azure Monitor.
Azure DevOps Is the Future
The demand for cloud services has undoubtedly skyrocketed with more and more businesses seeking to innovate and increase agility. Amazon was the first company that provided cloud services, followed by Google and Microsoft. While competition is fierce at the top between these three giants, I have observed that the market share for Microsoft is gaining traction, with adoption rates among startup and SME companies slowly increasing.
Microsoft has interesting startup services to offer like Azure credits, software tools (Office 365, BizSpark), consultation sessions, and marketing support that makes it appealing for companies to build their innovative software solution and infrastructure. An uptick of hybrid cloud trends will see companies adopt multi-cloud providers for different segments of the business, and Microsoft Azure will predictively be in a better position as it provides greater support.
Aside from the aforementioned offerings, Microsoft runs three startup solutions: Reactors, ScaleUp, and Ventures. Reactors are locations in major cities where learning, networking, and resource sharing take place. ScaleUp, previously known as Microsoft Accelerator, provides sales, marketing, and technical support for enterprise-ready companies as they market and sell their solution. Ventures is a Microsoft-led funding program for software companies looking for Series A, B, or C funding. While the tiered system reinforces the need for an incubator, accelerator, or venture capitalist backing, the overall program is another step towards helping companies drive innovation.
Plan Smarter, Collaborate Better, Ship Faster
DevOps brings together people, processes, and technology to provide continuous delivery with high software quality. In the arena of DevOps, Azure DevOps has everything you need. It supports the Agile methodology and has a huge marketplace of tools to support all programming languages and other available products in the market. Most importantly, it integrates seamlessly with other available cloud providers.
To simplify and accelerate the continuous delivery of high quality and reliable products, I would highly recommend using Azure DevOps for new projects to improve your planning, development, delivery, and operations to meet your business needs.
Happy coding!! If you would like to share your experience of using Azure DevOps with me, I would be glad to have a discussion. In my next article, I will show how we can deploy our frontend and backend coding using Azure DevOps. So stay connected and see you next time.