Continuous Delivery Using Azure DevOps Services
Azure DevOps provides a set of cloud-hosted tools that software teams can use as an end-to-end solution to plan, develop, test, and deliver value in the form of working software. This two-day course provides students with the DevOps principles and related hands-on practices, using Azure DevOps Services, to work better as a team, scale their agility, share and integrate their work, and deliver working software continuously in order to enable faster delivery of value and receive early and valuable feedback.
Who should take this class?
This course is intended for experienced software development professionals who want to learn about DevOps in order to achieve Continuous Integration, Continuous Delivery, Continuous Deployment, Continuous Feedback, and Continuous Learning in a technical value stream as supported by Azure DevOps Services, Visual Studio, and Azure in order to continually deliver working software at scale.
Benefits
This course provide several learning objectives and benefits.
- Describe DevOps principles, benefits, and related practices
- Explain the Three Ways: flow, feedback, and learning
- Work as a team and increase flow in Azure DevOps
- Identify, minimize, and eliminate dependencies
- Plan work at scale: epics, features, user stories
- Use Azure Boards to plan and execute a Sprint
- Create, visualize, and follow a Definition of Done
- Report data via queries, charts, and widgets
- Use the Analytics service, dashboards, and widgets
- Explore Git version control primer and workflows
- Learn branching strategies and potential side effects
- Visualize and manage code dependencies
- Adopt an internal open source model
- Setup automated testing in Azure Pipelines
- Create and customize YAML-based pipelines
- Collect code coverage information
- Use Test Impact Analysis to improve performance
- Practice Continuous Integration (CI) and CI+
- Deploy code using Azure Pipelines
- Describe Infrastructure as Code (IaC)
- Deploy code to Microsoft Azure
- Practice Continuous Delivery (CD) and using triggers
- Use feature flags to manage feature availability
- Configure and use Application Insights for telemetry
- Use feature flags to support Hypothesis-Driven Development (HDD) and A/B testing
- Practice exploratory testing and take testing “tours”
- Use the Microsoft Test and Feedback extension
- Understand, identify, and avoid technical debt
- Use SonarCloud to inspect and visualize technical debt
- Build feedback directly into the product
- Build a culture of learning and improvement
- Track improvement through agile metrics
Outline
1: Increasing Flow at Scale
- The complexity of software development
- The need for empirical process control
- Increasing flow through a technical value stream
- Professional Scrum
- The Nexus scaled Scrum framework
- Practices for organizing teams
- Establishing feature teams to minimize dependencies
2: Planning and Executing at Scale
- Organizing and refining the Product Backlog
- Creating a definition of “ready”
- Dependencies, types, and related risks
- Cross-team refinement to identify dependencies
- Planning and executing a Sprint
- Limiting work in progress (WIP)
- Working in small batches
- Creating and obeying a Definition of Done
- Using queries, charts, and dashboards for reporting
3: Sharing Code
- Working collaboratively as a team
- Collective ownership mindset
- Git version control workflow (optional)
- Branching strategies and related side effects
- Using Code Maps to visualize code dependencies
- Using Package Management to share binaries
- Practicing internal open source (inner source)
4: Integrating Continuously
- Why and how to create fast feedback loops
- The importance of automated testing
- Unit testing in Visual Studio
- Automated builds in Azure Pipelines
- Creating and customizing YAML-based builds
- Infrastructure as Code (IaC)
- Running tests during an automated build
- Code coverage and regression testing
- Configuring and using Test Impact Analysis
- Practicing Continuous Integration (CI) and CI+
5: Delivering Continuously
- Azure Pipelines deployment
- Release definitions, stages, and releases
- Deployment targets, IaaS, PaaS, containers
- Using Microsoft Azure for DevOps
- Configuring service connections
- Automated deployment to an Azure App Service
- Release jobs, steps, and tasks
- Creating and deploying a release
- Release and stage triggers
- Practicing Continuous Delivery (CD)
6: Empowering the Product Owner
- Build-Measure-Learn explained
- Hypothesis-Driven Development (HDD)
- Customizing Azure DevOps to implement HDD
- Feature flags overview
- Using LaunchDarkly to manage feature flags
- Telemetry and application performance management
- Using Application Insights to gather telemetry
- A/B testing explained
- Using feature flags to support A/B testing
- Exploratory testing and taking testing “tours”
- Using the Microsoft Test and Feedback extension
- Understanding and identifying technical debt
- Using SonarCloud to gauge your technical debt
- Making technical debt transparent
- Practices for paying off technical debt
7: Learning and Improving Continuously
- Working and learning as a team
- Patterns of effective collaboration
- Pairing, swarming, and mobbing practices
- Building a culture of learning and improvement
- Blameless retrospectives
- Building feedback directly into the product
- Communities of Practice (COPs)
- Tracking improvement through agile metrics
- Using the wiki to build tribal knowledge
Required Prerequisites
Attendees should be familiar with software development, Visual Studio, and Scrum. Attendees should also have basic experience with Azure DevOps Services or Azure DevOps Server.
Useful Prerequisites
Understanding of C# and .NET development will be beneficial, but is not required.