Azure Devops

Azure Cloud

Azure DevOps Table of Contents

Introduction to Azure DevOps

  • Overview of Azure DevOps
  • Key Features and Services
  • Azure DevOps vs Traditional CI/CD

Azure Repos

  • Git Repositories
  • Code Review with Pull Requests
  • Branch Policies
  • Managing Code Versions

Azure Pipelines

  • Overview of Pipelines (CI/CD)
  • Classic vs YAML Pipelines
  • Pipeline Configuration (Triggers, Stages, Jobs, Tasks)
  • Build and Release Pipelines
  • Pipeline Templates
  • Pipeline Caching and Artifacts
  • Integration with GitHub, Bitbucket, and other platforms

Azure Boards

  • Work Items (Epics, Features, User Stories, Tasks, Bugs)
  • Agile Methodologies (Scrum, Kanban)
  • Backlog Management
  • Sprint Planning
  • Managing Sprints and Iterations

Azure Test Plans

  • Test Case Management
  • Manual and Automated Testing
  • Exploratory Testing
  • Test Execution and Reporting
  • Integration with Azure Pipelines

Azure Artifacts

  • Managing Package Feeds
  • Hosting NuGet, npm, Maven, and Python Packages
  • Integrating with Pipelines for Continuous Delivery

Azure DevOps Security and Permissions

  • Managing User Permissions
  • Role-Based Access Control (RBAC)
  • Secure Pipelines with Secrets (Variable Groups, Key Vault)
  • Compliance and Governance

Azure DevOps Integration

  • Integration with GitHub, Jenkins, and Other Tools
  • Service Connections (Azure, AWS, GCP)
  • Integrating with Slack, Teams, and other Notification Services

Azure DevOps Administration

  • Managing Organizations and Projects
  • Setting Up and Configuring Agents (Self-hosted vs Microsoft-hosted)
  • Auditing and Monitoring Pipelines
  • Backup and Recovery of Azure DevOps

Terraform

  • Manage Azure cloud with Terraform
  • Azure Devops and Terraform Pipeline

Best Practices for Azure DevOps

  • CI/CD Best Practices
  • Managing Large Teams and Multiple Projects
  • Optimizing Pipeline Performance
  • Version Control Strategies

DevOps Introduction

Agenda

  • DevOps Overview
  • DevOps Lifecycle
    • Waterfall Model
    • SCRUM Methodology
    • Kanban Overview
    • Agile Methodology
  • Software Development Models
  • Software Development Life Cycle (SDLC)

SDLC

The Software Development Life Cycle (SDLC) refers to a methodology with clearly defined processes for creating high-quality software.

Phases of SDLC:

  1. Analysis
  2. Planning
  3. Design
  4. Development
  5. Testing
  6. Deployment

Goals:

  • Lowering costs
  • Highest quality
  • Shortened overall time

Before DevOps

  • Waterfall Model: Straightforward and linear, follows a top-down approach.
  • Agile Methodology: Iterative, sprint-based development.

Agile Methodology

Agile is an iterative-based software development approach, breaking projects into various sprints.

Key Features:

  • High-priority features
  • Customer feedback
  • Application improvement post-feedback

12 Agile Principles:

  1. Customer satisfaction
  2. Embracing changing requirements
  3. Frequent delivery
  4. Regular communication
  5. Support team members
  6. Face-to-face communication
  7. Measuring work progress
  8. Continue seeking results
  9. Reflect and adjust regularly
  10. Development process improvement
  11. Measure progress
  12. Good design

SCRUM Methodology

Scrum is one of the most popular Agile frameworks.

SCRUM Roles:

  • Scrum Master: Coach and gatekeeper, ensuring the Agile framework is followed.
  • Product Owner: Subject matter expert tracking stakeholder expectations and communicating vision.

SCRUM Workflow:

  1. Initial Release
  2. Sprint Planning
  3. Daily Scrum
  4. Product Increment
  5. Sprint Review
  6. Sprint Retrospective

Kanban Methodology

A scheduling system for lean and JIT processes, using visual “Kanban cards” to keep a constant workflow.


DevOps Overview

DevOps is a culture of collaboration between development, operations, and business teams to deliver continuous value.

DevOps Lifecycle:

  • Continuous Planning
  • Collaborative Development
  • Continuous Testing
  • Continuous Deployment
  • Continuous Monitoring
  • Continuous Feedback and Optimization

Benefits of DevOps:

  • Predictability
  • Maintainability
  • Reproducibility
  • Greater quality
  • Time to market
  • Reduced risk
  • Cost efficiency
  • Resiliency

Azure DevOps

Agenda:

  • Introduction to Azure DevOps
  • Azure Boards
  • Azure Repos
  • Azure Pipelines
  • Azure Test Plans
  • Azure Artifacts

Azure DevOps

DevOps is the union of people, processes, and products to enable continuous delivery of value to the end-users.

Using Azure DevOps, we can plan smarter, collaborate better, and deliver reliable software faster with modern services.

Azure Boards:

Azure Boards is a web-based service that enables teams to plan, track, and discuss work across the entire development process. It supports agile methodologies, including Scrum and Kanban.

Key Features:

  • Work Items: Access lists of work items based on specific criteria.
  • Boards: View work items as cards and update their status.
  • Backlogs: Plan, order, and organize work items.
  • Sprints: Filtered view of work items based on a sprint.
  • Queries: Custom work item lists.
  • Delivery Plans: View deliverables and track dependencies across multiple teams.
  • Analytics Views: Create sophisticated Power BI reports.

Repository Management

By: Rohit K Singh

Agenda:

  • Introduction to Version Control
  • Different types of Version Control
    • Centralized
    • Distributed
  • Introduction to GIT
  • Understanding GIT Stages
  • Installation and Setup
  • DEMO
  • Introduction to Azure Repos
  • Branching and merging strategy
  • Versioning
  • Merge types in Azure Repos
    • Merge (no fast forward)
    • Squash
    • Rebase and fast-forward
    • Semi-linear merge

Version Control

Version control, also known as source control, is the practice of tracking and managing changes to software code. Version control software tracks every developer change and helps prevent conflicts.


Types of Version Control:

  • Centralized Version Control: Offers software development teams a way to collaborate using a central server (e.g., SVN, TFVC).
  • Distributed Version Control: Contains multiple repositories. Each user has their own repository and working copy (e.g., Git).

Git Stages

Git has multiple stages:

  1. Commit: Locally saves changes.
  2. Push: Sends local commits to a remote repository.
  3. Pull: Fetches changes from a remote repository.

Branching Strategies

Branching strategies define how development teams manage feature work, releases, and hotfixes.

  • Git-Flow: A branching strategy that defines specific branch responsibilities, such as:
    • main/master for production
    • develop for active development
    • feature for new features
    • release for production releases
    • hotfix for urgent issues

Merge Types:

  • Merge (no fast forward): Preserves individual commits and creates a new merge commit.
  • Squash: Combines all commits from a pull request into a single commit.
  • Rebase: Re-applies commits on top of the destination branch, retaining a linear history.

Continuous Integration and Continuous Delivery (CI/CD)

CI/CD automates the process of integrating and deploying code changes.


Build Triggers:

  • Branch Path: Trigger builds when changes are made in specific branches.
  • Scheduled: Set up builds to run at scheduled times.
  • Pipeline Completion: Trigger a new pipeline when another pipeline completes.
  • Pull Request Completion: Trigger builds when a pull request is merged.

Containers and Kubernetes

Containerization

A container is a lightweight package that bundles an application and its dependencies, making it easier to deploy and manage across environments.

Benefits of Containers:

  • Portability
  • Scalability
  • Fault tolerance
  • Agility

Docker:

Docker is a platform for building, testing, and deploying containerized applications. It uses Dockerfiles to define the configuration for containers.


Kubernetes:

Kubernetes (K8s) is a container orchestration tool developed by Google, offering automatic scaling, load balancing, and self-healing for containerized applications.


Kubernetes Services:

  • Cluster IP: Internal communication between apps in the cluster.
  • NodePort: Opens a specific port on the node to expose services.
  • Load Balancer: Routes external traffic to services inside the cluster.

Azure Kubernetes Service (AKS):

A managed Kubernetes service in Azure for deploying and managing containerized applications.


Database Automation

DACPAC vs BACPAC

  • DACPAC: Data-Tier Application Package, contains schema but no data.
  • BACPAC: Backup Package, contains both schema and data.

Azure Vault

Azure Key Vault securely stores and accesses secrets, tokens, passwords, certificates, API keys, and encryption keys used in applications.


YAML Basics

YAML:

YAML (YAML Ain’t Markup Language) is a human-readable data serialization format commonly used in configuration files.