AZ-400: Designing and Implementing Microsoft DevOps Solutions
Duration: 4 Days Overview
This course provides the knowledge and skills to design and implement DevOps processes and practices. Students will learn how to plan for DevOps, use source control, scale Git for an enterprise, consolidate artifacts, design a dependency management strategy, manage secrets, implement continuous integration, implement a container build strategy, design a release strategy, set up a release management workflow, implement a deployment pattern, and optimize feedback mechanisms
Learning Objectives
Plan for the transformation with shared goals and timelines
Select a project and identify project metrics and Key Performance Indicators (KPI's)
Create a team and agile organizational structure
Design a tool integration strategy
Design a license management strategy (e.g., Azure DevOps and GitHub users)
Design a strategy for end-to-end traceability from work items to working software
Design an authentication and access strategy
Design a strategy for integrating on-premises and cloud resources
Describe the benefits of using Source Control
Describe Azure Repos and GitHub
Migrate from TFVC to Git
Manage code quality including technical debt SonarCloud, and other tooling solutions
Build organizational knowledge on code quality
Explain how to structure Git repos
Describe Git branching workflows
Leverage pull requests for collaboration and code reviews
Leverage Git hooks for automation
Use Git to foster inner source across the organization
Explain the role of Azure Pipelines and its components
Configure Agents for use in Azure Pipelines
Explain why continuous integration matters
Implement continuous integration using Azure Pipelines
Define Site Reliability Engineering
Design processes to measure end-user satisfaction and analyze user feedback
Design processes to automate application analytics
Manage alerts and reduce meaningless and non-actionable alerts
Carry out blameless retrospectives and create a just culture
Define an infrastructure and configuration strategy and appropriate toolset for a release pipeline and application infrastructure
Implement compliance and security in your application infrastructure
Describe the potential challenges with integrating open-source software
Inspect open-source software packages for security and license compliance
Manage organizational security and compliance policies
Integrate license and vulnerability scans into build and deployment pipelines
Configure build pipelines to access package security and license ratings
Course Outline:
Introduction to DevOps
Understand what DevOps is and the steps to accomplish it
Identify teams to implement the process
Plan for the transformation with shared goals and timelines
Plan and define timelines for goals
Choose the right project
Understand different projects and systems to guide the journey
Select a project to start the DevOps transformation
Identify groups to minimize initial resistance
Identify project metrics and Key Performance Indicators (KPI's)
Describe team structures
Understand agile practices and principles of agile development
Create a team and agile organizational structure
Identify ideal DevOps team members
Select and configure tools for collaboration
Choose the DevOps tools
Design a tool integration strategy
Design a license management strategy (e.g. Azure DevOps and GitHub users)
Design a strategy for end-to-end traceability from work items to working software
Design an authentication and access strategy
Design a strategy for integrating on-premises and cloud resources
Plan Agile with GitHub Projects and Azure Boards
Describe GitHub Projects and Azure Boards
Link Azure Boards and GitHub
Configure and Manage GitHub Projects and boards
Customize Project views
Introduction to source control
Understand source control
Apply best practices for source control
Describe the benefits of using source control
Describe types of source control systems
Apply source control practices in your development process
Explain the differences between centralized and distributed version control
Understand Git and TFVC
Develop using Git
Work with Azure Repos and GitHub
Describe Azure Repos and GitHub
Migrate from TFVC to Git
Work with GitHub Codespaces
Structure your Git Repo
Understand Git repositories
Implement mono repo or multiple repos
Explain how to structure Git Repos
Implement a change log
Manage Git branches and workflows
Describe Git branching workflows
Implement feature branches
Implement GitHub Flow
Fork a repo
Collaborate with pull requests in Azure Repos
Leverages pull requests for collaboration and code reviews
Give feedback using pull requests
Configure branch policies
Use GitHub mobile for pull requests approvals
Lab:
Azure Repos collaborating with pull requests
Identify technical debt
Identify and manage technical debt
Integrate code quality tools
Plan code reviews
Describe complexity and quality metrics
Explore Git hooks
Understand Git hooks
Identify when used Git hooks
Implement Git hooks for automation
Explain Git hooks' behavior
Plan foster inner source
Use Git to foster inner source across the organization
Implement fork workflow
Choose between branches and forks
Share code between forks
Manage Git repositories
Understand large Git repositories
Explain VFS for Git
Use Git Large File Storage (LFS)
Purge repository data
Manage and Automate Release Notes with GitHub
Explore Azure Pipelines
Describe Azure Pipelines
Explain the role of Azure Pipelines and its components
Decide Pipeline automation responsibility
Understand Azure Pipeline key terms
Manage Azure Pipeline agents and pools
Choose between Microsoft-hosted and self-hosted agents
Install and configure Azure Pipelines Agents.
Configure agent pools
Make the agents and pools secure
Explore communication to deploy using Azure Pipelines
Describe pipelines and concurrency
Use and estimate parallel jobs
Use Azure Pipelines for open-source or private projects
Use Visual Designer
Work with Azure Pipelines and YAML
Explore continuous integration
Explain why continuous integration matters
Implement continuous integration using Azure Pipelines
Explain the benefits of continuous integration
Describe build properties
Implement a pipeline strategy
Define a build strategy
Explain and configure demands
Implement multi-agent builds
Use different source control types available in Azure Pipelines
Integrate with Azure Pipelines
Describe advanced Azure Pipelines anatomy and structure
Detail templates and YAML resources
Implement and use multiple repositories
Introduction to GitHub Actions
Explain GitHub Actions and workflows
Create and work with GitHub Actions and Workflows
Describe Events, Jobs and Runners
Examine output and release management for actions
Learn continuous integration with GitHub Actions
Implement Continuous Integration with GitHub Actions
Use environment variables
Share artifacts between jobs and use Git tags
Create and manage secrets
Design a container build strategy
Design a container strategy
Work with Docker Containers
Create an Azure Container Registry
Explain Docker microservices and containers
Introduction to continuous delivery
Explain continuous delivery (CD)
Implement continuous delivery in your development cycle
Understand releases and deployment
Identify project opportunities to apply CD
Create a release pipeline
Explain the terminology used in Azure DevOps and other Release Management Tooling.
Describe what a Build and Release task is, what it can do, and some available deployment tasks
Implement release jobs
Lab:
Select an artifact source
Lab:
Set up stages
Explore release recommendations
Explain things to consider when designing your release strategy
Define the components of a release pipeline and use artifact sources
Create a release approval plan
Implement release gates
Lab:
Select your delivery and deployment cadence
Lab:
Set up manual approvals
Provision and test environments
Provision and configure target environment
Deploy to an environment securely using a service connection
Configure functional test automation and run availability tests
Setup test infrastructure
Lab:
Set up service connections
Manage and modularize tasks and templates
Use and manage task and variable groups
Use release variables and stage variables in your release pipeline
Use variables in release pipelines
Lab:
Create and manage task groups
Lab:
Create and manage variable groups
Automate inspection of health
Implement automated inspection of health
Create and configure events
Configure notifications in Azure DevOps and GitHub
Create service hooks to monitor the pipeline
Classify a release versus a release process, and outline how to control the quality of both.
Choose a release management tool
Lab:
Set up service hooks to monitor the pipeline
Introduction to deployment patterns
Describe deployment patterns
Explain microservices architecture
Understand classical and modern deployment patterns
Plan and design your architecture
Implement blue-green deployment and feature toggles
Explain deployment strategies
Implement blue-green deployment
Understand deployment slots
Implement and manage feature toggles
Lab:
Set up a blue-green deployment
Implement canary releases and dark launching
Describe deployment strategies
Implement canary release
Explain traffic manager
Understand dark launching
Implement A/B testing and progressive exposure deployment
Implement progressive exposure deployment
Implement A/B testing
Implement CI/CD with deployment rings
Identify the best deployment strategy
Lab:
Ring-based deployment
Integrate with identity management systems
Integrate Azure DevOps with identity management systems
Integrate GitHub with single sign-on (SSO)
Understand and create a service principal
Create managed service identities
Manage application configuration data
Rethink application configuration data
Understand the separation of concerns
Integrate Azure Key Vault with Azure Pipelines
Manage secrets, tokens, and certificates
Describe Azure App Configuration
Understand Key-value pairs
Understand app configuration feature management
Implement application configuration
Explore infrastructure as code and configuration management
Understand how to deploy your environment
Plan your environment configuration
Choose between imperative versus declarative configuration
Explain idempotent configuration
Create Azure resources using Azure Resource Manager templates
Create Azure resources using Azure Resource Manager templates
Understand Azure Resource Manager templates and template components
Manage dependencies and secrets in templates
Organize and modularize templates
Create Azure resources by using Azure CLI
Create Azure resources using Azure CLI
Understand and work with Azure CLI
Run templates using Azure CLI
Explains Azure CLI commands
Lab:
Run templates using Azure CLI
Explore Azure Automation with DevOps
Implement automation with Azure DevOps
Create and manage runbooks
Create webhooks
Create and run a workflow runbook and PowerShell workflows
Lab:
Create and run a workflow runbook
Implement Desired State Configuration (DSC)
Implement Desired State Configuration (DSC)
Describe Azure Automation State Configuration
Implement DSC and Linux Automation on Azure
Plan for hybrid management
Lab:
Import and compile
Lab:
Onboard machines for management
Implement Bicep
Learn what Bicep is
Learn how to install it and create a smooth authoring experience
Use Bicep to deploy resources to Azure
Deploy Bicep files in Cloud Shell and Visual Studio Code
Lab:
Create Bicep templates
Lab:
Deploy a Bicep file from Azure Pipelines
Lab:
Deploy a Bicep file from GitHub workflows
Introduction to Secure DevOps
Identify SQL injection attack
Understand DevSecOps
Implement pipeline security
Understand threat modeling
Implement open-source software
Implement open-source software
Explain corporate concerns for open-source components
Describe open-source licenses
Understand the license implications and ratings
Software Composition Analysis
Inspect and validate code bases for compliance
Integrate security tools like WhiteSource with Azure DevOps
Implement pipeline security validation
Interpret alerts from scanning tools
Configure GitHub Dependabot alerts and security
Static analyzers
Understand Static Analyzers
Work with SonarCloud
Work with CodeQL in GitHub
Interpret alerts from scanning tools
OWASP and Dynamic Analyzers
Understand OWASP and Dynamic Analyzers
Implement OWASP Security Coding Practices
Understand compliance for code bases
Security Monitoring and Governance
Configure Microsoft Defender for Cloud
Understand Azure policies
Describe initiatives, resource locks and Azure Blueprints
Work with Microsoft Defender for Identity
Explore package dependencies
Define dependency management strategy
Identify dependencies
Describe elements and componentization of a dependency management
Scan your codebase for dependencies
Understand package management
Implement package management
Manage package feed
Consume and create packages
Publish packages
Migrate consolidating and secure artifacts
Identify artifact repositories
Migrate and integrate artifact repositories
Secure package feeds
Understand roles, permissions, and authentication
Implement a versioning strategy
Implement a versioning strategy
Promote packages
Push packages from the pipeline
Describe semantics and explore best practices for versioning
Lab:
Promote a package
Lab:
Push from the pipeline
Introduction to GitHub Packages
Publish packages
Install packages
Delete and restore packages
Configure access control and visibility
Implement tools to track usage and flow
Implement tools to track feedback
Plan for continuous monitoring
Implement Application Insights
Use Kusto Query Language (KQL)
Lab:
Add Application Insights to an ASP.NET core application
Develop monitor and status dashboards
Configure Azure Dashboards
Work with View Designer in Azure Monitor
Create Azure Monitor Workbooks
Monitor with Power BI
Share knowledge within teams
Share knowledge with development teams
Work with Azure DevOps Wikis
Integrate with Azure Boards
Design processes to automate application analytics
Automate application analytics
Assist DevOps with rapid responses and augmented search
Integrate telemetry
Implement monitoring tools and technologies
Manage alerts, blameless retrospectives, and a just culture
Carry out blameless retrospectives and create a just culture
Improve application performance
Explain server response time degradation
Reduce meaningless and non-actionable alerts
Prerequisites Required
Both Azure administration and Azure development with proven expertise in at least one of these areas.
Cloud computing concepts, including an understanding of PaaS, SaaS, and IaaS implementations.
Version control, Agile software development, and core software development principles. It would be helpful to have experience in an organization that delivers software.
Audience Profile
Students in this course are interested in designing and implementing DevOps processes or in passing the Microsoft Azure DevOps Solutions certification exam.
Job role: DevOps Engineer Preparation for exam: AZ-400 Recommended
AZ-104T00: Microsoft Azure Administrator
AZ-204T00: Developing Solutions for Microsoft Azure
AZ-900T00: Microsoft Azure Fundamentals