Detailed Course Outline
Challenges Challenge 1: Establish your plan In order to have a successful DevOps strategy, your team needs to have a plan. In this challenge, teams will learn about the basics of DevOps and foster an understanding of a team development model.
Learning objectives:
- Adopt a DevOps “mindset” in the team.
- The participants are asked to get to know themselves better, organize the team and define how and where they will handle work items.
Challenge 2: Setting up the Development Workflow In this challenge, teams will select tools to meet the planning objectives as it relates to continuous integration Learning objectives:
- The participants will learn the fundamentals of Planning and Continuous Integration using the tooling of their choice.
- They will be asked to demonstrate that they organized their work items and are able to associate work items with code changes.
- By utilizing Branch Protection teams can enforce code quality policies for incoming changes ensuring that each service has a code owner
- responsible for reviewing Pull requests before those changes are merged into the main code base.
Challenge 3: Implement Continuous Testing In this challenge, teams will improve the reliability of their code by introducing testing Learning objectives:
- Participants will learn to integrate unit tests into a build pipeline to provide rapid feedback and augment thorough code reviews designed to only accept changes into master when all tests pass.
- They will be asked to run unit tests automatically and integrate them in the pipeline they are building.
Challenge 4: Implement Continuous Deployment (CD) In this challenge, teams will focus on release management automation Learning objectives:
- The participants will learn the fundamentals of Release Management by automatically deploying an updated version of their application to an Azure App Service.
- They will be asked to demonstrate that they can perform an update to the application, link a work item with the associated code changes and reference the deployment of this feature with its corresponding work items.
- They will also be asked to demonstrate that the respective container images are only updated when changes are successfully merged into the master branch
Challenge 5: Implement a Blue/Green deployment strategy In this challenge, teams will learn how to perform a zero down time deployment using a Blue/Green deployment strategy Learning objectives:
- Building on the previous challenges, participants will learn how to implement a blue/green deployment strategy.
- They will be asked to articulate the blue/green logic and demonstrate its implementation for one of the APIs of the provided application, that they are able roll out code changes without causing application downtime.
Challenge 6: Implement a monitoring solution with alerting In this challenge, teams will learn about configuring a monitoring and alerting solution Learning objectives:
- The participants will learn how to close the DevOps loop by adding monitoring and alerting.
- They will be asked to demonstrate a view aggregating the monitoring of the application and infrastructure. They also will have to implement alerting in the case of application performance degradation. Alerts should also generate a work item in the team work tracking system.
Challenge 7: Integrating quality and security gates In this challenge, teams will learn how to enhance their testing strategy through integration with external tools focused on improving the quality of the software that is released into production. Learning objectives:
- The participants will be required to improve the automated testing capabilities of their pipelines to incorporate more sophisticated quality and security gates that integrate with external tools.
- They will also be required to demonstrate one or more of the following enhancements to their pipeline: Dependency scanning, Code coverage, Static analysis, Variant analysis, Integration tests, Load tests and Manual Approval prior to deployment.
Challenge 8: Implement phased rollout with rollback In this challenge, teams will learn how to enhance their Blue/Green Deployment strategy by performing a gradual release of software into production with a rollback strategy Learning objectives:
- The participants will revise their deployment strategy and learn how to perform a blue/green deployment with gradual rollout and how to implement a “rollback” mechanism.
- They will be asked to add several phases to their existing pipeline to support a gradual rollout/rollback of a new version of the application. They will be asked to implement gates to validate the behavior of the application and implement a rollback mechanism.