Proxy can divert routes to support A/B testing, service rollout etc
- Dominant language
- C#
- Stars
- 9.6k
- Forks
- 933
- Avg merge
- 12d 18h
- Merged PRs (30d)
- 2
Description
A/B testing is a common scenario for proxies, letting services incrementally upgrade/experiment using live traffic.
How does a service decide which requests to route to which test group?
- Assuming all requests are stateless you could decide this randomly on a per-request basis.
- For a stateful service you'd want to do a random assignment and then use affinization (https://github.com/microsoft/reverse-proxy/issues/45).
- A service may also decide to statically affinitize based on known groups like tenants (e.g. move small customers before big ones).
Initial theory:
- This is a separate feature from load balancing. Within a load balancing set we assume all servers are equally able to handle a request aside from considerations of health and load. You'd select a test group and then load balance within that group.
- This should take advantage of the routing layer. For something like tenant based affinity that information may already be part of the route definition.
- Alternatively we could put it into the route config (ProxyRoute), allowing it to specify multiple backends and an assignment strategy.
- This should be compatible with retry mechanisms to allow failing over to the other test group.
Contributor guide
Assessment
This issue has not been assessed yet.