Skip to content
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

Closed
lemonhall opened this issue May 8, 2015 · 26 comments
Closed

[request] A/B testing + Canary releasing #210

lemonhall opened this issue May 8, 2015 · 26 comments
Labels
idea/new plugin [legacy] those issues belong to Kong Nation, since GitHub issues are reserved for bug reports.

Comments

@lemonhall
Copy link

nginx has build in split_user modules...

so .....

@thibaultcha thibaultcha changed the title A/B testing plugin.... [request] A/B testing plugin.... May 8, 2015
@thibaultcha
Copy link
Member

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?

@thibaultcha thibaultcha added the idea/new plugin [legacy] those issues belong to Kong Nation, since GitHub issues are reserved for bug reports. label May 8, 2015
@sonicaghi
Copy link
Member

@lemonhall can you pls describe in more details your use case?

@montanaflynn
Copy link

Never heard of this so I did some research into split_user module and I do think it's something which would make a good Kong plugin. Basically it allows for sending certain percentages of requests to different target URLs.

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.

@thibaultcha
Copy link
Member

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 May 8, 2015, at 9:17 PM, Montana Flynn notifications@github.com wrote:

Never heard of this so I did some research into split_user module and I do think it's something which would make a good Kong plugin. Basically it allows for sending certain percentages of requests to different target URLs.

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.


Reply to this email directly or view it on GitHub.

@montanaflynn
Copy link

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".

@sonicaghi
Copy link
Member

example:

screen shot 2015-06-26 at 4 13 06 pm

@sonicaghi sonicaghi changed the title [request] A/B testing plugin.... [request] A/B testing + Canary releasing Jun 26, 2015
@lucamaraschi
Copy link

👍

@sonicaghi
Copy link
Member

@petemounce
Copy link

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.

@tecnobrat
Copy link

I really wish I had this at my last job.... this is an awesome feature.

@thibaultcha
Copy link
Member

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.

@sonicaghi
Copy link
Member

maybe worth pinging @agentzh

@sonicaghi
Copy link
Member

@skippy
Copy link

skippy commented Oct 15, 2015

+1

@mtakaki
Copy link

mtakaki commented Dec 10, 2015

+1

I'd love to see this.

@tgirardi
Copy link

tgirardi commented Jan 7, 2016

+1 I would use it

@sonicaghi
Copy link
Member

@schellkenig
Copy link

+1

1 similar comment
@HenryChelsea
Copy link

+1

@billylaing
Copy link

This would be awesome.

@Tieske
Copy link
Member

Tieske commented Feb 13, 2017

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/

@coopr
Copy link
Contributor

coopr commented Mar 23, 2017

Is this issue satisfied by new documentation Kong/docs.konghq.com#351 - or is there still an open issue here?

@Tieske
Copy link
Member

Tieske commented Mar 24, 2017

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.

@p0pr0ck5
Copy link
Contributor

p0pr0ck5 commented Jul 3, 2017

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 p0pr0ck5 closed this as completed Jul 3, 2017
@sandy-adi
Copy link

@p0pr0ck5 is this available on the community edition or only as part of the enterprise edition? Just making sure

@coopr
Copy link
Contributor

coopr commented Mar 7, 2018

@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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
idea/new plugin [legacy] those issues belong to Kong Nation, since GitHub issues are reserved for bug reports.
Projects
None yet
Development

No branches or pull requests