Developing for Enterprise DevOps
- Introduction to DevOps: transformation teams, shared goals, cycle times and validated learning; overview of Azure DevOps and GitHub
- Agile planning with GitHub Projects and Azure Boards, linking Azure Boards with GitHub
- Designing branch strategies and workflows, collaborating with pull requests and branch policies in Azure Repos
- Git hooks, inner source and fork workflows
- Managing repositories: large repositories, cleaning up data, releases in GitHub
- Identifying technical debt, using code quality tools and planning code reviews
Continuous Integration with Azure Pipelines and GitHub Actions
- Getting to know Azure Pipelines; Microsoft-hosted and self-hosted agents, agent pools and their security
- Parallel jobs and concurrency, the classic designer and YAML pipelines
- Pipeline strategy: agent requirements, multi-configuration builds, GitHub integration, test strategy and code coverage
- Structuring pipelines with templates, YAML resources and multiple repositories
- GitHub Actions: workflows, events, jobs and runners; continuous integration with environment variables, artifacts and secrets
- Container build strategy with Docker and Azure services
Designing and Implementing a Release Strategy
- Creating release pipelines: build and release tasks, artifact sources, approvals and release gates
- Provisioning target environments, configuring service connections, automated functional and availability tests
- Modularising tasks and templates: task groups, variable groups, custom build and release tasks
- Automating health checks: notifications in Azure DevOps and GitHub, service hooks, quality measurement
Secure Continuous Deployment with Azure Pipelines
- Deployment patterns: classic and modern approaches, microservices architectures
- Blue-green deployment and feature toggles
- Canary releases with Azure Traffic Manager and dark launching
- A/B testing, progressive exposure and ring-based deployment
- Integrating identities: GitHub SSO, workload identities in Microsoft Entra ID, service principals and managed identities
- Application configuration with Azure App Configuration, Azure Key Vault and feature flags
Infrastructure as Code with Azure and DSC
- Fundamentals of infrastructure as code and configuration management: imperative and declarative, idempotency
- Creating Azure resources with ARM templates: dependencies, modular templates, secrets from Azure Key Vault
- Creating Azure resources with the Azure CLI and Bash scripts
- Azure Automation with runbooks, webhooks and integration with source control
- Desired State Configuration (DSC): managing configuration drift, DSC for Linux, hybrid scenarios
- Using Bicep with Visual Studio Code, Azure CLI, Azure Pipelines and GitHub workflows
Implementing Security and Checking Codebases for Compliance
- Secure DevOps: DevSecOps principles, common vulnerabilities such as SQL injection, threat modelling, continuous security validation and analysis with GitHub CodeQL
- Open source software in the enterprise: security and licensing considerations, common licences such as MIT, Apache and GPL
- Software composition analysis: GitHub Dependabot, Mend, Snyk and OWASP Dependency-Check in Azure Pipelines, scanning container images
- Security monitoring and governance: Microsoft Defender for Cloud, Azure Policy, resource locks, Microsoft Defender for Identity and GitHub Advanced Security
Dependency Management Strategy
- Identifying package dependencies and breaking components down into packages
- Package management: feeds, public and self-hosted sources, using, creating and publishing packages with Azure Artifacts
- Migrating and consolidating artifacts, securing access to package feeds
- Versioning strategy: semantic versioning, views in Azure Artifacts, package promotion in CI/CD pipelines
- GitHub Packages: publishing and installing packages, controlling permissions and visibility
Continuous Feedback
- Tracking usage and flow with Azure Monitor, Log Analytics, Application Insights and Kusto Query Language (KQL)
- Monitoring and status dashboards with Azure Dashboards, Azure Monitor Workbooks and Power BI; monitoring and optimising pipeline health
- Sharing knowledge across the team: wikis in Azure DevOps, Markdown and Mermaid, integration with Microsoft Teams
- Automating application analytics with Application Insights
- Managing alerts, blameless retrospectives and just culture