Module 1: Planning for DevOps
Transformation Planning
- What is DevOps?
- The DevOps journey
- Separating transformation teams
- Defining shared goals
- Setting timelines for goals
Project selection
- Greenfield and brownfield projects defined
- Choosing greenfield and brownfield projects
- Choosing systems of record versus systems of engagement
- Selecting groups to minimize initial resistance
- Identifying project metrics and Key Performance Indicators (KPIs)
Team structures
- Agile development practices defined
- Principles of agile development
- Creating organizational structures for agile practices
- Ideal DevOps team members
- Mentoring team members on agile practices
- Enabling in-team and cross-team collaboration
- Selecting tools and processes for agile practices
Migrating to DevOps
- What can Azure DevOps do?
- What can GitHub do?
- Designing an authorization and access strategy for Azure DevOps
- Migrating or integrating existing work management tools
- Migrating or integrating existing test management tools
- Designing a license management strategy
Lab: Agile planning and portfolio management with Azure Boards
Module 2: Getting Started with Source Control
Source control
- Introduction to source control
- Foundational practices of DevOps
- Best practices for source control
Types of source control systems
- Centralized source control
- Distributed source control
- Git and TFVC
Lab: Working with Git Locally
Introduction to Azure Repos
- Azure Repos
Introduction to GitHub
- What is GitHub?
- Linking GitHub to Azure Boards
Lab: Version controlling with Git in Azure Repos
Module 3: Managing Technical Debt
Identifying technical debt
- Code quality defined
- Complexity metrics
- Measuring and managing quality metrics
- Technical debt defined
- Sources and impacts of technical debt
- Using automated testing to measure technical debt
- Measuring and managing technical debt
- Integrating other code quality tools
Knowledge sharing within teams
- Sharing acquired knowledge within development teams
- Azure DevOps project wikis
- Wiki contents
Modernizing development environments with GitHub Codespaces
- Developing online with GitHub Codespaces
Lab: Sharing team knowledge using Azure project wikis
Module 4: Working with Git for Enterprise DevOps
Git branching workflows
- Branching workflow types
- Feature branch workflow
- GitFlow branch workflow
- Forking workflow
Collaborating with pull requests
- Git Hub mobile for pull request approvals
- Fostering inner source
- Implementing the forking workflow
Managing Git Repositories
- Working with large repositories
- Purging repository data
Lab: Version controlling with Git in Azure Repos
Module 5: Configuring Azure Pipelines
The concept of pipelines in DevOps
- The concept of pipelines in DevOps
- Azure Pipelines
- Azure Pipelines key terms
Evaluate the use of Microsoft-hosted vs self-hosted agents
- Microsoft-hosted versus self-hosted agents
- Job types
Agent pools
- Agent pools
- Predefined agent pool – Azure pipelines
- Typical situations for agent pools
- Security of agent pools
Pipelines and concurrency
- Parallel jobs
- Estimating parallel jobs
Azure Pipelines YAML versus Visual Designer
- Azure Pipelines and Visual Designer
- Azure Pipelines and YAML
Lab: Configuring Agent Pools and Understanding Pipeline Styles
Module 6: Implementing Continuous Integration using Azure Pipelines
Continuous integration overview
- Introduction to continuous integration
- The four pillars of continuous integration
- Benefits of continuous integration
- Build number formatting and build status
- Authorization and timeouts, and badges
Implementing a build strategy
- Configuring agent demands
- Implementing multi-agent builds
- Discussion: build-related tooling
Integrate with Azure Pipelines
- Anatomy of a pipeline
- Pipeline structure
- Templates
- YAML resources
- Using multiple repositories in your pipeline
- Source control types supported by Azure Pipelines
Set up self-hosted agents
- Communication with Azure Pipelines
- Communication to deploy to target servers
Lab: 1. Enabling continuous integration with Azure Pipelines
2. Integrating external source control with Azure Pipelines
Module 7: Managing Application Configuration and Secrets
Security
- Introduction to Security
- SQL injection attack
Implement a secure development process
- Threat modeling
- Key validation points
- Continuous integration
Rethinking application configuration data
- Rethinking application config data
- Separation of concerns
- External configuration store patterns
- Integrating Azure Key Vault with Azure Pipeline
Manage secrets, tokens, and certificates
- Manage secrets, tokens, and certificates
- DevOps inner and outer loop
Integrating with identity management systems
- Integrating GitHub with single sign-on (SSO)
- Service principals
- Managed service identities
Implementing application configuration
- Azure App configuration service
- Key-value pairs
- App configuration feature management
Lab: Integrating Azure Key Vault with Azure DevOps
Module 8: Implementing Continuous Integration with GitHub Actions
GitHub Actions
- Actions
- Actions flow
- Workflows
- Standard workflow syntax elements
- Events, Jobs, Runners
- Console output from actions
- Release management for actions
- Testing an action
Continuous integration with GitHub Actions
- Continuous integration with actions
- Environment variables
- Passing artifacts between jobs
- Workflow badges
- Marking releases with Git tags
Securing secrets for GitHub Actions
- Creating encrypted secrets
- Using secrets in a workflow
Lab: Implementing GitHub Actions by using DevOps Starter
Module 9: Designing and Implementing a Dependency Management Strategy
Packaging dependencies
- Dependency management
- Elements of a dependency management strategy
- Identifying dependencies
- Source and package componentization
- Decompose your system
- Scanning your codebase for dependencies
Package management
- Packages
- Package feeds
- Package feed managers
- Common public package sources
- Self-hosted and SaaS-based package sources
- Consuming packages
- Azure Artifacts
- Publishing packages
Migrating and consolidating artifacts
- Identifying existing artifact repositories
Package security
- Securing access to package feeds
- Roles, Permissions, Authentication
Implement a versioning strategy
- Introduction to versioning
- Versioning of artifacts
- Semantic versioning
- Release views
- Promoting packages
Lab: Package management with Azure Artifacts
Module 10: Designing a Release Strategy
Introduction to continuous delivery
- Traditional IT development cycle
- Moving to continuous delivery
- Continuous delivery
- Releases and deployments
Release strategy recommendations
- Release pipelines
- Artifact sources
- Considerations for choosing the appropriate artifact source
- Considerations for deployment to stages
- Delivery cadence – three types of triggers
- Release approvals
Building a high-quality release pipeline
- Release process versus release
- How to measure the quality of your release process
- Using release gates to protect the quality
- Release notes and documentation
Choosing the right release management tool
- Considerations for choosing release management tools
- Common release management tools
Lab: 1. Controlling deployments using Release Gates
2. Creating a release dashboard
Module 11: Implementing Continuous Deployment using Azure Pipelines
Create a release pipeline
- Azure DevOps release pipelines
- Build and release tasks
- Release jobs
- Multi-configuration and multi-agent
Provision and configure environments
- Provision and configure target environments
Manage and modularize tasks and templates
- Task groups
- Variables in release pipelines
- Variable groups
- Custom build/release tasks
Configure automated integration and functional test automation
- Configure automated integration and functional test automation
- Setting up test infrastructure
- Setting up and running availability tests
Automate inspection of health
- Automate inspection of health
- Events, subscriptions, and notifications
- Service hooks
Lab: 1. Configuring pipelines as code with YAML
2. Setting up and running functional tests
Module 12: Implementing an Appropriate Deployment Pattern
Deployment patterns
- Introduction to continuous delivery and continuous deployment
- Microservices architecture
- Classical deployment patterns
- Modern deployment patterns
Implement blue-green deployment
- Blue-green deployment
- Deployment slots
Feature toggles
- Introduction to feature toggles
- Feature toggle maintenance
Canary releases
- Canary releases
- Traffic manager
- Dark launching
- A/B testing
Progressive exposure deployment
- CI/CD with deployment rings
Lab: Feature flag management with Launch Darkly and Azure DevOps
Module 13: Managing Infrastructure and Configuration using Azure Tools
Infrastructure as code and configuration management
- Environment deployment
- Environment configuration
- Imperative versus declarative configuration
- Idempotent configuration
Create Azure resources using ARM templates
- Use ARM templates
- Template components
- Manage dependencies
- Modularize templates
- Managing secrets in templates
Create Azure resources using Azure CLI
- Azure CLI
- Working with Azure CLI
Azure Automation with DevOps
- Azure Automation
- Automation accounts
- Runbook
- Automation shared resources
- Runbook Gallery, Webhooks
- Source control integration
- Creating a workflow
- Checkpoint and parallel processing
Desired State Configuration (DSC)
- Configuration drift
- Desired State Configuration (DSC)
- Azure Automation State Configuration
- DSC configuration file
- Hybrid management
- DSC and Linux Automation on Azure
Lab: Deployments using Azure Resource Manager templates
Module 14: Third-party Infrastructure as Code Tools Available with Azure
Chef
- Chef Automate
- Chef Cookbooks
- Chef Knife Command
Puppet
- Deploying Puppet in Azure
- Manifest files
Ansible
- Ansible workflow
- Ansible components
- Installing Ansible
- Ansible on Azure
- Playbook structure
Terraform
- Terraform components
- Terraform on Azure
- Installing Terraform
- Terraform config file structure
Lab: 1. Ansible with Azure
2. Automating infrastructure deployments in the cloud with Terraform and Azure Pipelines
Module 15: Managing Containers using Docker
Implementing a container build strategy
- Containers
- Structure of containers
- Docker containers and development
- Working with Docker containers
- Microservices and containers
- Docker container registries
- Dockerfile core concepts
Implementing Docker multi-stage builds
- Multiple stages builds
- Multi-stage Dockerfiles
- Considerations for multiple stages builds
Lab: Deploying Docker containers to Azure App Service web apps
Module 16: Creating and Managing Kubernetes Service Infrastructure
Azure Kubernetes Service
- Kubernetes overview
- Azure Kubernetes Service
- AKS architectural components
- Kubernetes networking
- Ingress controllers
- Deployment units
- Continuous deployment
Kubernetes tooling
- Kubectl
- Helm
- Kubernetes extension for Visual Studio Code
Integrating AKS with pipelines
- Kubernetes and Azure Key Vault
- Readiness, startup, and liveness probes
Lab: Deploying a multi-container application to Azure Kubernetes Services
Module 17: Implementing Feedback for Development Teams
Implement tools to track system usage, feature usage, and flow
- Introduction to continuous monitoring
- Azure Log Analytics
- Kusto Query Language (KQL)
- Application Insights
Implement routing for mobile application crash report data
- App Center Diagnostics
- Configure alerts
- Create a bug tracker
Develop monitoring and status dashboards
- Power BI
- Grafana
- IT Service Management Connector
Lab: Monitoring application performance with Application Insights
Module 18: Implementing System Feedback Mechanisms
Site reliability engineering
- site reliability engineering
Design practices to measure end-user satisfaction
- Capturing end-user satisfaction
- Capturing feedback in product
- Feedback from product roadmap
- Twitter sentiment release gate
Design processes to automate application analytics
- Rapid responses and augmented search
- Integrating telemetry
- Recommending monitoring tools and technologies
Managing alerts
- When would I get a notification?
- How do I fix it?
- Smart detection notifications
- How can I improve performance?
- Reducing meaningless and non-actionable alerts
Lab: Integration between Azure DevOps and Microsoft Teams
Module 19: Implementing Security in DevOps Projects
Security in the pipeline
- rugged DevOps
- Rugged DevOps pipeline
- Software composition analysis (SCA)
- WhiteSource integration with Azure DevOps pipeline
- Micro Focus Fortify integration with Azure Pipelines
- Checkmarx integration with Azure DevOps
- Veracode integration with Azure DevOps
- Implementing pipeline security
- Secure DevOps Kit for Azure (AzSK)
Azure Security Center
- Azure Security Center usage scenarios
- Azure Policy
- Resource locks
- Azure Blueprints
- Azure Advanced Threat Protection (ATP)
Lab: Implement security and compliance in Azure DevOps Pipelines
Module 20: Validating Code Bases for Compliance
Open-source software
- How software is built
- open-source software
- Corporate concerns with open-source software components
- Open-source licenses
- License implications and ratings
Managing security and compliance policies
- Inspecting and validating code bases for compliance
- Planning to implement OWASP Secure Coding Practices
Integrating license and vulnerability scans
- Implement continuous security validation
- OWASP ZAP penetration testing
- OWASP ZAP results and bugs
- Tools for assessing package security and license rating
- SonarCloud
- Interpret alerts from scanning tools
- CodeQL in GitHub
- GitHub Dependabot alerts and security updates