A / B Testing in App Engine?

What would be the simplest implementation of an A / B testing system running on the App platform?

I am especially interested in the performance related to using Datastore for the back end (with looong query times) and database design.

+2


a source to share


5 answers


Take a look at Gae / Bingo , it's an A / B framework for App Engine inspired by A / Bingo .



More details here .

+5


a source


You can deploy two versions of your application:

appcfg.py update -V "A" mysiteA/
appcfg.py update -V "B" mysiteB/

      



And then create a third version that simply chooses whether to proxy the user to A.latest.mysite.appspot.com or B.latest.mysite.appspot.com.

+4


a source


It is currently usually available in SDK 1.6.3 as a traffic splitting feature: http://code.google.com/appengine/docs/adminconsole/trafficsplitting.html

+2


a source


Assuming you want to test different versions of your application, I would suggest using a simple bit of WSGI middleware. Create something that directs x% of users to one WSGI application and the rest to another, subject to any requirements - user ID, IP address, etc. This should be pretty simple to implement and you can dump whatever you want on top of it.

+1


a source


The A / B test requires showing Page A to some users and Page B to some other users.

App Engine has nothing to do with this. App Engine is a way to apply deployment , not a direct user across pages.

This is a web framework feature that you use to serve one page based on a user's cookie / session.

This can be done in a simple way as follows:

  • Get cookie
  • Find it in the data warehouse
  • Found? Use the same set of pages (A or B) for the last time
  • Not found? Choose A or B randomly, save the selection to the datastore along with the cookie
  • (maybe) Put selection in session for quick access

Then, in specific controllers / views based on the selected A or B, serve / redirect the user to page A or page B. Write the result (regardless of your result - sales, registrations, etc.) in the datastore.

This can be done for any web structure. You didn't even say which one you are using;)

-1


a source







All Articles