An Ultimate Guide To Cloud Based DevOps On Microsoft Azure
This article provides a conceptual overview of DevOps on Microsoft Azure. It will give you the information necessary to understand how services, tools and technologies can be combined in order to successfully deploy applications into production.
The Azure DevOps service is a suite of integrated services that provides an end-to-end solution for modern software development.
What is DevOps?
Let’s do a quick recap of the basics…
DevOps is a management philosophy that is designed to bring together the skills from developers and operations to create an agile, more accessible, and more cost-effective way of developing custom software.
DevOps is primarily adopted to get benefits of - Improving Business Agility & Cost savings.
The term "DevOps" was first coined in 2009 by Patrick Debois. It is a contraction of development (usually shortened to “Dev") and operations (shortened to “Ops"). The term is used to refer to the merger of the disparate skillsets between development and operations teams.
DevOps, along with its implementation on Cloud maximizes the cost-benefit of cost savings on Infrastructure along with lean Operations, while also improving agility.
Why should you choose Azure as your DevOps platform?
Azure is Microsoft's answer to Amazon and Google Cloud's dominance in the cloud computing market. Azure is a powerful, flexible, and intuitive platform that enables developers to create scalable, secure, and reliable applications.
It's been designed with DevOps in mind, leveraging tools such as Visual Studio 2017, Xamarin, Docker, Git, and more.
It should be noted that Azure has an excellent security track record. Their isolation processes are top-notch and they have a robust set of authorization models that you can use to create the right level of access for your users. Azure also handles patching quite well.
Azure DevOps is an organization-wide, collaborative and configurable platform for writing software that provides developer tools and other features to help teams be more efficient and to improve the quality of their code. It can be used by teams of all sizes, in all industries, and in many countries around the world.
DevOps’s main goal is to make it easier for developers to work with the parts of the software lifecycle that they find hardest while working on the parts they enjoy most. Developers are able to manage their work with a single toolset, and azure falls right at this sweet spot.
How to get started with Azure DevOps
Azure DevOps is a cloud-based suite of tools for managing software development processes and workflows, including planning, testing, releasing, and maintaining applications.
Know the DevOps Suite
The Azure DevOps suite includes -
Azure Pipelines - a continuous integration (CI) and continuous delivery (CD) pipeline service that enables developers to create an automated build pipeline that can be configured with a YAML file or a graphical user interface. Azure DevOps can also be used to orchestrate third-party tools.
Azure Boards - provides project management features such as backlogs, Kanban boards, dashboards, and reports.
Azure Repos - allows teams to collaborate on code, acting as code repository
Azure Artifacts - provides integrated package management with support for Maven, npm, Python, and NuGet package feeds from public or private sources
Azure Test Plans - provides an integrated planned and exploratory testing solution. Fully automated testing provides regression testing assurances
Accessing Azure DevOps
Use the following URL to access -
Azure provides real-time status of all of the DevOps tooling in a location, as one of the easiest mechanisms to keep track of this infrastructure
Azure DevOps Toolset
Azure Repos is a service that includes free and unlimited private Git Repos, so Azure Repos is easy to try out. Git is the most commonly used version control system today and is quickly becoming the version control definition. Team members commit developed code locally, and then sync their copies of the repository with the copy on the server, once they have finished their tasks. This becomes the gold copy for all future reference and build
Azure DevOps and Github Integration: a match made in heaven!
Github is the de-facto GitHub repository for most organizations, and provides the most intuitive git repository for all developers, with strong community support.
With the right coding and development tools, Azure DevOps and Github integration has become a reality. This is a match made in heaven for anyone who needs to get work done quickly and efficiently.
Azure DevOps has built-in integration with Github, allowing for easy communication between the two platforms. Irrespective of the on-premise or cloud-based installation of Azure DevOps, these two worlds are unified. On-premise installations of Azure DevOps have the same level of integration as those on a cloud site.
Azure DevOps Pipeline is a great feature and follows in same lines as Hudson / Jenkins allowing developers to automate builds & deployments using CI/CD approach (Continue Integration/Continuous Delivery). This is the core of Azure DevOps implementation freeing up time for developers to address new features and bug fixes rather than losing time on redundant and repeatable deployment tasks.
Azure Pipelines are based on the following concepts:
Azure Pipeline Stages is the key feature allowing to segregate parts of the pipeline into groups to be executed sequentially. To start with, each DevOps pipeline has just one stage. Every stage has a set of jobs that will be executed in a sequential manner. A single pipeline can also be comprised of multiple stages if specified using the 'stages' and 'stage' keywords. Refer jobs below for further information.
An Azure Pipeline job is a collection of tasks or steps to be performed and is a part of the pipeline stage. To begin with, each pipeline stage has just one job, which will typically be used to either deploy to a specific environment or perform one logical task. Each job can include multiple steps (detailed below).
Multiple jobs are specified by 'jobs' and 'job' keywords. Jobs run in parallel. Jobs by default do not run sequentially, so this is where having multiple stages can come in handy if that is a requirement for your pipeline.
Steps and Tasks
A job typically is a combination of steps or tasks that run sequentially. Steps contain tasks, or components for e.g. scripts for build, configuration management, reference data updates, integrity checks, file copying, security setup, logging, monitoring setup, containerization, or any such packaging. Developers can leverage tasks that are already available as preprogrammed functions or developers may create a custom task.
Azure Test Plans
Azure Test Plans is the rich and powerful tool that everyone in the team typically will use to achieve quality and collaboration throughout the development process. The easy-to-use, browser-based test management solution provides all the capabilities required for planned testing (manual), UAT, and many other types of testing.
Azure Test Plans is composed of a few concepts viz. Test Plans, Test Suites, Test Cases, Shared Steps, Configurations, Runs & Shared Parameters—which support requirements to track & share test steps/data across multiple test cases. Test cases can be assigned as manual or automated.
Tests and defects are automatically linked to the requirements and build being tested, supporting tracking of the quality of requirements leading to traceability, ensuring the quality of deliverables.
Manual Testing is supported by organizing tests into test plans and test suites, which can compare the outcomes against a set of customer requirements while reusing the test artifacts created by engineering teams.
Automated Testing is achieved by its integration with Azure Pipelines for CI/CD approach, with test cases typically associated with the build and release pipelines. Pipeline tasks can be added to pipeline definitions to capture and publish test results. Built-in progress reports and pipeline test reports are key to capturing Test Results.
Dashboards with built-in reports, for e.g. Pipeline test result reports provide great insights into the entire CI/CD and assure quality.
In summary, Azure DevOps is an amazing end-to-end automated & fully integrated - Cloud-native DevOps capability, which allows for complete implementation of CI-CD approach within the Azure Stack, without the need to install or host any other third-party solutions.
This is ideal for Development teams who have chosen Azure as their primary cloud stack with lots of brilliant built-in capability.
Author: Dilish Kuruppath / BridgeApps Ltd, London, UK