From fc3bdbe6c64b9ad869cc61e2212b165aeefc1b37 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Thu, 18 Apr 2024 09:03:24 +0000 Subject: [PATCH 1/4] docs: provide recommendation for strategies Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/concepts.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/concepts.md b/docs/concepts.md index 26cd7f5cef..b7a555d856 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -46,4 +46,30 @@ A Canary deployment exposes a subset of users to the new version of the applicat [![How Canary deployments work](concepts-assets/canary-deployments.png)](concepts-assets/canary-deployments.png) The picture above shows a canary with two stages (10% and 33% of traffic goes to new version) but this is just an example. With Argo Rollouts you can define the exact number of stages -and percentages of traffic according to your use case. \ No newline at end of file +and percentages of traffic according to your use case. + +## Which strategy to choose + +In general Blue/Green is the easier strategy to start with, but also the more limited. We recommend you start with Blue/Green deployments first and as you gain confidence for your metrics and applications switch to Canaries. + +You also need to examine if your application can handle canaries or not. + +* Blue/Green always works because only one application is active at a time. Not all applications can have different versions running in parallel at the same time (which is what canaries are doing) +* Blue/Green is simpler because it works WITHOUT a traffic manager. Not all people like service meshes, and not all people have an ingress that is supported by Argo Rollouts +* Blue/Green also works with services that use queues and databases (workers that fetch tasks) + +Here is a summary table for the two approaches. + +| | Blue/Green | Canary | +|--------------------------:|:-------------------------:|:--------------------------:| +| Ease of adoption | Low | High | +| Flexibility | Low | High | +| Needs traffic provider | No | Yes | +| Works with queue workers | Yes | No | +| Works with shared/locked resources | Yes | No | +| Traffic switch | All or nothing | Gradual percentage | +| Failure Blast Radius | Massive impact | Low impact | + +!!! note + It is possible to have canaries without a traffic provider. The routing will be coarse and based + on the number of active pods. A traffic provider will give you many more routing options. \ No newline at end of file From 36a2c1ab73fba2c0d6dd8298356d925f550a3bd7 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Thu, 18 Apr 2024 14:56:07 +0000 Subject: [PATCH 2/4] docs: traffic manager clarifications Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/concepts.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/concepts.md b/docs/concepts.md index b7a555d856..bb09a1b343 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -54,13 +54,15 @@ In general Blue/Green is the easier strategy to start with, but also the more li You also need to examine if your application can handle canaries or not. -* Blue/Green always works because only one application is active at a time. Not all applications can have different versions running in parallel at the same time (which is what canaries are doing) -* Blue/Green is simpler because it works WITHOUT a traffic manager. Not all people like service meshes, and not all people have an ingress that is supported by Argo Rollouts -* Blue/Green also works with services that use queues and databases (workers that fetch tasks) +* Blue/Green always works because only one application is active at a time. Not all applications can have different versions running in parallel at the same time (which is what canaries are doing). This can be a showstopper for adopting canary deployments especially for legacy applications. +* Blue/Green is simpler because you can get their full value WITHOUT a traffic manager. While canaries can also work without a traffic manager, most of their advanced features assume a fine-grained way to control traffic. If you don't have a traffic manager, then you can easily get the full value +of blue/green deployments but only the basic capabilities of canaries. +* Blue/Green also works with services that use queues and databases (workers that fetch tasks). Argo Rollouts doesn't control traffic flow for +connections it doesn't understand (i.e. binary/queue channels). Here is a summary table for the two approaches. -| | Blue/Green | Canary | +| | Blue/Green | Canary with Traffic manager | |--------------------------:|:-------------------------:|:--------------------------:| | Ease of adoption | Low | High | | Flexibility | Low | High | @@ -70,6 +72,4 @@ Here is a summary table for the two approaches. | Traffic switch | All or nothing | Gradual percentage | | Failure Blast Radius | Massive impact | Low impact | -!!! note - It is possible to have canaries without a traffic provider. The routing will be coarse and based - on the number of active pods. A traffic provider will give you many more routing options. \ No newline at end of file +Note that that traffic manager can be any compatible Service Mesh or Ingress Controller or Gateway API implementation (via a plugin). \ No newline at end of file From 9ca44e73321f72a627c6b865fa1f9f6d8208235c Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Thu, 18 Apr 2024 15:49:21 +0000 Subject: [PATCH 3/4] docs: explain canary with/out traffic manager Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/concepts.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/docs/concepts.md b/docs/concepts.md index bb09a1b343..72486f7970 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -62,14 +62,17 @@ connections it doesn't understand (i.e. binary/queue channels). Here is a summary table for the two approaches. -| | Blue/Green | Canary with Traffic manager | -|--------------------------:|:-------------------------:|:--------------------------:| -| Ease of adoption | Low | High | -| Flexibility | Low | High | -| Needs traffic provider | No | Yes | -| Works with queue workers | Yes | No | -| Works with shared/locked resources | Yes | No | -| Traffic switch | All or nothing | Gradual percentage | -| Failure Blast Radius | Massive impact | Low impact | +| | Blue/Green | Basic Canary | Canary with Traffic manager | +|--------------------------:|:-------------------------:|:--------------------------:| :-----------------------------:| +| Adoption Complexity | Low | Medium | High | +| Flexibility | Low | High | Maximum | +| Needs traffic provider | No | No | Yes | +| Works with queue workers | Yes | No | No | +| Works with shared/locked resources | Yes | No | No | +| Traffic switch | All or nothing | Gradual percentage | Gradual percentage | +| Traffic control | 0% or 100% | coarse grained | fine grained | +| Traffic depends on | deployment state | number of canary pods | Any split option is possible | +| Advanced routing scenarios | No | No | Yes | +| Failure Blast Radius | Massive impact | Low impact | Low impact | Note that that traffic manager can be any compatible Service Mesh or Ingress Controller or Gateway API implementation (via a plugin). \ No newline at end of file From a6d14d26bc5ba2b2d33db150afa424442cd1c505 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Thu, 18 Apr 2024 15:51:20 +0000 Subject: [PATCH 4/4] docs: add 3 columns on the comparison table Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/concepts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts.md b/docs/concepts.md index 72486f7970..af85d7b4e2 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -60,7 +60,7 @@ of blue/green deployments but only the basic capabilities of canaries. * Blue/Green also works with services that use queues and databases (workers that fetch tasks). Argo Rollouts doesn't control traffic flow for connections it doesn't understand (i.e. binary/queue channels). -Here is a summary table for the two approaches. +Here is a summary table for the possible approaches. | | Blue/Green | Basic Canary | Canary with Traffic manager | |--------------------------:|:-------------------------:|:--------------------------:| :-----------------------------:|