Traffic mirroring or shadowing is a feature that can be used to test new versions of a service with real traffic before rolling it out to the users with minimal risk or to monitor and audit traffic of existing services. Mirroring sends a copy of live traffic to a mirrored service.

Try it out! ­čöŚ︎

Using the Backyards CLI ­čöŚ︎

These examples work out of the box with the demo application packaged with Backyards. Change the service name and namespace to match your service.

First, we need to modify the existing routing rules on the movies service:

$ backyards routing route get backyards-demo/movies
Settings for backyards-demo/movies

Matches    Routes                Redirect  Timeout  Retry  Rewrite  Mirror To
port:8082  33% movies:8082 (v1)  -         -        -      -        -
           33% movies:8082 (v2)
           34% movies:8082 (v3)

$ backyards routing route set backyards-demo/movies -m port=8082 -d movies:8082:v1 -d movies:8082:v2 -w 50/50
INFO[0002] routing for backyards-demo/movies set successfully

Settings for backyards-demo/movies

Matches    Routes                Redirect  Timeout  Retry  Rewrite  Mirror To
port:8082  50% movies:8082 (v1)  -         -        -      -        -
           50% movies:8082 (v2)

We can now mimic a silent release of a new version of the movies service. Use the mirror set command to enable traffic mirroring for the movies (v3) service:

$ backyards routing mirror set backyards-demo/movies -m port=8082 --host movies --subset v3 --port 8082
INFO[0007] mirror configuration for http route port:8082 of backyards-demo/movies set successfully
Settings for backyards-demo/movies
Matches    Routes                Redirect  Timeout  Retry  Rewrite  Mirror To
port:8082  50% movies:8082 (v1)  -         -        -      -        movies:8082 (v3)
           50% movies:8082 (v2)

Tip 1: all CLI commands and switches have short names, check the CLI docs to get to know them.

Using the Backyards UI ­čöŚ︎

Mirroring can also be configured from the dashboard. Select the service on the Services or on the Topology view, and edit an existing or create a new rule on the traffic management tab:

Configure Traffic Management