Skip to content

Commit 65ba241

Browse files
committed
Line edits
1 parent 54eeafa commit 65ba241

File tree

8 files changed

+72
-63
lines changed

8 files changed

+72
-63
lines changed

learn-pr/azure-devops/manage-release-cadence/includes/1-introduction.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
In this learning path, you've been helping the Tailspin Toys team set up an automated release pipeline. The pipeline includes multiple stages, and both functional and nonfunctional tests.
22

3-
In this module, you help the team solve another problem, which is how to implement a deployment pattern to release to production in a way that's best for the company and their users. You'll help them evaluate the possibilities and then implement the one they choose.
3+
In this module, you help the team solve another problem, which is how to implement a deployment pattern to release to production in a way that's best for the company and their users. You'll help them evaluate the possibilities, and then implement the one they choose.
44

55
## Learning objectives
66

@@ -16,8 +16,8 @@ The modules in this learning path are part of a progression.
1616

1717
To follow the progression from the beginning, be sure to first complete these learning paths:
1818

19-
* [Get started with Azure DevOps](../../../paths/evolve-your-devops-practices/index.yml?azure-portal=true)
20-
* [Build applications with Azure DevOps](../../../paths/build-applications-with-azure-devops/index.yml?azure-portal=true)
19+
- [Get started with Azure DevOps](../../../paths/evolve-your-devops-practices/index.yml?azure-portal=true)
20+
- [Build applications with Azure DevOps](../../../paths/build-applications-with-azure-devops/index.yml?azure-portal=true)
2121

2222
We also recommend that you start at the beginning of this learning path, [Deploy applications with Azure DevOps](../../../paths/deploy-applications-with-azure-devops/index.yml?azure-portal=true).
2323

@@ -27,7 +27,7 @@ If you want to go through just this module, then you need to set up a developmen
2727
- An [Azure subscription](https://azure.microsoft.com/free/?azure-portal=true)
2828
- A [GitHub](https://github.com/join?azure-portal=true) account
2929
- [Visual Studio Code](https://code.visualstudio.com?azure-portal=true)
30-
- [.NET 6.0 SDK](https://dotnet.microsoft.com/download/dotnet/6.0?azure-portal=true)
30+
- [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)
3131
- [Git](https://git-scm.com/downloads?azure-portal=true)
3232

3333
You can get started with Azure and Azure DevOps for free. You don't need an Azure subscription to work with Azure DevOps, but here you'll use Azure DevOps to deploy to resources that exist in your Azure subscription.

learn-pr/azure-devops/manage-release-cadence/includes/2-what-are-deployment-patterns.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ I think the solution we need is a good deployment pattern. A deployment pattern
1616

1717
Picking the right pattern would definitely help you, like by minimizing downtime. Another advantage of a deployment pattern is that it gives us a chance to run tests that should really happen in production.
1818

19-
*Andy starts writing on the whiteboard.*
19+
_Andy starts writing on the whiteboard._
2020

2121
Here are the possibilities we should consider:
2222

@@ -31,7 +31,7 @@ Let's briefly discuss each pattern.
3131

3232
## Blue-green deployments
3333

34-
A _blue-green deployment_ reduces risk and downtime by running two identical environments. These environments are called *blue* and *green*. At any time, only one of the environments is live. A blue-green deployment typically involves a router or load balancer that helps control the flow of traffic.
34+
A _blue-green deployment_ reduces risk and downtime by running two identical environments. These environments are called _blue_ and _green_. At any time, only one of the environments is live. A blue-green deployment typically involves a router or load balancer that helps control the flow of traffic.
3535

3636
:::image type="content" source="../media/2-blue-green-deployment.png" alt-text="Diagram of a load balancer distributing traffic in a blue-green deployment.":::
3737

@@ -87,13 +87,13 @@ In a ring-based deployment, we deploy changes to risk-tolerant customers first.
8787

8888
## Implementing the blue-green deployment
8989

90-
*Andy looks at Tim.*
90+
_Andy looks at Tim._
9191

9292
**Andy:** That's a lot, I know. Do you want to take some time to think about it? Or you and I could ...
9393

9494
**Tim:** Blue-green.
9595

96-
*Everyone in the room laughs.*
96+
_Everyone in the room laughs._
9797

9898
**Mara:** Is that the coffee talking?
9999

@@ -105,28 +105,28 @@ So the question is, how do we implement a blue-green deployment in our pipeline?
105105

106106
## What are deployment slots?
107107

108-
**Andy:** Because we're using Azure App Service, we can take advantage of *deployment slots*. Deployment slots are running apps that have their own host names.
108+
**Andy:** Because we're using Azure App Service, we can take advantage of _deployment slots_. Deployment slots are running apps that have their own host names.
109109

110110
I know we're not yet ready to deploy the _Space Game_ website to production as part of the automated pipeline. But as a test, we can add a deployment slot to our **staging** environment.
111111

112-
Instead of setting up a load balancer or a router, we can just add a second slot to the App Service instance that we use in our existing _Staging_ environment. We can call the primary slot *blue* and the secondary slot *green*.
112+
Instead of setting up a load balancer or a router, we can just add a second slot to the App Service instance that we use in our existing _Staging_ environment. We can call the primary slot _blue_ and the secondary slot _green_.
113113

114114
:::image type="content" source="../media/2-zero-downtime-deployment.png" alt-text="Diagram of applications swapping IP addresses.":::
115115

116116
This way we can deploy new features without any downtime. We swap an application and its configuration between the two deployment slots. Basically we're swapping the IP addresses of the two slots.
117117

118-
**Tim:** I like that! You might call this variation of a blue-green deployment a *zero-downtime deployment*.
118+
**Tim:** I like that! You might call this variation of a blue-green deployment a _zero-downtime deployment_.
119119

120120
**Andy:** Great! Tim and I'll work on implementing this deployment pattern. We can all meet later to see the results.
121121

122122
## Recommendations for using feature flags
123123

124124
Feature flags were one of the release-cadence methods that the team considered. The team decided not to use feature flags, but many people have found them useful. This section provides more information about feature flags.
125125

126-
*Feature flags*, sometime called *feature toggles*, allow you to change how a system works without changing the code. These flags allow you to push new code into your central development branch and have the code deployed but not necessarily functional. The flags are commonly implemented as the value of variables that control conditional logic.
126+
_Feature flags_, sometime called _feature toggles_, allow you to change how a system works without changing the code. These flags allow you to push new code into your central development branch and have the code deployed but not necessarily functional. The flags are commonly implemented as the value of variables that control conditional logic.
127127

128128
Imagine that your team is working in the central development branch of a bank application. You decided to do all the work in the main branch to avoid messy merge operations later. But you face a problem. You're substantially changing the interest calculations, and people depend on that code every day. Worse, the changes will take you weeks to complete. You can't leave the main code broken for so long.
129129

130130
In this scenario, a feature flag might be a good solution. You can change the code so that users who don't have the feature flag set can keep using the original interest calculation code. Meanwhile, your team does have the feature flag set, so they can see the code that they're changing.
131131

132-
Another type of feature flag is a *release flag*. Imagine that after you complete the work on the interest calculation code, you want to try it out before you release it publicly. You have a group of users who are well positioned to deal with new code and any possible issues. You'll let them try the feature first. You change the configuration so that they also have the feature flag set and can test the new code. If problems happen, then you can quickly disable the flag.
132+
Another type of feature flag is a _release flag_. Imagine that after you complete the work on the interest calculation code, you want to try it out before you release it publicly. You have a group of users who are well positioned to deal with new code and any possible issues. You'll let them try the feature first. You change the configuration so that they also have the feature flag set and can test the new code. If problems happen, then you can quickly disable the flag.

0 commit comments

Comments
 (0)