-
Notifications
You must be signed in to change notification settings - Fork 864
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proxy can divert routes to support A/B testing, service rollout etc #126
Comments
@samsp-msft in your surveys have customers explained how they handle this today? And/or how they want to handle it? |
Triage: Design should be done in 1.0 - customers will ask for it. |
This could also come into play for rolling upgrades: #190 (comment)
Repeat until all nodes have been upgraded and moved. |
Note: Backed.PartitioningOptions seems to be related to this scenario, but it's not actually implemented anywhere. Implement or remove this option section. The same for quota and circuit breaker options. |
Notes from a partner discussion:
|
@johnazariah to your question from: #405 (comment) You could still use the headers to decide where requests get assigned, but it would be applied at a stage after routing and would be much more customizable. Affinity is a definite question, the best option is to have a stable selection algorithm like the headers. |
Ok I like what I'm hearing... 👍 |
Related: partitioning and shuffle sharding, great talk from AWS: https://www.youtube.com/watch?v=swQbA4zub20 |
E-Core3 is using IHttpProxy directly and does not need anything from us here. There is still general community interest so I'll do some prototyping and see what works. |
Triage: Moving to post-1.0 -- we need engaged customers who can validate the design / E2E. |
Here's a partial proposal for 1.1 that should let people build their own A/B features without us having to be too opinionated on their design: Routes would need a default cluster to get past this check: reverse-proxy/src/ReverseProxy/Model/ProxyPipelineInitializerMiddleware.cs Lines 34 to 41 in 5b20508
In middleware re-assign the cluster: reverse-proxy/src/ReverseProxy/Model/ProxyPipelineInitializerMiddleware.cs Lines 43 to 50 in 5b20508
We'd need a new service to get access to the clusters and routes.
|
Can everyone here please take a look at #1538. It doesn't fully implement A/B or related systems, but it does provide some of the raw components to unblock people building their own. |
For 2.0 let's consider how to address the most common subset of use cases with extensibility points. |
Triage: Needs Design flash out as next step. Collect requirements, make proposals, discuss them. |
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?
Initial theory:
The text was updated successfully, but these errors were encountered: