You are on page 1of 5

Design a CI/CD pipeline using Azure DevOps

Overview

The document provides architecture and design guidance for building a continuous integration (CI)
and continuous deployment (CD) pipeline. CI/CD processes provides many benefits for application
builds, deployments, testing, and monitoring.

What is Azure DevOps?

DevOps is a combination of both software engineering practice and culture that unifies software
development, the DEV, software operations, and the OPS, improving products while considering
customer feedback.

Azure DevOps Process

 Accelerating application development and development lifecycles.


 Building quality and consistency into an automated build and release process
 Increasing application stability and uptime.
DevOps and the application lifecycle

PLAN

In the plan phase, DevOps teams ideate, define, and describe features and capabilities of the
applications and systems they are building. They track progress at low and high levels of granularity
—from single-product tasks to tasks that span portfolios of multiple products. Creating backlogs,
tracking bugs, managing agile software development with Scrum, using Kanban boards and
visualising progress with dashboards are some of the ways DevOps teams plan with agility and
visibility.

DEVELOP

The develop phase includes all aspects of coding—writing, testing, reviewing and the integration of
code by team members—as well as building that code into build artefact’s that can be deployed into
various environments. DevOps teams seek to innovate rapidly without sacrificing quality, stability
and productivity. To do that, they use highly productive tools, automate mundane and manual steps
and iterate in small increments through automated testing and continuous integration.

DELIVER
In the deliver phase, teams define a release management process with clear manual approval stages.
They also set automated gates that move applications between stages until they’re made available
to customers. Automating these processes makes them scalable, repeatable, controlled. This way,
teams who practice DevOps can deliver frequently with ease, confidence and peace of mind.

OPERATE

The operate phase involves maintaining, monitoring and troubleshooting applications in production
environments. In adopting DevOps practices, teams work to ensure system reliability, high
availability and aim for zero downtime while reinforcing security and governance. DevOps teams
seek to identify issues before they affect the customer experience and mitigate issues quickly when
they do occur. Maintaining this vigilance requires rich telemetry, actionable alerting and full visibility
into applications and the underlying system.

Architecture

The data flows through the scenario as follows:

1. A developer changes application source code.


2. Application code including the web.config file is committed to the source
code repository in Azure Repos.
3. Continuous integration triggers application build and unit tests using Azure
Test Plans.
4. Continuous deployment within Azure Pipelines triggers an automated
deployment of application artifacts with environment-specific configuration
values.
5. The artifacts are deployed to Azure App Service.
6. Azure Application Insights collects and analyzes health, performance, and
usage data.
7. Developers monitor and manage health, performance, and usage information.
8. Backlog information is used to prioritize new features and bug fixes using
Azure Boards.
Components

Azure DevOps: A service for managing your development lifecycle end-to-end—from


planning and project management, to code management, and continuing to build and
release

Azure Virtual Machine: Handles workloads that require a high degree of control, or depend
on OS components and services that are not possible with Web Apps

Azure Functions: Provides an effective serverless approach if the workload architecture is


centered around fine grained distributed components, requiring minimal dependencies,
where individual components are only required to run on demand (not continuously) and
orchestration of components is not required.

CI/CD for Containers

Containers make it very easy for you to continuously build and deploy your applications. By
orchestrating deployment of those containers using Kubernetes in Azure Kubernetes Service (AKS),
you can achieve replicable, manageable clusters of containers.

By setting up a continuous build to produce your container images and orchestration, Azure DevOps
increases the speed and reliability of your deployment.

Characteristics of DevOps include the extensive support of automating and monitoring all stages of
software development from integrating, testing, releasing, deploying, and managing the
infrastructure.

Management and Security Considerations

 Azure Key Vault tasks can download secrets from an Azure Key Vault into your
release. You can then use those secrets as variables in your release definition, which
avoids storing them in source control.

 Use release variables in your release definitions to drive configuration changes


of your environments. Release variables can be scoped to an entire release or
a given environment. When using variables for secret information, ensure that
you select the padlock icon.

 Deployment gates should be used in your release pipeline. This lets you
leverage monitoring data in association with external systems (for example,
incident management or additional bespoke systems) to determine whether a
release should be promoted.

 Where manual intervention in a release pipeline is required, use the approvals


functionality.

 Consider using Application Insights and additional monitoring tools as early as


possible in your release pipeline. Many organizations only begin monitoring in
their production environment. By monitoring your other environments, you can
identify bugs earlier in the development process and avoid issues in your
production environment.

You might also like