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
[request] A/B testing + Canary releasing #210
Comments
I am not sure about the value of that for an API gateway? I don't think this is in the scope of this project, except if I am missing something maybe? |
@lemonhall can you pls describe in more details your use case? |
Never heard of this so I did some research into Here's some potential use cases: You have an existing service that you're rewriting. You think it's production ready but you want to verify that first by sending a small portion of traffic to it and monitor for any errors or performance issues. With a "split" plugin you could say to send x% of traffic to your new service and see how it does before switching all the traffic to it. There's another use case for A|B testing websites better described in this article which basically is just serving different HTML pages for an audience and setting some tracking header or file path to compare completed goals against later. |
Nice use case for the production ready API. For websites, which is the first case I thought about, it's outside of the scope of this project imho. We need to know if this is doable through the Lua API now.
|
On the other hand if I'm already doing this for my website and I want to use Kong for my API it would be nice to let Kong power my website as well. For instance apistatus.org has a single nginx file that serves the website, the API, and caches any images. I could see myself using a "split" plugin for A|B testing the website. I will agree that calling the plugin "A|B" doesn't make sense as it limits the potential use cases which is why I've been referring to it as "Split". |
👍 |
I would use this, so +1. I would also like the ability to send traffic to more than one endpoint and compare the responses, speeds, and sizes. Again, ready for production is the use case. Give traffic to a new version at the same time as current, and compare at a functional level and performance level whether new one is ready. |
I really wish I had this at my last job.... this is an awesome feature. |
On mobile currently but just pointing out that the issue here is that this would need to be reimplemented manually with bare Lua unless I am unaware of an already existing module handling this for openresty. |
maybe worth pinging @agentzh |
+1 |
+1 I'd love to see this. |
+1 I would use it |
another useful resource http://cloudnative.io/blog/2015/02/the-dos-and-donts-of-bluegreen-deployment/ |
+1 |
1 similar comment
+1 |
This would be awesome. |
A good write-up of A/B testing, Canary releases and BlueGreen deployments; http://blog.christianposta.com/deploy/blue-green-deployments-a-b-testing-and-canary-releases/ |
Is this issue satisfied by new documentation Kong/docs.konghq.com#351 - or is there still an open issue here? |
On the level where Kong operates A/B and Canary are pretty much the same thing. The ring-balancer can now be used to do canary, but only on generic load. Especially for A/B it would be good to have a selection criterion determining wether to go for A or B per request. eg. regex on a header, ip addresses, etc. |
These docs are merged and published! https://getkong.org/docs/0.10.x/loadbalancing/#blue-green-deployments Defining how the balanced can split requests is a separate scope of discussion from a generic a/b and canary implantation, which was made available in 0.10. |
@p0pr0ck5 is this available on the community edition or only as part of the enterprise edition? Just making sure |
@sandy-adi you'll see a Canary plugin for Kong Enterprise Edition on https://konghq.com/plugins/ Note that also we document how to perform Blue/Green deployments and Canary releases with Kong Community Edition here https://getkong.org/docs/latest/loadbalancing/#blue-green-deployments |
nginx has build in split_user modules...
so .....
The text was updated successfully, but these errors were encountered: