AZ-900: Microsoft Azure Fundamentals
Module 1: Cloud Concepts
Cloud Models
- Public, Private, and Hybrid Cloud
- Compare Cloud Models
Cloud Benefits and Considerations
- Benefits of Cloud
- Cloud Consideration
Cloud Services
- IaaS, PaaS, SaaS
- Sharing responsibility
Module 2: Core Azure Services
Azure Architectural Components
- Regions and Availability Zones
- Subscriptions and Resource Groups
Core Azure Resources
- Compute
- Networking
- Storage
- Databases
Module 3: Core Solutions
Core Azure Solutions
- IoT to Azure Sphere
- Synapse Analytics to Databricks
- AI/ML
Azure Management Tools
- Portal, Powershell, CLI, and Others
- Advisor, Monitor, and Service Health
Module 4: Security
Azure Security Features
- Security Center and Resource Hygiene
- Key Vault, Sentinel, and Dedicated Hosts
Azure Network Security
- Defense in Depth
- Network Security Groups and Firewalls
- DDoS Protection
Module 5: Identity, Governance, Privacy, and Compliance
Azure Identity Services
- Authentication Verses Authorization
- Azure AD, MFA, SSO, and Conditional Access
Azure Governance Features
- RBAC
- Resource locks and Tags
- Policy, Blueprints, and CAF
Azure Privacy and Compliance
- Privacy statements and Online Services Terms
- Trust Center and Compliance Documentation
- Azure sovereign Regions
Module 6: Azure Pricing and Lifecycle
Methods of Managing Costs
- Factors Affecting Costs
- Options to Reduce and Control costs
- Azure Cost Management
Service Level Agreements and Lifecycles
- Azure Service Level Agreement (SLA)
- Factors Impacting SLAs
- Azure Product and Feature Lifecycle
AZ-204: Developing Solutions for Microsoft Azure
Module 1: Creating Azure App Service Web Apps
Azure App Service core concepts
- Azure shared responsibility model
- App Service
- Web Apps
- Key features of App Service Web Apps
- App Service plans
- Authentication and authorization
- Azure App Service Hybrid Connections
- Azure App Service Local Cache
- App Service environments (ASEs)
Creating an Azure App Service Web App
- Create and deploy a web app with Azure command-line interface (CLI)
- Creating a Web App with Azure PowerShell
- Creating an App Service plan with Azure PowerShell
- App Service on Linux
- Docker in App Service on Linux
- Web apps for Linux containers
Configuring and Monitoring App Service apps
- App Service settings
- Path mappings
- Updating app runtimes
- CORS
- OS and runtime patching
- Inbound and outbound IP addresses
Inbound and outbound IP addresses
- Autoscale
- Autoscale metrics
- Autoscale patterns
- Scale based on CPU
- Autoscale setting schema
- Autoscale concepts
Azure App Service staging environments
- Deployment slots
- Modern deployment workflow
- Auto swap
- Route traffic between slots
- Automate slot management - Azure PowerShell
- Automate slot management - Azure CLI
Lab: Building a web application on Azure platform as a service offerings
Module 2: Implement Azure Functions
Azure Functions overview
- Azure Functions
- Function integrations
- Azure Function (Java program – Function.java)
- Azure Function (Python script – __init__.py)
- Scale and hosting
- Azure Functions hosting
- Triggers
- Trigger types
- Input and Output Bindings
- Bindings
- Integrating with Azure Virtual Network
Developing Azure Functions
- Azure Functions in Visual Studio Code
- Function code
- Binding configuration
- Binding-based code
- Function folder structure
- Function App settings
Implement Durable Functions
- Durable Functions
- Durable Functions types
- Durable Function scenario – Chaining
- Durable Function scenario - Fan-out/fan-in
- Durable Function scenario - Async HTTP APIs
- Durable Function scenario – Monitoring
- Durable Function scenario - Human interaction
Lab: Implement task processing logic by using Azure Functions
Module 3: Develop solutions that use blob storage
Azure Blob storage core concepts
- Azure Storage overview
- Azure Blob storage
- Azure Blob storage resource hierarchy
- Blob types
- Block blobs
- Append blobs
- Page blobs
- Blob events
- Storage durability options
Managing the Azure Blob storage lifecycle
- Storage tiers
- Storage tier pricing
- Lifecycle management
Working with Azure Blob storage
- Managing blob properties and metadata
- Blob container properties
- Exclusive access for modifying a blob
- Lease Blob operation
Lab: Retrieving Azure Storage resources and metadata by using the Azure Storage SDK for .NET
Module 4: Develop solutions that use Cosmos DB storage
Azure Cosmos DB overview
- Azure Cosmos DB
- Core functionality
- Global Replication
- Consistency levels
- APIs
- Migrating from NoSQL
- Cosmos DB throughput
Azure Cosmos DB data structure
- Resource hierarchy
- Containers
- Partitioning
- Partitioning implementation
Create and update documents by using code
- Manage collections and documents
- Creating a CosmosClient instance by using .NET
- Accessing a database by using .NET
- Accessing a container by using .NET
- JavaScript and Azure Cosmos DB
- Stored procedures
- Bounded execution
- Transaction continuation
- Optimistic concurrency
Lab: Constructing a polyglot data solution
Module 5: Implement IaaS solutions
Provisioning VMs in Azure
- Azure virtual machine creation checklist
- Naming a VM
- VM pricing models
- VM storage options
- Managed and unmanaged disks
- Azure virtual machine creation and management
- Accessing an Azure VM by using PowerShell
- Capturing performance diagnostics for a VM
- Recovering a failed VM by using a rescue VM
- Sizing a VM
- VM configuration options
- VM categories
- Manage the availability of your Azure VMs
- High availability and disaster recovery
- Availability sets, Fault domains, Update domains
- Image in Azure Marketplace
- Image Uniform Resource Name (URN)
- Azure Shared Image Gallery
- VM Serial Console
Create and deploy Azure Resource Manager templates
- Azure Resource Manager overview
- Terminology
- Resource Manager template deployment
- Three-tier Azure Resource Manager template
- Nested Resource Manager template
- Create Resource Manager templates by using the Azure portal
Create container images for solutions
- Virtualization and containers
- Container Images
- Docker
- Retrieving a new container image from Docker Hub
- Creating a container image specification with a Dockerfile
- Building the container image
- Running the custom container image as a container
Publish a container image to Azure Container Registry
- Azure Container Registry (ACR)
- Docker containers and registries
- Container Registry SKUs
- Azure Container Registry Build (ACR Build)
- Building images in Container Registry
- Trigger ACR Build by using Azure CLI
Create and run container images in Azure Container Instances
- Azure Container Instances (ACI)
- Container groups
- Container Instances features
- Deploy a container to Container Instances
Lab: Deploying compute workloads by using images and containers
Module 6: Implement user authentication and authorization
Microsoft identity platform
- Identity as the control plane
- Azure Active Directory
- Azure AD evolution
- Microsoft identity platform
- Azure AD evolution
- Microsoft identity platform overview
- Objects in Azure AD
- Application registration
- Authentication endpoints
- Authorize access to web applications by using OAuth
- service-to-service calls using client credentials
- Common authentication flows
- Interactive authentication flow
- On-Behalf-Of authentication flow
- Client credentials authentication flow
- Device code authentication flow
- Certificate-based authentication
Microsoft Authentication Library (MSAL)
- Microsoft Authentication Library (MSAL)
- Creating an authentication context by using MSAL
- Acquiring a token interactively using MSAL
- Get user profile using MSAL
Microsoft Graph
- Microsoft 365 platform
- Microsoft Graph data and services
- Graph data
- Graph explorer
- Microsoft Graph SDK
- Microsoft Graph authentication SDK
- Creating an authentication provider
- Microsoft Graph SDK Fluent API
- Using Graph Service client
Authorizing data operations in Azure Storage
- Container permissions
- CORS support for the Azure Storage services
- Authorization
- Shared Access Signatures
- Establishing a stored access policy
- Shared Access Signatures (SASs)
- Valet key pattern by using Shared Access Signatures
- Stored access policies
- SAS token generation from a stored access policy
Lab: Authenticating to and querying Microsoft Graph by using MSAL and .NET SDKs
Module 7: Implement secure cloud solutions
Manage keys, secrets, and certificates by using the KeyVault API
- Azure Key Vault
- Key Vault concepts
- Key Vault authentication
- Key Vault secret types
- Create Key Vault secret by using Azure CLI
Implement Managed Identities for Azure resources
- Azure AD–managed identity
- Managed identities implementation
- System-assigned managed identity
- User-assigned managed identity
- Types of managed identities
- Managed identities use cases
- Configure managed identities for Web Apps by using Azure CLI
Secure app configuration data by using Azure App Configuration
- Azure App Configuration
- Keys and values
- Azure App Configuration
- Labels
- Feature Management
Lab: Access resource secrets more securely across services
Module 8: Implement API Management
API Management overview
- API Management (APIM)
- Terminology, Products
- Products and APIs
- APIs and operations
- Back-end and front-end APIs
Working with APIs in APIM
- API Management instance overview
- Manage using Git
- Service hierarchy
- Policies, Policy scopes
- Advanced policy scenarios
Configure authentication for APIs
- Subscriptions
- Client certificates
Lab: Creating a multi-tier solution by using services in Azure
Module 9: Develop event-based solutions
Azure Event Grid
- Event-driven architecture
- Azure Event Grid
- Sources and handlers
- Event Grid concepts
- Schema, Security, Filtering
- Authoring custom events
- Event domains
Azure Event Hubs
- Publishing events
- Partitions, Consumer groups, Capture
- Integration with Kafka
- Event Hubs and Apache Kafka mapping
- Security model
- Creating a namespace manager by using the root key
- Creating a SAS key
Lab: Publishing and subscribing to Event Grid events
Module 10: Develop message-based solutions
Azure Service Bus
- Comparing cloud messaging options
- Azure Service Bus
- Events vs. messaging services
- Queues
- Queue-based load leveling
- Topics and subscriptions
- Messages, payloads, and serialization
Azure Queue Storage
- Components
- Code examples
Lab: Asynchronously processing messages by using Azure Queue Storage
Module 11: Instrument solutions to support monitoring and logging
Overview of monitoring in Azure
- Azure Monitor
- Monitoring data platform
- Alerts
- Alerts workflow
- Alert state
- Application Insights
- Application Insights architecture
Configure instrumentation in an app or service
- Application Insights for webpages
- Application Insights for console applications
- Application Insights for desktop apps
- Application Insights platforms
- Other monitoring tools
Analyzing and troubleshooting apps
- What data does Azure Monitor collect?
- Data source
- Azure Monitor sources
- Application Insights overview
- Monitored metrics, Application Map
- Components
- View activity logs to audit actions on resources
- Auditing in Azure PowerShell
- Monitor the availability and responsiveness of a website
Implement code that handles transient faults
- Transient errors
- Handling transient errors
- Retrying after a transient error
- Detecting if an error is transient
Lab: Monitoring services that are deployed to Azure
Module 12: Integrate caching and content delivery within solutions
Azure Cache for Redis
- Redis
- Redis data types
- Redis operations
- Azure Cache for Redis
- Azure Cache for Redis usage
- Configuration
- Accessing a Redis cache from a client
Develop for storage on CDNs
- Content delivery networks (CDNs)
- Improving the client experience by using a CDN
- CDN uses
- Azure CDN, Azure CDN platform, and usage
- Manage Azure CDN profiles by using Azure CLI
- Cache expiration in Azure CDN
- Purging and preloading assets by using Azure CLI
Lab: Enhancing a web application by using the Azure Content Delivery Network
AZ-400: Designing and Implementing Microsoft DevOps Solutions
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