Azure Devops
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:
- Analysis
- Planning
- Design
- Development
- Testing
- 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:
- Customer satisfaction
- Embracing changing requirements
- Frequent delivery
- Regular communication
- Support team members
- Face-to-face communication
- Measuring work progress
- Continue seeking results
- Reflect and adjust regularly
- Development process improvement
- Measure progress
- 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:
- Initial Release
- Sprint Planning
- Daily Scrum
- Product Increment
- Sprint Review
- 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:
- Commit: Locally saves changes.
- Push: Sends local commits to a remote repository.
- 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 productiondevelop
for active developmentfeature
for new featuresrelease
for production releaseshotfix
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.